From aa0e4205d657d9468b933599e091523c21bbde12 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 15 Dec 2025 14:04:21 +0000 Subject: re-base the T480 thunderbolt patch i noticed that the enablement patch came first, before the actual driver. while this functioned overall, it was obviously flawed in terms of the resulting git history. the person who sent the patch previously had 0046- on both patch names, which meant that alphabetical sorting caused the enablement patch to be applied before the driver patch. furthermore: it seems that the submitted had manually re-applied the same Kconfig changes in the enablement patch, adding their own name - since Kconfig is not copyrightable anyway, in this specific example, or otherwise trivial, it's probably fine, but the original author on the gerrit patch is actually Matt DeVillier: https://review.coreboot.org/c/coreboot/+/88490 I have therefore simply re-based by checking out Matt's patch, on patchset 1. However, patchset 1 of Matt's patch uses patch set 16 of: https://review.coreboot.org/c/coreboot/+/75286 HustlerOne's lbmk merge uses patchset 18: https://review.coreboot.org/c/coreboot/+/75286/18 The differences between the two can be observed, thus: https://review.coreboot.org/c/coreboot/+/75286/16..18 It should be clarified that these patches are not upstreamed yet, but under heavy review on gerrit. However, testing has revealed that the patch is mostly stable. Signed-off-by: Leah Rowe --- .../patches/0046-T480-s-enable-TBT-support.patch | 86 -------------- ...ntel-dtbt-Add-discrete-Thunderbolt-driver.patch | 6 +- .../0047-mb-lenovo-t480-s-Enable-TBT-support.patch | 123 +++++++++++++++++++++ 3 files changed, 126 insertions(+), 89 deletions(-) delete mode 100644 config/coreboot/default/patches/0046-T480-s-enable-TBT-support.patch create mode 100644 config/coreboot/default/patches/0047-mb-lenovo-t480-s-Enable-TBT-support.patch (limited to 'config/coreboot/default/patches') diff --git a/config/coreboot/default/patches/0046-T480-s-enable-TBT-support.patch b/config/coreboot/default/patches/0046-T480-s-enable-TBT-support.patch deleted file mode 100644 index 1ef2c0dc..00000000 --- a/config/coreboot/default/patches/0046-T480-s-enable-TBT-support.patch +++ /dev/null @@ -1,86 +0,0 @@ -From ff76bba5543e580afac719ba6d55cea4b89b2364 Mon Sep 17 00:00:00 2001 -From: Hustler One -Date: Wed, 10 Dec 2025 12:01:32 +0100 -Subject: [PATCH 1/2] T480(s): enable TBT support - -https://review.coreboot.org/c/coreboot/+/88490 ---- - src/mainboard/lenovo/sklkbl_thinkpad/Kconfig | 2 ++ - src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gpio.c | 8 ++++---- - .../lenovo/sklkbl_thinkpad/variants/t480s/gpio.c | 8 ++++---- - 3 files changed, 10 insertions(+), 8 deletions(-) - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/Kconfig b/src/mainboard/lenovo/sklkbl_thinkpad/Kconfig -index 6036ceb06d..e6fb950d66 100644 ---- a/src/mainboard/lenovo/sklkbl_thinkpad/Kconfig -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/Kconfig -@@ -26,12 +26,14 @@ config BOARD_LENOVO_SKLKBL_THINKPAD_COMMON - config BOARD_LENOVO_T480 - bool - select BOARD_LENOVO_SKLKBL_THINKPAD_COMMON -+ select DRIVERS_INTEL_DTBT - select MEC1653_HAS_DEBUG_UNLOCK - select VARIANT_HAS_DGPU - - config BOARD_LENOVO_T480S - bool - select BOARD_LENOVO_SKLKBL_THINKPAD_COMMON -+ select DRIVERS_INTEL_DTBT - select VARIANT_HAS_DGPU - - if BOARD_LENOVO_SKLKBL_THINKPAD_COMMON -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gpio.c b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gpio.c -index f337843fd9..2074b9d965 100644 ---- a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gpio.c -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gpio.c -@@ -86,7 +86,7 @@ static const struct pad_config gpio_table[] = { - PAD_NC(GPP_C18, NONE), - PAD_NC(GPP_C19, NONE), - PAD_CFG_GPO(GPP_C20, 0, DEEP), /* EPRIVACY_ON */ -- PAD_CFG_GPO(GPP_C21, 0, DEEP), /* TBT_FORCE_PWR */ -+ PAD_CFG_GPO(GPP_C21, 1, PLTRST), /* TBT_FORCE_PWR */ - PAD_CFG_GPI_SCI(GPP_C22, NONE, DEEP, EDGE_SINGLE, INVERT), /* -EC_SCI */ - PAD_CFG_GPI_SCI(GPP_C23, NONE, DEEP, EDGE_SINGLE, INVERT), /* -EC_WAKE */ - -@@ -191,9 +191,9 @@ static const struct pad_config gpio_table[] = { - PAD_NC(GPP_G1, NONE), - PAD_NC(GPP_G2, NONE), - PAD_NC(GPP_G3, NONE), -- PAD_CFG_GPO(GPP_G4, 0, DEEP), /* TBT_RTD3_PWR_EN */ -- PAD_CFG_GPO(GPP_G5, 0, DEEP), /* TBT_FORCE_USB_PWR */ -- PAD_CFG_GPO(GPP_G6, 0, DEEP), /* -TBT_PERST */ -+ PAD_CFG_GPO(GPP_G4, 1, PLTRST), /* TBT_RTD3_PWR_EN */ -+ PAD_CFG_GPO(GPP_G5, 1, PLTRST), /* TBT_FORCE_USB_PWR */ -+ PAD_CFG_GPO(GPP_G6, 1, PLTRST), /* -TBT_PERST */ - PAD_CFG_GPI_SCI(GPP_G7, NONE, DEEP, LEVEL, INVERT), /* -TBT_PCIE_WAKE */ - }; - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/gpio.c b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/gpio.c -index 4f1c57390d..c24c1abb07 100644 ---- a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/gpio.c -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/gpio.c -@@ -82,7 +82,7 @@ static const struct pad_config gpio_table[] = { - PAD_NC(GPP_C18, NONE), - PAD_NC(GPP_C19, NONE), - PAD_CFG_GPO(GPP_C20, 0, DEEP), /* EPRIVACY_ON */ -- PAD_CFG_GPO(GPP_C21, 0, DEEP), /* TBT_FORCE_PWR */ -+ PAD_CFG_GPO(GPP_C21, 1, PLTRST), /* TBT_FORCE_PWR */ - PAD_CFG_GPI_SCI(GPP_C22, NONE, DEEP, EDGE_SINGLE, INVERT), /* -EC_SCI */ - PAD_CFG_GPI_SCI(GPP_C23, NONE, DEEP, EDGE_SINGLE, INVERT), /* -EC_WAKE */ - -@@ -187,9 +187,9 @@ static const struct pad_config gpio_table[] = { - PAD_NC(GPP_G1, NONE), - PAD_NC(GPP_G2, NONE), - PAD_NC(GPP_G3, NONE), -- PAD_CFG_GPO(GPP_G4, 0, DEEP), /* TBT_RTD3_PWR_EN */ -- PAD_CFG_GPO(GPP_G5, 0, DEEP), /* TBT_FORCE_USB_PWR */ -- PAD_CFG_GPO(GPP_G6, 0, DEEP), /* -TBT_PERST */ -+ PAD_CFG_GPO(GPP_G4, 1, PLTRST), /* TBT_RTD3_PWR_EN */ -+ PAD_CFG_GPO(GPP_G5, 1, PLTRST), /* TBT_FORCE_USB_PWR */ -+ PAD_CFG_GPO(GPP_G6, 1, PLTRST), /* -TBT_PERST */ - PAD_CFG_GPI_SCI(GPP_G7, NONE, DEEP, LEVEL, INVERT), /* -TBT_PCIE_WAKE */ - }; - --- -2.51.2 - diff --git a/config/coreboot/default/patches/0046-drivers-intel-dtbt-Add-discrete-Thunderbolt-driver.patch b/config/coreboot/default/patches/0046-drivers-intel-dtbt-Add-discrete-Thunderbolt-driver.patch index 8e43e6dc..c7042f94 100644 --- a/config/coreboot/default/patches/0046-drivers-intel-dtbt-Add-discrete-Thunderbolt-driver.patch +++ b/config/coreboot/default/patches/0046-drivers-intel-dtbt-Add-discrete-Thunderbolt-driver.patch @@ -1,7 +1,7 @@ -From 5834c56c0e0314c652fd089d3eb82fe74fd62b14 Mon Sep 17 00:00:00 2001 +From a656a385e2c5b3945ff29a45b4129a2516f4b168 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 31 May 2024 13:58:00 -0600 -Subject: [PATCH] drivers/intel/dtbt: Add discrete Thunderbolt driver +Subject: [PATCH 1/2] drivers/intel/dtbt: Add discrete Thunderbolt driver Add a new driver which enables basic TBT support for the Alpine Ridge, Titan Ridge, and Maple Ridge discrete Thunderbolt controllers. @@ -354,5 +354,5 @@ index 0000000000..d01d3a35ef + +#endif /* _DRIVERS_INTEL_DTBT_H_ */ -- -2.51.2 +2.47.3 diff --git a/config/coreboot/default/patches/0047-mb-lenovo-t480-s-Enable-TBT-support.patch b/config/coreboot/default/patches/0047-mb-lenovo-t480-s-Enable-TBT-support.patch new file mode 100644 index 00000000..02d73f79 --- /dev/null +++ b/config/coreboot/default/patches/0047-mb-lenovo-t480-s-Enable-TBT-support.patch @@ -0,0 +1,123 @@ +From 5249bfd28ffcdab2d54c3c111ec6d3dc567ad090 Mon Sep 17 00:00:00 2001 +From: Matt DeVillier +Date: Fri, 18 Jul 2025 14:24:05 -0500 +Subject: [PATCH 2/2] mb/lenovo/t480(s): Enable TBT support + +Select the discrete TBT controller driver, and configure the necessary +GPIOs for the Alpine Ridge TBT controller to be fully functional. +Update the documentation w/r/t TBT functionality. + +TEST=build/boot Lenovo T480, boot Linux, verify all TBT-related PCI +devices populated, lower USB-C port works for USB data and PCIe. + +Change-Id: Ie5586fa72ed6819b9d1c37373c21605d39bad7b4 +Signed-off-by: Matt DeVillier +--- + Documentation/mainboard/lenovo/t480.md | 5 ++--- + src/mainboard/lenovo/sklkbl_thinkpad/Kconfig | 2 ++ + src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gpio.c | 8 ++++---- + .../lenovo/sklkbl_thinkpad/variants/t480s/gpio.c | 8 ++++---- + 4 files changed, 12 insertions(+), 11 deletions(-) + +diff --git a/Documentation/mainboard/lenovo/t480.md b/Documentation/mainboard/lenovo/t480.md +index 9ebce8ff7d..4c3408c4aa 100644 +--- a/Documentation/mainboard/lenovo/t480.md ++++ b/Documentation/mainboard/lenovo/t480.md +@@ -162,8 +162,6 @@ binaries if only flashing the `bios` region. + + ## Known Issues + +-- Alpine Ridge Thunderbolt 3 controller does not work +- - Lower (right) USB-C port only works for charging/DP alt mode, not USB/PCIe data + - Some Fn+F{1-12} keys aren't handled correctly + - Nvidia dGPU is finicky + - Needs option ROM +@@ -175,6 +173,7 @@ binaries if only flashing the `bios` region. + + ## Verified Working + ++- Alpine Ridge Thunderbolt 3 controller + - Integrated graphics init with libgfxinit + - video output: internal (eDP), miniDP + - ACPI support +@@ -196,4 +195,4 @@ binaries if only flashing the `bios` region. + [from Lenovo's site]: https://pcsupport.lenovo.com/gb/en/products/laptops-and-netbooks/thinkpad-t-series-laptops/thinkpad-t480s-type-20l7-20l8/solutions/ht508988-critical-intel-thunderbolt-software-and-firmware-updates-thinkpad + [how to externally flash the TB3 firmware]: https://libreboot.org/docs/install/t480.html#thunderbolt-issue-read-this-before-flashing + [Dell firmware updater]: https://web.archive.org/web/20241110222323/https://dl.dell.com/FOLDER04573471M/1/Inspiron_5468_1.3.0.exe +-[Dell_PFS_Extract.py]: https://github.com/vuquangtrong/Dell-PFS-BIOS-Assembler/blob/master/Dell_PFS_Extract.py +\ No newline at end of file ++[Dell_PFS_Extract.py]: https://github.com/vuquangtrong/Dell-PFS-BIOS-Assembler/blob/master/Dell_PFS_Extract.py +diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/Kconfig b/src/mainboard/lenovo/sklkbl_thinkpad/Kconfig +index 6036ceb06d..e6fb950d66 100644 +--- a/src/mainboard/lenovo/sklkbl_thinkpad/Kconfig ++++ b/src/mainboard/lenovo/sklkbl_thinkpad/Kconfig +@@ -26,12 +26,14 @@ config BOARD_LENOVO_SKLKBL_THINKPAD_COMMON + config BOARD_LENOVO_T480 + bool + select BOARD_LENOVO_SKLKBL_THINKPAD_COMMON ++ select DRIVERS_INTEL_DTBT + select MEC1653_HAS_DEBUG_UNLOCK + select VARIANT_HAS_DGPU + + config BOARD_LENOVO_T480S + bool + select BOARD_LENOVO_SKLKBL_THINKPAD_COMMON ++ select DRIVERS_INTEL_DTBT + select VARIANT_HAS_DGPU + + if BOARD_LENOVO_SKLKBL_THINKPAD_COMMON +diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gpio.c b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gpio.c +index f337843fd9..ffd2841e49 100644 +--- a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gpio.c ++++ b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gpio.c +@@ -86,7 +86,7 @@ static const struct pad_config gpio_table[] = { + PAD_NC(GPP_C18, NONE), + PAD_NC(GPP_C19, NONE), + PAD_CFG_GPO(GPP_C20, 0, DEEP), /* EPRIVACY_ON */ +- PAD_CFG_GPO(GPP_C21, 0, DEEP), /* TBT_FORCE_PWR */ ++ PAD_CFG_GPO(GPP_C21, 1, PLTRST), /* TBT_FORCE_PWR */ + PAD_CFG_GPI_SCI(GPP_C22, NONE, DEEP, EDGE_SINGLE, INVERT), /* -EC_SCI */ + PAD_CFG_GPI_SCI(GPP_C23, NONE, DEEP, EDGE_SINGLE, INVERT), /* -EC_WAKE */ + +@@ -191,9 +191,9 @@ static const struct pad_config gpio_table[] = { + PAD_NC(GPP_G1, NONE), + PAD_NC(GPP_G2, NONE), + PAD_NC(GPP_G3, NONE), +- PAD_CFG_GPO(GPP_G4, 0, DEEP), /* TBT_RTD3_PWR_EN */ +- PAD_CFG_GPO(GPP_G5, 0, DEEP), /* TBT_FORCE_USB_PWR */ +- PAD_CFG_GPO(GPP_G6, 0, DEEP), /* -TBT_PERST */ ++ PAD_CFG_GPO(GPP_G4, 1, PLTRST), /* TBT_RTD3_PWR_EN */ ++ PAD_CFG_GPO(GPP_G5, 1, PLTRST), /* TBT_FORCE_USB_PWR */ ++ PAD_CFG_GPO(GPP_G6, 1, PLTRST), /* -TBT_PERST */ + PAD_CFG_GPI_SCI(GPP_G7, NONE, DEEP, LEVEL, INVERT), /* -TBT_PCIE_WAKE */ + }; + +diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/gpio.c b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/gpio.c +index 4f1c57390d..c24c1abb07 100644 +--- a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/gpio.c ++++ b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/gpio.c +@@ -82,7 +82,7 @@ static const struct pad_config gpio_table[] = { + PAD_NC(GPP_C18, NONE), + PAD_NC(GPP_C19, NONE), + PAD_CFG_GPO(GPP_C20, 0, DEEP), /* EPRIVACY_ON */ +- PAD_CFG_GPO(GPP_C21, 0, DEEP), /* TBT_FORCE_PWR */ ++ PAD_CFG_GPO(GPP_C21, 1, PLTRST), /* TBT_FORCE_PWR */ + PAD_CFG_GPI_SCI(GPP_C22, NONE, DEEP, EDGE_SINGLE, INVERT), /* -EC_SCI */ + PAD_CFG_GPI_SCI(GPP_C23, NONE, DEEP, EDGE_SINGLE, INVERT), /* -EC_WAKE */ + +@@ -187,9 +187,9 @@ static const struct pad_config gpio_table[] = { + PAD_NC(GPP_G1, NONE), + PAD_NC(GPP_G2, NONE), + PAD_NC(GPP_G3, NONE), +- PAD_CFG_GPO(GPP_G4, 0, DEEP), /* TBT_RTD3_PWR_EN */ +- PAD_CFG_GPO(GPP_G5, 0, DEEP), /* TBT_FORCE_USB_PWR */ +- PAD_CFG_GPO(GPP_G6, 0, DEEP), /* -TBT_PERST */ ++ PAD_CFG_GPO(GPP_G4, 1, PLTRST), /* TBT_RTD3_PWR_EN */ ++ PAD_CFG_GPO(GPP_G5, 1, PLTRST), /* TBT_FORCE_USB_PWR */ ++ PAD_CFG_GPO(GPP_G6, 1, PLTRST), /* -TBT_PERST */ + PAD_CFG_GPI_SCI(GPP_G7, NONE, DEEP, LEVEL, INVERT), /* -TBT_PCIE_WAKE */ + }; + +-- +2.47.3 + -- cgit v1.2.1