From 49a5b949ca5c4e8933fa63356d48674c452b73bc Mon Sep 17 00:00:00 2001 From: Sean Rhodes Date: Thu, 29 Jan 2026 12:06:46 +0000 Subject: [PATCH] mb/starlabs/starbook: Add NVMe/WiFi power sequencing Provide staged GPIO pad configuration for the M.2 NVMe SSD and the (discrete) M.2 2230 wireless module on supported StarBook variants. Signed-off-by: Sean Rhodes Change-Id: I6b3b607e73a2b1c437349f31cc6faaf662365da7 Reviewed-on: https://review.coreboot.org/c/coreboot/+/90993 Tested-by: build bot (Jenkins) Reviewed-by: Matt DeVillier --- src/mainboard/starlabs/starbook/Kconfig | 1 + src/mainboard/starlabs/starbook/mainboard.c | 9 +-- .../starlabs/starbook/variants/adl/gpio.c | 58 +++++++++++++++++-- .../starlabs/starbook/variants/adl_n/gpio.c | 58 +++++++++++++++++-- .../starlabs/starbook/variants/mtl/gpio.c | 58 +++++++++++++++++-- .../starlabs/starbook/variants/rpl/gpio.c | 58 +++++++++++++++++-- .../starlabs/starbook/variants/tgl/gpio.c | 42 +++++++++++++- 7 files changed, 253 insertions(+), 31 deletions(-) diff --git a/src/mainboard/starlabs/starbook/Kconfig b/src/mainboard/starlabs/starbook/Kconfig index 7dee1e3ecf..bae92d0239 100644 --- a/src/mainboard/starlabs/starbook/Kconfig +++ b/src/mainboard/starlabs/starbook/Kconfig @@ -16,6 +16,7 @@ config BOARD_STARLABS_STARBOOK_SERIES select NO_UART_ON_SUPERIO select SPD_READ_BY_WORD select SOC_INTEL_COMMON_BLOCK_HDA_VERB + select STARLABS_NVME_POWER_SEQUENCE select SYSTEM_TYPE_LAPTOP select VALIDATE_INTEL_DESCRIPTOR diff --git a/src/mainboard/starlabs/starbook/mainboard.c b/src/mainboard/starlabs/starbook/mainboard.c index f392ed8759..8916dda296 100644 --- a/src/mainboard/starlabs/starbook/mainboard.c +++ b/src/mainboard/starlabs/starbook/mainboard.c @@ -1,12 +1,13 @@ /* SPDX-License-Identifier: GPL-2.0-only */ +#include #include #include #include #include #include -static void init_mainboard(void *chip_info) +static void starlabs_configure_gpios(void *unused) { const struct pad_config *pads; size_t num; @@ -15,9 +16,9 @@ static void init_mainboard(void *chip_info) gpio_configure_pads(pads, num); } -struct chip_operations mainboard_ops = { - .init = init_mainboard, -}; +BOOT_STATE_INIT_ENTRY(BS_PRE_DEVICE, BS_ON_ENTRY, starlabs_configure_gpios, NULL); + +struct chip_operations mainboard_ops = {}; const char *mainboard_vbt_filename(void) { diff --git a/src/mainboard/starlabs/starbook/variants/adl/gpio.c b/src/mainboard/starlabs/starbook/variants/adl/gpio.c index f2d33b6458..2bad34dc52 100644 --- a/src/mainboard/starlabs/starbook/variants/adl/gpio.c +++ b/src/mainboard/starlabs/starbook/variants/adl/gpio.c @@ -1,13 +1,57 @@ /* SPDX-License-Identifier: GPL-2.0-only */ #include +#include + +#if ENV_RAMSTAGE +/* clang-format off */ +static const struct pad_config nvme_pads[] = { + PAD_CFG_GPO(GPP_D16, 1, DEEP), /* Enable */ + PAD_CFG_NF(GPP_D6, NONE, DEEP, NF1), /* Clock Request 1 */ + PAD_CFG_GPO(GPP_H0, 0, PLTRST), /* Reset asserted */ + + PAD_CFG_GPO(GPP_E3, 1, DEEP), /* WiFi RF Kill */ + PAD_CFG_NF(GPP_D7, NONE, DEEP, NF1), /* Clock Request 2 */ + PAD_CFG_GPO(GPP_H2, 0, PLTRST), /* Reset asserted */ +}; + +static const struct pad_config post_nvme_pads[] = { + PAD_CFG_GPO(GPP_H0, 1, PLTRST), /* Reset deasserted */ + PAD_CFG_GPO(GPP_H2, 1, PLTRST), /* Reset deasserted */ +}; +/* clang-format on */ + +const struct pad_config *variant_nvme_power_sequence_pads(size_t *num) +{ + *num = ARRAY_SIZE(nvme_pads); + return nvme_pads; +} + +const struct pad_config *variant_nvme_power_sequence_post_pads(size_t *num) +{ + *num = ARRAY_SIZE(post_nvme_pads); + return post_nvme_pads; +} +#endif /* Early pad configuration in bootblock */ +/* clang-format off */ const struct pad_config early_gpio_table[] = { /* Debug Connector */ PAD_CFG_NF(GPP_H10, NONE, DEEP, NF2), /* RXD */ PAD_CFG_NF(GPP_H11, NONE, DEEP, NF2), /* TXD */ + + /* SSD */ + PAD_CFG_GPI(GPP_D6, NONE, DEEP), /* Clock Request 1 */ + PAD_CFG_GPO(GPP_H0, 0, PLTRST), /* Reset asserted */ + PAD_CFG_GPO(GPP_D16, 0, DEEP), /* Enable (PWREN off) */ + + /* Wireless */ + PAD_CFG_GPI(GPP_D7, NONE, DEEP), /* Clock Request 2 */ + PAD_CFG_GPO(GPP_H2, 0, PLTRST), /* Reset asserted */ + PAD_CFG_GPO(GPP_E3, 0, DEEP), /* WiFi disabled */ }; +/* clang-format on */ const struct pad_config *variant_early_gpio_table(size_t *num) { @@ -16,6 +60,7 @@ const struct pad_config *variant_early_gpio_table(size_t *num) } /* Pad configuration in ramstage. */ +/* clang-format off */ const struct pad_config gpio_table[] = { /* General Purpose I/O Deep */ PAD_CFG_NF(GPD0, NONE, DEEP, NF1), /* Battery Low */ @@ -40,16 +85,16 @@ const struct pad_config gpio_table[] = { PAD_CFG_GPI_APIC_LOW(GPP_E12, NONE, PLTRST), /* Interrupt */ /* SSD */ - PAD_CFG_NF(GPP_D6, NONE, DEEP, NF1), /* Clock Request 1 */ - PAD_CFG_GPO(GPP_H0, 1, PLTRST), /* Reset */ - PAD_CFG_GPO(GPP_D16, 1, DEEP), /* Enable */ + PAD_NC(GPP_D6, NONE), /* Clock Request 1 */ + PAD_CFG_GPO(GPP_H0, 0, PLTRST), /* Reset asserted */ + PAD_CFG_GPO(GPP_D16, 0, DEEP), /* Enable (PWREN off) */ PAD_CFG_NF(GPP_H13, NONE, DEEP, NF5), /* Device Sleep */ PAD_CFG_NF(GPP_A12, NONE, DEEP, NF1), /* PEDET */ /* Wireless */ - PAD_CFG_NF(GPP_D7, NONE, DEEP, NF1), /* Clock Request 2 */ - PAD_CFG_GPO(GPP_H2, 1, PLTRST), /* Reset */ - PAD_CFG_GPO(GPP_E3, 1, DEEP), /* WiFi RF Kill */ + PAD_NC(GPP_D7, NONE), /* Clock Request 2 */ + PAD_CFG_GPO(GPP_H2, 0, PLTRST), /* Reset asserted */ + PAD_CFG_GPO(GPP_E3, 0, DEEP), /* WiFi disabled */ PAD_CFG_GPO(GPP_A13, 1, DEEP), /* Bluetooth RF Kill */ /* Display */ @@ -261,6 +306,7 @@ const struct pad_config gpio_table[] = { PAD_NC(GPP_R6, NONE), PAD_NC(GPP_R7, NONE), }; +/* clang-format on */ const struct pad_config *variant_gpio_table(size_t *num) { diff --git a/src/mainboard/starlabs/starbook/variants/adl_n/gpio.c b/src/mainboard/starlabs/starbook/variants/adl_n/gpio.c index fc44208bac..3a8afd2b4d 100644 --- a/src/mainboard/starlabs/starbook/variants/adl_n/gpio.c +++ b/src/mainboard/starlabs/starbook/variants/adl_n/gpio.c @@ -1,13 +1,57 @@ /* SPDX-License-Identifier: GPL-2.0-only */ #include +#include + +#if ENV_RAMSTAGE +/* clang-format off */ +static const struct pad_config nvme_pads[] = { + PAD_CFG_GPO(GPP_D16, 1, DEEP), /* Enable */ + PAD_CFG_NF(GPP_D5, NONE, DEEP, NF1), /* Clock Request 0 */ + PAD_CFG_GPO(GPP_H0, 0, PLTRST), /* Reset asserted */ + + PAD_CFG_GPO(GPP_E3, 1, DEEP), /* WiFi RF Kill */ + PAD_CFG_NF(GPP_D6, NONE, DEEP, NF1), /* Clock Request 1 */ + PAD_CFG_GPO(GPP_H2, 0, PLTRST), /* Reset asserted */ +}; + +static const struct pad_config post_nvme_pads[] = { + PAD_CFG_GPO(GPP_H0, 1, PLTRST), /* Reset deasserted */ + PAD_CFG_GPO(GPP_H2, 1, PLTRST), /* Reset deasserted */ +}; +/* clang-format on */ + +const struct pad_config *variant_nvme_power_sequence_pads(size_t *num) +{ + *num = ARRAY_SIZE(nvme_pads); + return nvme_pads; +} + +const struct pad_config *variant_nvme_power_sequence_post_pads(size_t *num) +{ + *num = ARRAY_SIZE(post_nvme_pads); + return post_nvme_pads; +} +#endif /* Early pad configuration in bootblock */ +/* clang-format off */ const struct pad_config early_gpio_table[] = { /* Debug Connector */ PAD_CFG_NF(GPP_H10, NONE, DEEP, NF2), /* RXD */ PAD_CFG_NF(GPP_H11, NONE, DEEP, NF2), /* TXD */ + + /* SSD */ + PAD_CFG_GPI(GPP_D5, NONE, DEEP), /* Clock Request 0 */ + PAD_CFG_GPO(GPP_H0, 0, PLTRST), /* Reset asserted */ + PAD_CFG_GPO(GPP_D16, 0, DEEP), /* Enable (PWREN off) */ + + /* Wireless */ + PAD_CFG_GPI(GPP_D6, NONE, DEEP), /* Clock Request 1 */ + PAD_CFG_GPO(GPP_H2, 0, PLTRST), /* Reset asserted */ + PAD_CFG_GPO(GPP_E3, 0, DEEP), /* WiFi disabled */ }; +/* clang-format on */ const struct pad_config *variant_early_gpio_table(size_t *num) { @@ -16,6 +60,7 @@ const struct pad_config *variant_early_gpio_table(size_t *num) } /* Pad configuration in ramstage. */ +/* clang-format off */ const struct pad_config gpio_table[] = { /* General Purpose I/O Deep */ PAD_CFG_NF(GPD0, NONE, DEEP, NF1), /* Battery Low */ @@ -40,14 +85,14 @@ const struct pad_config gpio_table[] = { PAD_CFG_GPI_APIC_LOW(GPP_E12, NONE, PLTRST), /* Interrupt */ /* SSD */ - PAD_CFG_NF(GPP_D5, NONE, DEEP, NF1), /* Clock Request 0 */ - PAD_CFG_GPO(GPP_H0, 1, PLTRST), /* Reset */ - PAD_CFG_GPO(GPP_D16, 1, DEEP), /* Enable */ + PAD_NC(GPP_D5, NONE), /* Clock Request 0 */ + PAD_CFG_GPO(GPP_H0, 0, PLTRST), /* Reset asserted */ + PAD_CFG_GPO(GPP_D16, 0, DEEP), /* Enable (PWREN off) */ /* Wireless */ - PAD_CFG_NF(GPP_D6, NONE, DEEP, NF1), /* Clock Request 1 */ - PAD_CFG_GPO(GPP_H2, 1, PLTRST), /* Reset */ - PAD_CFG_GPO(GPP_E3, 1, DEEP), /* WiFi RF Kill */ + PAD_NC(GPP_D6, NONE), /* Clock Request 1 */ + PAD_CFG_GPO(GPP_H2, 0, PLTRST), /* Reset asserted */ + PAD_CFG_GPO(GPP_E3, 0, DEEP), /* WiFi disabled */ PAD_CFG_GPO(GPP_A13, 1, DEEP), /* Bluetooth RF Kill */ /* Display */ @@ -258,6 +303,7 @@ const struct pad_config gpio_table[] = { PAD_NC(GPP_R6, NONE), PAD_NC(GPP_R7, NONE), }; +/* clang-format on */ const struct pad_config *variant_gpio_table(size_t *num) { diff --git a/src/mainboard/starlabs/starbook/variants/mtl/gpio.c b/src/mainboard/starlabs/starbook/variants/mtl/gpio.c index 944c1452f8..72c5d637a3 100644 --- a/src/mainboard/starlabs/starbook/variants/mtl/gpio.c +++ b/src/mainboard/starlabs/starbook/variants/mtl/gpio.c @@ -1,8 +1,41 @@ /* SPDX-License-Identifier: GPL-2.0-only */ #include +#include + +#if ENV_RAMSTAGE +/* clang-format off */ +static const struct pad_config nvme_pads[] = { + PAD_CFG_GPO(GPP_H07, 1, DEEP), /* Enable */ + PAD_CFG_NF_IOSTANDBY_IGNORE(GPP_D20, NONE, PLTRST, NF1), /* Clock Request 8 */ + PAD_CFG_GPO(GPP_A20, 0, PLTRST), /* Reset asserted */ + + PAD_CFG_GPO(GPP_B19, 1, DEEP), /* WiFi RF Kill */ + PAD_CFG_NF_IOSTANDBY_IGNORE(GPP_D21, NONE, PLTRST, NF2), /* Clock Request 5 */ + PAD_CFG_GPO(GPP_H02, 0, PLTRST), /* Reset asserted */ +}; + +static const struct pad_config post_nvme_pads[] = { + PAD_CFG_GPO(GPP_A20, 1, PLTRST), /* Reset deasserted */ + PAD_CFG_GPO(GPP_H02, 1, PLTRST), /* Reset deasserted */ +}; +/* clang-format on */ + +const struct pad_config *variant_nvme_power_sequence_pads(size_t *num) +{ + *num = ARRAY_SIZE(nvme_pads); + return nvme_pads; +} + +const struct pad_config *variant_nvme_power_sequence_post_pads(size_t *num) +{ + *num = ARRAY_SIZE(post_nvme_pads); + return post_nvme_pads; +} +#endif /* Early pad configuration in bootblock */ +/* clang-format off */ const struct pad_config early_gpio_table[] = { /* Debug Connector */ PAD_CFG_NF(GPP_H08, NONE, DEEP, NF1), /* RXD */ @@ -11,7 +44,18 @@ const struct pad_config early_gpio_table[] = { /* SMBus */ PAD_CFG_NF(GPP_C00, NONE, DEEP, NF1), /* Clock */ PAD_CFG_NF(GPP_C01, NONE, DEEP, NF1), /* Data */ + + /* SSD */ + PAD_CFG_GPI(GPP_D20, NONE, PLTRST), /* Clock Request 8 */ + PAD_CFG_GPO(GPP_A20, 0, PLTRST), /* Reset asserted */ + PAD_CFG_GPO(GPP_H07, 0, DEEP), /* Enable (PWREN off) */ + + /* Wireless */ + PAD_CFG_GPI(GPP_D21, NONE, PLTRST), /* Clock Request 5 */ + PAD_CFG_GPO(GPP_H02, 0, PLTRST), /* Reset asserted */ + PAD_CFG_GPO(GPP_B19, 0, DEEP), /* WiFi disabled */ }; +/* clang-format on */ const struct pad_config *variant_early_gpio_table(size_t *num) { @@ -20,6 +64,7 @@ const struct pad_config *variant_early_gpio_table(size_t *num) } /* Pad configuration in ramstage. */ +/* clang-format off */ const struct pad_config gpio_table[] = { /* General Purpose I/O Deep */ PAD_CFG_NF_IOSTANDBY_IGNORE(GPP_V00, NONE, DEEP, NF1), /* Battery Low */ @@ -44,14 +89,14 @@ const struct pad_config gpio_table[] = { PAD_CFG_GPI_APIC(GPP_B00, NONE, DEEP, LEVEL, INVERT), /* Interrupt */ /* SSD */ - PAD_CFG_NF_IOSTANDBY_IGNORE(GPP_D20, NONE, PLTRST, NF1), /* Clock Request 8 */ - PAD_CFG_GPO(GPP_A20, 1, PLTRST), /* Reset */ - PAD_CFG_GPO(GPP_H07, 1, DEEP), /* Enable */ + PAD_NC(GPP_D20, NONE), /* Clock Request 8 */ + PAD_CFG_GPO(GPP_A20, 0, PLTRST), /* Reset asserted */ + PAD_CFG_GPO(GPP_H07, 0, DEEP), /* Enable (PWREN off) */ /* Wireless */ - PAD_CFG_NF_IOSTANDBY_IGNORE(GPP_D21, NONE, PLTRST, NF2), /* Clock Request 5 */ - PAD_CFG_GPO(GPP_H02, 1, PLTRST), /* Reset */ - PAD_CFG_GPO(GPP_B19, 1, DEEP), /* WiFi RF Kill */ + PAD_NC(GPP_D21, NONE), /* Clock Request 5 */ + PAD_CFG_GPO(GPP_H02, 0, PLTRST), /* Reset asserted */ + PAD_CFG_GPO(GPP_B19, 0, DEEP), /* WiFi disabled */ PAD_CFG_GPO(GPP_B18, 1, DEEP), /* Bluetooth RF Kill */ /* Display */ @@ -246,6 +291,7 @@ const struct pad_config gpio_table[] = { PAD_NC(GPP_D22, NONE), PAD_NC(GPP_D23, NONE), }; +/* clang-format on */ const struct pad_config *variant_gpio_table(size_t *num) { diff --git a/src/mainboard/starlabs/starbook/variants/rpl/gpio.c b/src/mainboard/starlabs/starbook/variants/rpl/gpio.c index 0625675f10..339e771544 100644 --- a/src/mainboard/starlabs/starbook/variants/rpl/gpio.c +++ b/src/mainboard/starlabs/starbook/variants/rpl/gpio.c @@ -1,13 +1,57 @@ /* SPDX-License-Identifier: GPL-2.0-only */ #include +#include + +#if ENV_RAMSTAGE +/* clang-format off */ +static const struct pad_config nvme_pads[] = { + PAD_CFG_GPO(GPP_D14, 1, DEEP), /* Enable */ + PAD_CFG_NF(GPP_H19, NONE, DEEP, NF1), /* Clock Request 4 */ + PAD_CFG_GPO(GPP_F20, 0, PLTRST), /* Reset asserted */ + + PAD_CFG_GPO(GPP_E3, 1, DEEP), /* WiFi RF Kill */ + PAD_CFG_NF(GPP_D7, NONE, DEEP, NF1), /* Clock Request 2 */ + PAD_CFG_GPO(GPP_H2, 0, PLTRST), /* Reset asserted */ +}; + +static const struct pad_config post_nvme_pads[] = { + PAD_CFG_GPO(GPP_F20, 1, PLTRST), /* Reset deasserted */ + PAD_CFG_GPO(GPP_H2, 1, PLTRST), /* Reset deasserted */ +}; +/* clang-format on */ + +const struct pad_config *variant_nvme_power_sequence_pads(size_t *num) +{ + *num = ARRAY_SIZE(nvme_pads); + return nvme_pads; +} + +const struct pad_config *variant_nvme_power_sequence_post_pads(size_t *num) +{ + *num = ARRAY_SIZE(post_nvme_pads); + return post_nvme_pads; +} +#endif /* Early pad configuration in bootblock */ +/* clang-format off */ const struct pad_config early_gpio_table[] = { /* Debug Connector */ PAD_CFG_NF(GPP_H10, NONE, DEEP, NF2), /* RXD */ PAD_CFG_NF(GPP_H11, NONE, DEEP, NF2), /* TXD */ + + /* SSD */ + PAD_CFG_GPI(GPP_H19, NONE, DEEP), /* Clock Request 4 */ + PAD_CFG_GPO(GPP_F20, 0, PLTRST), /* Reset asserted */ + PAD_CFG_GPO(GPP_D14, 0, DEEP), /* Enable (PWREN off) */ + + /* Wireless */ + PAD_CFG_GPI(GPP_D7, NONE, DEEP), /* Clock Request 2 */ + PAD_CFG_GPO(GPP_H2, 0, PLTRST), /* Reset asserted */ + PAD_CFG_GPO(GPP_E3, 0, DEEP), /* WiFi disabled */ }; +/* clang-format on */ const struct pad_config *variant_early_gpio_table(size_t *num) { @@ -16,6 +60,7 @@ const struct pad_config *variant_early_gpio_table(size_t *num) } /* Pad configuration in ramstage. */ +/* clang-format off */ const struct pad_config gpio_table[] = { /* General Purpose I/O Deep */ PAD_CFG_NF(GPD0, NONE, DEEP, NF1), /* Battery Low */ @@ -40,14 +85,14 @@ const struct pad_config gpio_table[] = { PAD_CFG_GPI_APIC_LOW(GPP_E12, NONE, PLTRST), /* Interrupt */ /* SSD */ - PAD_CFG_NF(GPP_H19, NONE, DEEP, NF1), /* Clock Request 4 */ - PAD_CFG_GPO(GPP_F20, 1, PLTRST), /* Reset */ - PAD_CFG_GPO(GPP_D14, 1, DEEP), /* Enable */ + PAD_NC(GPP_H19, NONE), /* Clock Request 4 */ + PAD_CFG_GPO(GPP_F20, 0, PLTRST), /* Reset asserted */ + PAD_CFG_GPO(GPP_D14, 0, DEEP), /* Enable (PWREN off) */ /* Wireless */ - PAD_CFG_NF(GPP_D7, NONE, DEEP, NF1), /* Clock Request 2 */ - PAD_CFG_GPO(GPP_H2, 1, PLTRST), /* Reset */ - PAD_CFG_GPO(GPP_E3, 1, DEEP), /* WiFi RF Kill */ + PAD_NC(GPP_D7, NONE), /* Clock Request 2 */ + PAD_CFG_GPO(GPP_H2, 0, PLTRST), /* Reset asserted */ + PAD_CFG_GPO(GPP_E3, 0, DEEP), /* WiFi disabled */ PAD_CFG_GPO(GPP_A13, 1, DEEP), /* Bluetooth RF Kill */ /* Display */ @@ -260,6 +305,7 @@ const struct pad_config gpio_table[] = { PAD_NC(GPP_R6, NONE), PAD_NC(GPP_R7, NONE), }; +/* clang-format on */ const struct pad_config *variant_gpio_table(size_t *num) { diff --git a/src/mainboard/starlabs/starbook/variants/tgl/gpio.c b/src/mainboard/starlabs/starbook/variants/tgl/gpio.c index 0bf5afba78..58fc4b4664 100644 --- a/src/mainboard/starlabs/starbook/variants/tgl/gpio.c +++ b/src/mainboard/starlabs/starbook/variants/tgl/gpio.c @@ -1,13 +1,47 @@ /* SPDX-License-Identifier: GPL-2.0-only */ #include +#include + +#if ENV_RAMSTAGE +/* clang-format off */ +static const struct pad_config nvme_pads[] = { + PAD_CFG_GPO(GPP_D16, 1, PLTRST), /* Enable */ + PAD_CFG_NF(GPP_D8, NONE, DEEP, NF1), /* Clock Request 3 */ + PAD_CFG_GPO(GPP_A11, 0, PLTRST), /* Reset asserted */ +}; + +static const struct pad_config post_nvme_pads[] = { + PAD_CFG_GPO(GPP_A11, 1, PLTRST), /* Reset deasserted */ +}; +/* clang-format on */ + +const struct pad_config *variant_nvme_power_sequence_pads(size_t *num) +{ + *num = ARRAY_SIZE(nvme_pads); + return nvme_pads; +} + +const struct pad_config *variant_nvme_power_sequence_post_pads(size_t *num) +{ + *num = ARRAY_SIZE(post_nvme_pads); + return post_nvme_pads; +} +#endif /* Early pad configuration in bootblock */ +/* clang-format off */ const struct pad_config early_gpio_table[] = { /* Debug Connector */ PAD_CFG_NF(GPP_C20, NONE, DEEP, NF1), /* RXD */ PAD_CFG_NF(GPP_C21, NONE, DEEP, NF1), /* TXD */ + + /* SSD */ + PAD_CFG_GPI(GPP_D8, NONE, DEEP), /* Clock Request 3 */ + PAD_CFG_GPO(GPP_A11, 0, PLTRST), /* Reset asserted */ + PAD_CFG_GPO(GPP_D16, 0, PLTRST), /* Enable (PWREN off) */ }; +/* clang-format on */ const struct pad_config *variant_early_gpio_table(size_t *num) { @@ -16,6 +50,7 @@ const struct pad_config *variant_early_gpio_table(size_t *num) } /* Pad configuration in ramstage. */ +/* clang-format off */ const struct pad_config gpio_table[] = { /* General Purpose I/O Deep */ PAD_CFG_NF(GPD0, NONE, DEEP, NF1), /* Battery Low */ @@ -40,9 +75,9 @@ const struct pad_config gpio_table[] = { PAD_CFG_GPI_APIC(GPP_C8, NONE, DEEP, LEVEL, INVERT), /* Interrupt */ /* SSD */ - PAD_CFG_NF(GPP_D8, NONE, DEEP, NF1), /* Clock Request 3 */ - PAD_CFG_GPO(GPP_A11, 1, PLTRST), /* Reset */ - PAD_CFG_GPO(GPP_D16, 1, PLTRST), /* Enable */ + PAD_NC(GPP_D8, NONE), /* Clock Request 3 */ + PAD_CFG_GPO(GPP_A11, 0, PLTRST), /* Reset asserted */ + PAD_CFG_GPO(GPP_D16, 0, PLTRST), /* Enable (PWREN off) */ /* SATA */ PAD_CFG_NF(GPP_A12, UP_20K, DEEP, NF1), /* PEDET */ @@ -250,6 +285,7 @@ const struct pad_config gpio_table[] = { PAD_NC(GPP_U4, NONE), PAD_NC(GPP_U5, NONE), }; +/* clang-format on */ const struct pad_config *variant_gpio_table(size_t *num) {