diff options
Diffstat (limited to 'config/coreboot/default/patches')
46 files changed, 685 insertions, 2874 deletions
| diff --git a/config/coreboot/default/patches/0001-add-c3-and-clockgen-to-apple-macbook21.patch b/config/coreboot/default/patches/0001-add-c3-and-clockgen-to-apple-macbook21.patch index 31c1bb30..04e896d9 100644 --- a/config/coreboot/default/patches/0001-add-c3-and-clockgen-to-apple-macbook21.patch +++ b/config/coreboot/default/patches/0001-add-c3-and-clockgen-to-apple-macbook21.patch @@ -1,7 +1,7 @@ -From bd959c38f6ee21db1ff8f4fbb0675e38bfbe1147 Mon Sep 17 00:00:00 2001 +From 7436b357fbe12233f3fbc5d360f296e6e15d3c2d Mon Sep 17 00:00:00 2001  From: Vitali64 <5405891-vitali64yt@users.noreply.gitlab.com>  Date: Wed, 27 Oct 2021 13:36:01 +0200 -Subject: [PATCH 01/37] add c3 and clockgen to apple/macbook21 +Subject: [PATCH 01/40] add c3 and clockgen to apple/macbook21  ---   src/mainboard/apple/macbook21/Kconfig       |  1 + @@ -64,5 +64,5 @@ index fd86e939b9..263fbabcd1 100644   	end   end  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0002-lenovo-t400-Enable-all-SATA-ports.patch b/config/coreboot/default/patches/0002-lenovo-t400-Enable-all-SATA-ports.patch index 0c2b080f..2040cbc2 100644 --- a/config/coreboot/default/patches/0002-lenovo-t400-Enable-all-SATA-ports.patch +++ b/config/coreboot/default/patches/0002-lenovo-t400-Enable-all-SATA-ports.patch @@ -1,7 +1,7 @@ -From e5eab4c8043b89a325b4a28bf7da456d68475144 Mon Sep 17 00:00:00 2001 +From 7d2e54028f5558f0ccea5ecd8f5f812e28597a47 Mon Sep 17 00:00:00 2001  From: persmule <persmule@gmail.com>  Date: Sun, 31 Oct 2021 23:33:26 +0000 -Subject: [PATCH 02/37] lenovo/t400: Enable all SATA ports +Subject: [PATCH 02/40] lenovo/t400: Enable all SATA ports  There are 2 SATA ports on the chassis of t400(s), but at least one dock for  t400 contains a port for (P/S)ATA device, and t400s has a eSATA port on its @@ -15,7 +15,7 @@ This patch unmasked all SATA ports found within t400s with factory firmware.   1 file changed, 2 insertions(+), 2 deletions(-)  diff --git a/src/mainboard/lenovo/t400/devicetree.cb b/src/mainboard/lenovo/t400/devicetree.cb -index 259c3e1b21..3d007533a4 100644 +index 9e056772e9..9361f330d2 100644  --- a/src/mainboard/lenovo/t400/devicetree.cb  +++ b/src/mainboard/lenovo/t400/devicetree.cb  @@ -46,8 +46,8 @@ chip northbridge/intel/gm45 @@ -30,5 +30,5 @@ index 259c3e1b21..3d007533a4 100644   			register "sata_traffic_monitor"		= "0"  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0003-lenovo-x230-set-me_state-Disabled-in-cmos.default.patch b/config/coreboot/default/patches/0003-lenovo-x230-set-me_state-Disabled-in-cmos.default.patch index 4ccde9a6..89294d6f 100644 --- a/config/coreboot/default/patches/0003-lenovo-x230-set-me_state-Disabled-in-cmos.default.patch +++ b/config/coreboot/default/patches/0003-lenovo-x230-set-me_state-Disabled-in-cmos.default.patch @@ -1,7 +1,7 @@ -From fd398cc10600cccce3dd4931651a5294ffebde9a Mon Sep 17 00:00:00 2001 +From 61051fbf9f1da48932930b512527626d1cf5bfbd Mon Sep 17 00:00:00 2001  From: Leah Rowe <leah@libreboot.org>  Date: Mon, 3 Jan 2022 19:06:22 +0000 -Subject: [PATCH 03/37] lenovo/x230: set me_state=Disabled in cmos.default +Subject: [PATCH 03/40] lenovo/x230: set me_state=Disabled in cmos.default  I only recently found out about this. It's possible to use me_cleaner to  do the same thing, but some people might just flash coreboot and not do @@ -33,5 +33,5 @@ index 732e214b32..8454f0eac0 100644  -me_state=Normal  +me_state=Disabled  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0004-set-me_state-Disabled-on-all-cmos.default-files.patch b/config/coreboot/default/patches/0004-set-me_state-Disabled-on-all-cmos.default-files.patch index 39319d58..7b2ceabd 100644 --- a/config/coreboot/default/patches/0004-set-me_state-Disabled-on-all-cmos.default-files.patch +++ b/config/coreboot/default/patches/0004-set-me_state-Disabled-on-all-cmos.default-files.patch @@ -1,7 +1,7 @@ -From 74230d8123cb7c31afd084658720084b1a5ac5d9 Mon Sep 17 00:00:00 2001 +From be0124d69fef77370eff57cfdfb2d6eae4b0cec3 Mon Sep 17 00:00:00 2001  From: Leah Rowe <leah@libreboot.org>  Date: Wed, 2 Mar 2022 21:50:01 +0000 -Subject: [PATCH 04/37] set me_state=Disabled on all cmos.default files! +Subject: [PATCH 04/40] set me_state=Disabled on all cmos.default files!  yeah. why the hell isn't this the default @@ -120,5 +120,5 @@ index d61046df6b..8c793fd1c3 100644  -me_state=Enable  +me_state=Disabled  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0005-util-ifdtool-add-nuke-flag-all-0xFF-on-region.patch b/config/coreboot/default/patches/0005-util-ifdtool-add-nuke-flag-all-0xFF-on-region.patch index 9c00ab79..314c6932 100644 --- a/config/coreboot/default/patches/0005-util-ifdtool-add-nuke-flag-all-0xFF-on-region.patch +++ b/config/coreboot/default/patches/0005-util-ifdtool-add-nuke-flag-all-0xFF-on-region.patch @@ -1,7 +1,7 @@ -From f592ac32892d7f99fa2e68504bb147e5d06184ca Mon Sep 17 00:00:00 2001 +From d97018fc490daf106582b0b7885a497cc2daba5a Mon Sep 17 00:00:00 2001  From: Leah Rowe <info@minifree.org>  Date: Sun, 19 Feb 2023 18:21:43 +0000 -Subject: [PATCH 05/37] util/ifdtool: add --nuke flag (all 0xFF on region) +Subject: [PATCH 05/40] util/ifdtool: add --nuke flag (all 0xFF on region)  When this option is used, the region's contents are overwritten  with all ones (0xFF). @@ -201,5 +201,5 @@ index b21a89c0e1..fc91d4c239 100644   		struct fpsba *fpsba = find_fpsba(image, size);   		struct fmsba *fmsba = find_fmsba(image, size);  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0006-mb-dell-e6400-Enable-01.0-device-in-devicetree-for-d.patch b/config/coreboot/default/patches/0006-mb-dell-e6400-Enable-01.0-device-in-devicetree-for-d.patch index ee60c3c8..104df923 100644 --- a/config/coreboot/default/patches/0006-mb-dell-e6400-Enable-01.0-device-in-devicetree-for-d.patch +++ b/config/coreboot/default/patches/0006-mb-dell-e6400-Enable-01.0-device-in-devicetree-for-d.patch @@ -1,20 +1,20 @@ -From 18069af7c0c6beedfadb615cca9127e82a0d8007 Mon Sep 17 00:00:00 2001 +From 1acdf1d0ff0c7a7ab5f2a0d7e5b57e21bdfaa1ae Mon Sep 17 00:00:00 2001  From: Nicholas Chin <nic.c3.14@gmail.com>  Date: Sat, 6 May 2023 15:53:41 -0600 -Subject: [PATCH 06/37] mb/dell/e6400: Enable 01.0 device in devicetree for +Subject: [PATCH 06/40] mb/dell/e6400: Enable 01.0 device in devicetree for   dGPU models  Change-Id: I9b8e5d3cd1e1f64dc87b682b1e045b6342924aed  Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com>  --- - src/mainboard/dell/e6400/devicetree.cb | 2 +- + src/mainboard/dell/gm45_latitude/devicetree.cb | 2 +-   1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/src/mainboard/dell/e6400/devicetree.cb b/src/mainboard/dell/e6400/devicetree.cb -index bb954cbd7b..e9f3915d17 100644 ---- a/src/mainboard/dell/e6400/devicetree.cb -+++ b/src/mainboard/dell/e6400/devicetree.cb -@@ -19,7 +19,7 @@ chip northbridge/intel/gm45 +diff --git a/src/mainboard/dell/gm45_latitude/devicetree.cb b/src/mainboard/dell/gm45_latitude/devicetree.cb +index 5919803be2..76dae87153 100644 +--- a/src/mainboard/dell/gm45_latitude/devicetree.cb ++++ b/src/mainboard/dell/gm45_latitude/devicetree.cb +@@ -18,7 +18,7 @@ chip northbridge/intel/gm45   		ops gm45_pci_domain_ops   		device pci 00.0 on end # host bridge @@ -24,5 +24,5 @@ index bb954cbd7b..e9f3915d17 100644   		device pci 02.1 on end # Display   		device pci 03.0 on end # ME  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0007-Remove-warning-for-coreboot-images-built-without-a-p.patch b/config/coreboot/default/patches/0007-Remove-warning-for-coreboot-images-built-without-a-p.patch index 525bd366..e8c0f449 100644 --- a/config/coreboot/default/patches/0007-Remove-warning-for-coreboot-images-built-without-a-p.patch +++ b/config/coreboot/default/patches/0007-Remove-warning-for-coreboot-images-built-without-a-p.patch @@ -1,7 +1,7 @@ -From 9563c107a4b40e66b610d7205a21590c7c181c78 Mon Sep 17 00:00:00 2001 +From aab9296997bd88a86bbb40079a9caf504db81cea Mon Sep 17 00:00:00 2001  From: Nicholas Chin <nic.c3.14@gmail.com>  Date: Fri, 12 May 2023 19:55:15 -0600 -Subject: [PATCH 07/37] Remove warning for coreboot images built without a +Subject: [PATCH 07/40] Remove warning for coreboot images built without a   payload  I added this in upstream to prevent people from accidentally flashing @@ -35,5 +35,5 @@ index 5f988dac1b..516133880f 100644  -.PHONY: clean-payloads distclean-payloads print-repo-info-payloads warn_no_payload  +.PHONY: clean-payloads distclean-payloads print-repo-info-payloads  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0008-HACK-Disable-coreboot-related-BL31-features.patch b/config/coreboot/default/patches/0008-HACK-Disable-coreboot-related-BL31-features.patch index bd2c56bd..66043dc3 100644 --- a/config/coreboot/default/patches/0008-HACK-Disable-coreboot-related-BL31-features.patch +++ b/config/coreboot/default/patches/0008-HACK-Disable-coreboot-related-BL31-features.patch @@ -1,7 +1,7 @@ -From 7f650a19d30fe6157b150c5248d6086007323d72 Mon Sep 17 00:00:00 2001 +From 319a77d9eeaaf1e344a380b1b449e6a56b3dc92c Mon Sep 17 00:00:00 2001  From: Alper Nebi Yasak <alpernebiyasak@gmail.com>  Date: Thu, 22 Jun 2023 16:44:27 +0300 -Subject: [PATCH 08/37] HACK: Disable coreboot related BL31 features +Subject: [PATCH 08/40] HACK: Disable coreboot related BL31 features  I don't know why, but removing this BL31 make argument lets gru-kevin  power off properly when shut down from Linux. Needs investigation. @@ -24,5 +24,5 @@ index f54c6d22fc..b075abfd42 100644   BL31_MAKEARGS += BUILD_PLAT="$(BL31_BUILD)"  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0009-dell-e6430-use-ME-Soft-Temporary-Disable.patch b/config/coreboot/default/patches/0009-dell-e6430-use-ME-Soft-Temporary-Disable.patch index ca3b6264..5ffd4431 100644 --- a/config/coreboot/default/patches/0009-dell-e6430-use-ME-Soft-Temporary-Disable.patch +++ b/config/coreboot/default/patches/0009-dell-e6430-use-ME-Soft-Temporary-Disable.patch @@ -1,7 +1,7 @@ -From 3f6f65ed6a435fe49534c8a0b5cb98c3eac71150 Mon Sep 17 00:00:00 2001 +From d9066d7f51d5742ae8ed1c7ab096ee857358cc48 Mon Sep 17 00:00:00 2001  From: Leah Rowe <leah@libreboot.org>  Date: Sun, 5 Nov 2023 11:41:41 +0000 -Subject: [PATCH 09/37] dell/e6430: use ME Soft Temporary Disable +Subject: [PATCH 09/40] dell/e6430: use ME Soft Temporary Disable  i overlooked this. it's set on other boards. @@ -26,5 +26,5 @@ index 2a5b30f2b7..279415dfd1 100644  -me_state=Normal  +me_state=Disabled  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0010-mb-hp-Add-Compaq-Elite-8300-CMT-port.patch b/config/coreboot/default/patches/0010-mb-hp-Add-Compaq-Elite-8300-CMT-port.patch index 2a7d5c17..f093db5c 100644 --- a/config/coreboot/default/patches/0010-mb-hp-Add-Compaq-Elite-8300-CMT-port.patch +++ b/config/coreboot/default/patches/0010-mb-hp-Add-Compaq-Elite-8300-CMT-port.patch @@ -1,7 +1,7 @@ -From b4d48233a8d829d7285501f662d999aad898be21 Mon Sep 17 00:00:00 2001 +From 922357b7d5b0b5304b0d4296b2f03961a17288a6 Mon Sep 17 00:00:00 2001  From: Riku Viitanen <riku.viitanen@protonmail.com>  Date: Sat, 23 Dec 2023 19:02:10 +0200 -Subject: [PATCH 10/37] mb/hp: Add Compaq Elite 8300 CMT port +Subject: [PATCH 10/40] mb/hp: Add Compaq Elite 8300 CMT port  Based on autoport and Z220 SuperIO code. @@ -868,5 +868,5 @@ index 0000000000..8dbd95ef96  +	.enable_dev = mainboard_enable,  +};  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0011-nb-intel-haswell-make-IOMMU-a-runtime-option.patch b/config/coreboot/default/patches/0011-nb-intel-haswell-make-IOMMU-a-runtime-option.patch index f8c56155..4c773248 100644 --- a/config/coreboot/default/patches/0011-nb-intel-haswell-make-IOMMU-a-runtime-option.patch +++ b/config/coreboot/default/patches/0011-nb-intel-haswell-make-IOMMU-a-runtime-option.patch @@ -1,7 +1,7 @@ -From a16ff494adb1f706d402a2e167d0d53c775d0897 Mon Sep 17 00:00:00 2001 +From 41256272a7637426c9e68fd633ceb1c108f183c9 Mon Sep 17 00:00:00 2001  From: Leah Rowe <info@minifree.org>  Date: Sat, 2 Mar 2024 22:51:09 +0000 -Subject: [PATCH 11/37] nb/intel/haswell: make IOMMU a runtime option +Subject: [PATCH 11/40] nb/intel/haswell: make IOMMU a runtime option  When I tested graphics cards on a coreboot port for Dell  OptiPlex 9020 SFF, I could not use a graphics card unless @@ -288,5 +288,5 @@ index e47deb5da6..1a7e0b1076 100644   	if (capid0_a & VTD_DISABLE)   		return;  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0012-dell-optiplex_9020-Disable-IOMMU-by-default.patch b/config/coreboot/default/patches/0012-dell-optiplex_9020-Disable-IOMMU-by-default.patch index e578d22a..24b769cd 100644 --- a/config/coreboot/default/patches/0012-dell-optiplex_9020-Disable-IOMMU-by-default.patch +++ b/config/coreboot/default/patches/0012-dell-optiplex_9020-Disable-IOMMU-by-default.patch @@ -1,7 +1,7 @@ -From 4b0536ce7cd55eedc52d13497bea59d91e8924d8 Mon Sep 17 00:00:00 2001 +From b243452bf1ed7c9aee1e6685091e98f52d7229c7 Mon Sep 17 00:00:00 2001  From: Leah Rowe <info@minifree.org>  Date: Sat, 2 Mar 2024 23:00:09 +0000 -Subject: [PATCH 12/37] dell/optiplex_9020: Disable IOMMU by default +Subject: [PATCH 12/40] dell/optiplex_9020: Disable IOMMU by default  Needed to make graphics cards work. Turning it on is  recommended if only using iGPU, otherwise leave it off @@ -25,5 +25,5 @@ index 8000eea8c0..0700f971ee 100644  -iommu=Enable  +iommu=Disable  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0013-nb-haswell-Fully-disable-iGPU-when-dGPU-is-used.patch b/config/coreboot/default/patches/0013-nb-haswell-Fully-disable-iGPU-when-dGPU-is-used.patch index 89584d95..447693aa 100644 --- a/config/coreboot/default/patches/0013-nb-haswell-Fully-disable-iGPU-when-dGPU-is-used.patch +++ b/config/coreboot/default/patches/0013-nb-haswell-Fully-disable-iGPU-when-dGPU-is-used.patch @@ -1,7 +1,7 @@ -From c8329f84b2d06581dcbeecedc38b7c4715a9cba7 Mon Sep 17 00:00:00 2001 +From 215661dbe631c21a2533cc93bdd1e9f82aa9601e Mon Sep 17 00:00:00 2001  From: Leah Rowe <info@minifree.org>  Date: Sat, 6 Apr 2024 01:22:47 +0100 -Subject: [PATCH 13/37] nb/haswell: Fully disable iGPU when dGPU is used +Subject: [PATCH 13/40] nb/haswell: Fully disable iGPU when dGPU is used  My earlier patch disabled decode *and* disabled the iGPU itself, but  a subsequent revision disabled only VGA decode. Upon revisiting, I @@ -47,5 +47,5 @@ index f7fad3183d..1b188e92e1 100644   static struct device_operations gma_func0_ops = {  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0014-ec-dell-mec5035-Add-S3-suspend-SMI-handler.patch b/config/coreboot/default/patches/0014-ec-dell-mec5035-Add-S3-suspend-SMI-handler.patch index 70556090..bfbddae1 100644 --- a/config/coreboot/default/patches/0014-ec-dell-mec5035-Add-S3-suspend-SMI-handler.patch +++ b/config/coreboot/default/patches/0014-ec-dell-mec5035-Add-S3-suspend-SMI-handler.patch @@ -1,7 +1,7 @@ -From 73dbf291631fdbae2d8e8a761c147523c8d9e65c Mon Sep 17 00:00:00 2001 +From aadef041f002b9f0504fcc67df39654680d67bdd Mon Sep 17 00:00:00 2001  From: Nicholas Chin <nic.c3.14@gmail.com>  Date: Fri, 3 May 2024 11:03:32 -0600 -Subject: [PATCH 14/37] ec/dell/mec5035: Add S3 suspend SMI handler +Subject: [PATCH 14/40] ec/dell/mec5035: Add S3 suspend SMI handler  This is necessary for S3 resume to work on SNB and newer Dell Latitude  laptops. If a command isn't sent, the EC cuts power to the DIMMs, @@ -143,5 +143,5 @@ index 0000000000..958733bf97  +	}  +}  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0015-nb-haswell-lock-policy-regs-when-disabling-IOMMU.patch b/config/coreboot/default/patches/0015-nb-haswell-lock-policy-regs-when-disabling-IOMMU.patch index 9525b8ce..c1ae05be 100644 --- a/config/coreboot/default/patches/0015-nb-haswell-lock-policy-regs-when-disabling-IOMMU.patch +++ b/config/coreboot/default/patches/0015-nb-haswell-lock-policy-regs-when-disabling-IOMMU.patch @@ -1,7 +1,7 @@ -From a507fe609a2e99c95218ec430916eaf4c3cb61d9 Mon Sep 17 00:00:00 2001 +From 4a24221fc735117e521cbd7e08d71b6e6a061517 Mon Sep 17 00:00:00 2001  From: Leah Rowe <info@minifree.org>  Date: Sat, 4 May 2024 02:00:53 +0100 -Subject: [PATCH 15/37] nb/haswell: lock policy regs when disabling IOMMU +Subject: [PATCH 15/40] nb/haswell: lock policy regs when disabling IOMMU  Angel Pons told me I should do it. See comments here:  https://review.coreboot.org/c/coreboot/+/81016 @@ -51,5 +51,5 @@ index 1a7e0b1076..e9506ee830 100644   	/* Set L3HIT2PEND_DIS, lock GFXVTBAR policy config registers */   	u32 reg32;  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0016-nb-intel-gm45-Make-DDR2-raminit-work.patch b/config/coreboot/default/patches/0016-nb-intel-gm45-Make-DDR2-raminit-work.patch index 091a15c4..7537c1a6 100644 --- a/config/coreboot/default/patches/0016-nb-intel-gm45-Make-DDR2-raminit-work.patch +++ b/config/coreboot/default/patches/0016-nb-intel-gm45-Make-DDR2-raminit-work.patch @@ -1,7 +1,7 @@ -From 9e0a6aa376db81f9409eda92b6783a8262c1fedb Mon Sep 17 00:00:00 2001 +From 20921eb7165b23e7b78e4c4126ff5bab8725404b Mon Sep 17 00:00:00 2001  From: Angel Pons <th3fanbus@gmail.com>  Date: Mon, 10 May 2021 22:40:59 +0200 -Subject: [PATCH 16/37] nb/intel/gm45: Make DDR2 raminit work +Subject: [PATCH 16/40] nb/intel/gm45: Make DDR2 raminit work  List of changes:   - Update some timing and ODT values @@ -219,5 +219,5 @@ index aef863f05a..b74765fd9c 100644  +	mchbar_clrsetbits32(0x4d0, 0x3f << 20, magic_comp[1] << 20);   }  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0017-nb-gm45-Fix-Angel-s-DDR2-RCOMP-fix-on-DDR3-boards.patch b/config/coreboot/default/patches/0017-nb-gm45-Fix-Angel-s-DDR2-RCOMP-fix-on-DDR3-boards.patch index 4ba74757..808d90d6 100644 --- a/config/coreboot/default/patches/0017-nb-gm45-Fix-Angel-s-DDR2-RCOMP-fix-on-DDR3-boards.patch +++ b/config/coreboot/default/patches/0017-nb-gm45-Fix-Angel-s-DDR2-RCOMP-fix-on-DDR3-boards.patch @@ -1,7 +1,7 @@ -From 6acc310c1d695d47c148296da9da189de21d58be Mon Sep 17 00:00:00 2001 +From b5fe5366a03f934df87c5537b12f006ccee0d695 Mon Sep 17 00:00:00 2001  From: Leah Rowe <info@minifree.org>  Date: Tue, 6 Aug 2024 00:50:24 +0100 -Subject: [PATCH 17/37] nb/gm45: Fix Angel's DDR2 RCOMP fix on DDR3 boards +Subject: [PATCH 17/40] nb/gm45: Fix Angel's DDR2 RCOMP fix on DDR3 boards  We add this patch: @@ -236,5 +236,5 @@ index b74765fd9c..5d4505e063 100644  +	}   }  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0018-mb-dell-e6400-Use-100-MHz-reference-clock-for-displa.patch b/config/coreboot/default/patches/0018-mb-dell-e6400-Use-100-MHz-reference-clock-for-displa.patch index 1cf7c0ac..b537346e 100644 --- a/config/coreboot/default/patches/0018-mb-dell-e6400-Use-100-MHz-reference-clock-for-displa.patch +++ b/config/coreboot/default/patches/0018-mb-dell-e6400-Use-100-MHz-reference-clock-for-displa.patch @@ -1,7 +1,7 @@ -From 7461210ecc7c8e41f3f941bd5ce7943e5f66c711 Mon Sep 17 00:00:00 2001 +From c075c12d5549cc6cfaa4fbb6bb3abd5e17503b04 Mon Sep 17 00:00:00 2001  From: Nicholas Chin <nic.c3.14@gmail.com>  Date: Mon, 20 May 2024 10:24:16 -0600 -Subject: [PATCH 18/37] mb/dell/e6400: Use 100 MHz reference clock for display +Subject: [PATCH 18/40] mb/dell/e6400: Use 100 MHz reference clock for display  The E6400 uses a 100 MHz reference clock for spread spectrum support on  LVDS, whereas libgfxinit previously assumed a 96 MHz input clock. For @@ -14,24 +14,23 @@ display in the pre-OS graphics environment provided by libgfxinit.  Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com>  --- - src/mainboard/dell/e6400/Kconfig   | 3 +++ - src/northbridge/intel/gm45/Kconfig | 4 ++++ - 2 files changed, 7 insertions(+) + src/mainboard/dell/gm45_latitude/Kconfig | 2 ++ + src/northbridge/intel/gm45/Kconfig       | 4 ++++ + 2 files changed, 6 insertions(+) -diff --git a/src/mainboard/dell/e6400/Kconfig b/src/mainboard/dell/e6400/Kconfig -index 417d95fd5d..6fe1b1c456 100644 ---- a/src/mainboard/dell/e6400/Kconfig -+++ b/src/mainboard/dell/e6400/Kconfig -@@ -19,6 +19,9 @@ config BOARD_SPECIFIC_OPTIONS - 	select INTEL_GMA_HAVE_VBT - 	select EC_DELL_MEC5035 +diff --git a/src/mainboard/dell/gm45_latitude/Kconfig b/src/mainboard/dell/gm45_latitude/Kconfig +index 98ad18849c..4b026be2ba 100644 +--- a/src/mainboard/dell/gm45_latitude/Kconfig ++++ b/src/mainboard/dell/gm45_latitude/Kconfig +@@ -21,6 +21,8 @@ config BOARD_DELL_E6400 + 	select BOARD_DELL_GM45_LATITUDE_COMMON + if BOARD_DELL_GM45_LATITUDE_COMMON  +config INTEL_GMA_DPLL_REF_FREQ  +	default 100000000 -+ - config MAINBOARD_DIR - 	default "dell/e6400" + config MAINBOARD_DIR + 	default "dell/gm45_latitude"  diff --git a/src/northbridge/intel/gm45/Kconfig b/src/northbridge/intel/gm45/Kconfig  index fef0d735b3..fc5df8b11a 100644  --- a/src/northbridge/intel/gm45/Kconfig @@ -48,5 +47,5 @@ index fef0d735b3..fc5df8b11a 100644   	select VBOOT_STARTS_IN_BOOTBLOCK  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0019-nb-x4x-define-INTEL_GMA_DPLL_REF_FREQ.patch b/config/coreboot/default/patches/0019-nb-x4x-define-INTEL_GMA_DPLL_REF_FREQ.patch index 2edfaae3..cd1c919f 100644 --- a/config/coreboot/default/patches/0019-nb-x4x-define-INTEL_GMA_DPLL_REF_FREQ.patch +++ b/config/coreboot/default/patches/0019-nb-x4x-define-INTEL_GMA_DPLL_REF_FREQ.patch @@ -1,7 +1,7 @@ -From a683dffd774dbbe25cc77c0f7d3853232c17c2bf Mon Sep 17 00:00:00 2001 +From 5833266cabd5dd38596b20d3353eb7b105ffd235 Mon Sep 17 00:00:00 2001  From: Leah Rowe <info@minifree.org>  Date: Mon, 12 Aug 2024 02:15:24 +0100 -Subject: [PATCH 19/37] nb/x4x: define INTEL_GMA_DPLL_REF_FREQ +Subject: [PATCH 19/40] nb/x4x: define INTEL_GMA_DPLL_REF_FREQ  set it to 96MHz. fixes the following build error when  building for x4x boards e.g. gigabyte ga-g41m-es2l: @@ -48,5 +48,5 @@ index 097e11126c..6430319f6a 100644   	default 0x100000 if !SOUTHBRIDGE_INTEL_I82801GX  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0020-mb-dell-Convert-E6400-into-a-variant.patch b/config/coreboot/default/patches/0020-mb-dell-Convert-E6400-into-a-variant.patch deleted file mode 100644 index a0068142..00000000 --- a/config/coreboot/default/patches/0020-mb-dell-Convert-E6400-into-a-variant.patch +++ /dev/null @@ -1,243 +0,0 @@ -From a48ba23bb4a24730fa49b5a10b56c9de873dea8a Mon Sep 17 00:00:00 2001 -From: Nicholas Chin <nic.c3.14@gmail.com> -Date: Thu, 26 Sep 2024 19:48:26 -0600 -Subject: [PATCH 20/37] mb/dell: Convert E6400 into a variant - -All the GM45 Dell Latitudes should be nearly identical, so convert the -E6400 port into a variant so that future ports for the other systems can -share code with each other. - -Change-Id: I8094fce56eaaadb20aef173644cd3b2c0b008e95 -Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com> ---- - src/mainboard/dell/e6400/Makefile.mk          |  10 -------- - .../dell/{e6400 => gm45_latitude}/Kconfig     |  22 +++++++++++++----- - .../{e6400 => gm45_latitude}/Kconfig.name     |   0 - src/mainboard/dell/gm45_latitude/Makefile.mk  |  11 +++++++++ - .../dell/{e6400 => gm45_latitude}/acpi/ec.asl |   0 - .../acpi/ich9_pci_irqs.asl                    |   0 - .../{e6400 => gm45_latitude}/acpi/superio.asl |   0 - .../dell/{e6400 => gm45_latitude}/blc.c       |   0 - .../{e6400 => gm45_latitude}/board_info.txt   |   0 - .../dell/{e6400 => gm45_latitude}/bootblock.c |   0 - .../{e6400 => gm45_latitude}/cmos.default     |   0 - .../dell/{e6400 => gm45_latitude}/cmos.layout |   0 - .../dell/{e6400 => gm45_latitude}/cstates.c   |   0 - .../{e6400 => gm45_latitude}/devicetree.cb    |   1 - - .../dell/{e6400 => gm45_latitude}/dsdt.asl    |   0 - .../dell/{e6400 => gm45_latitude}/mainboard.c |   0 - .../dell/{e6400 => gm45_latitude}/romstage.c  |   0 - .../variants}/e6400/data.vbt                  | Bin - .../variants}/e6400/gma-mainboard.ads         |   0 - .../{ => gm45_latitude/variants}/e6400/gpio.c |   0 - .../variants}/e6400/hda_verb.c                |   0 - .../variants/e6400/overridetree.cb            |   7 ++++++ - 22 files changed, 34 insertions(+), 17 deletions(-) - delete mode 100644 src/mainboard/dell/e6400/Makefile.mk - rename src/mainboard/dell/{e6400 => gm45_latitude}/Kconfig (64%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/Kconfig.name (100%) - create mode 100644 src/mainboard/dell/gm45_latitude/Makefile.mk - rename src/mainboard/dell/{e6400 => gm45_latitude}/acpi/ec.asl (100%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/acpi/ich9_pci_irqs.asl (100%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/acpi/superio.asl (100%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/blc.c (100%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/board_info.txt (100%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/bootblock.c (100%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/cmos.default (100%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/cmos.layout (100%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/cstates.c (100%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/devicetree.cb (98%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/dsdt.asl (100%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/mainboard.c (100%) - rename src/mainboard/dell/{e6400 => gm45_latitude}/romstage.c (100%) - rename src/mainboard/dell/{ => gm45_latitude/variants}/e6400/data.vbt (100%) - rename src/mainboard/dell/{ => gm45_latitude/variants}/e6400/gma-mainboard.ads (100%) - rename src/mainboard/dell/{ => gm45_latitude/variants}/e6400/gpio.c (100%) - rename src/mainboard/dell/{ => gm45_latitude/variants}/e6400/hda_verb.c (100%) - create mode 100644 src/mainboard/dell/gm45_latitude/variants/e6400/overridetree.cb - -diff --git a/src/mainboard/dell/e6400/Makefile.mk b/src/mainboard/dell/e6400/Makefile.mk -deleted file mode 100644 -index ca3a82db48..0000000000 ---- a/src/mainboard/dell/e6400/Makefile.mk -+++ /dev/null -@@ -1,10 +0,0 @@ --## SPDX-License-Identifier: GPL-2.0-only -- --bootblock-y += bootblock.c -- --romstage-y += gpio.c -- --ramstage-y += cstates.c --ramstage-y += blc.c -- --ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads -diff --git a/src/mainboard/dell/e6400/Kconfig b/src/mainboard/dell/gm45_latitude/Kconfig -similarity index 64% -rename from src/mainboard/dell/e6400/Kconfig -rename to src/mainboard/dell/gm45_latitude/Kconfig -index 6fe1b1c456..ba76fb6e8c 100644 ---- a/src/mainboard/dell/e6400/Kconfig -+++ b/src/mainboard/dell/gm45_latitude/Kconfig -@@ -1,9 +1,7 @@ - ## SPDX-License-Identifier: GPL-2.0-only -  --if BOARD_DELL_E6400 -- --config BOARD_SPECIFIC_OPTIONS --	def_bool y -+config BOARD_DELL_GM45_LATITUDE_COMMON -+	def_bool n - 	select SYSTEM_TYPE_LAPTOP - 	select CPU_INTEL_SOCKET_P - 	select NORTHBRIDGE_INTEL_GM45 -@@ -19,19 +17,31 @@ config BOARD_SPECIFIC_OPTIONS - 	select INTEL_GMA_HAVE_VBT - 	select EC_DELL_MEC5035 -  -+ -+config BOARD_DELL_E6400 -+	select BOARD_DELL_GM45_LATITUDE_COMMON -+ -+if BOARD_DELL_GM45_LATITUDE_COMMON -+ - config INTEL_GMA_DPLL_REF_FREQ - 	default 100000000 -  - config MAINBOARD_DIR --	default "dell/e6400" -+	default "dell/gm45_latitude" -  - config MAINBOARD_PART_NUMBER - 	default "Latitude E6400" if BOARD_DELL_E6400 -  -+config OVERRIDE_DEVICETREE -+	default "variants/\$(CONFIG_VARIANT_DIR)/overridetree.cb" -+ -+config VARIANT_DIR -+	default "e6400" if BOARD_DELL_E6400 -+ - config USBDEBUG_HCD_INDEX - 	default 1 -  - config CBFS_SIZE - 	default 0x1A0000 -  --endif # BOARD_DELL_E6400 -+endif # BOARD_DELL_GM45_LATITUDE_COMMON -diff --git a/src/mainboard/dell/e6400/Kconfig.name b/src/mainboard/dell/gm45_latitude/Kconfig.name -similarity index 100% -rename from src/mainboard/dell/e6400/Kconfig.name -rename to src/mainboard/dell/gm45_latitude/Kconfig.name -diff --git a/src/mainboard/dell/gm45_latitude/Makefile.mk b/src/mainboard/dell/gm45_latitude/Makefile.mk -new file mode 100644 -index 0000000000..5295d5be22 ---- /dev/null -+++ b/src/mainboard/dell/gm45_latitude/Makefile.mk -@@ -0,0 +1,11 @@ -+## SPDX-License-Identifier: GPL-2.0-only -+ -+bootblock-y += bootblock.c -+ -+romstage-y += variants/$(VARIANT_DIR)/gpio.c -+ -+ramstage-y += cstates.c -+ramstage-y += blc.c -+ramstage-y += variants/$(VARIANT_DIR)/hda_verb.c -+ -+ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += variants/$(VARIANT_DIR)/gma-mainboard.ads -diff --git a/src/mainboard/dell/e6400/acpi/ec.asl b/src/mainboard/dell/gm45_latitude/acpi/ec.asl -similarity index 100% -rename from src/mainboard/dell/e6400/acpi/ec.asl -rename to src/mainboard/dell/gm45_latitude/acpi/ec.asl -diff --git a/src/mainboard/dell/e6400/acpi/ich9_pci_irqs.asl b/src/mainboard/dell/gm45_latitude/acpi/ich9_pci_irqs.asl -similarity index 100% -rename from src/mainboard/dell/e6400/acpi/ich9_pci_irqs.asl -rename to src/mainboard/dell/gm45_latitude/acpi/ich9_pci_irqs.asl -diff --git a/src/mainboard/dell/e6400/acpi/superio.asl b/src/mainboard/dell/gm45_latitude/acpi/superio.asl -similarity index 100% -rename from src/mainboard/dell/e6400/acpi/superio.asl -rename to src/mainboard/dell/gm45_latitude/acpi/superio.asl -diff --git a/src/mainboard/dell/e6400/blc.c b/src/mainboard/dell/gm45_latitude/blc.c -similarity index 100% -rename from src/mainboard/dell/e6400/blc.c -rename to src/mainboard/dell/gm45_latitude/blc.c -diff --git a/src/mainboard/dell/e6400/board_info.txt b/src/mainboard/dell/gm45_latitude/board_info.txt -similarity index 100% -rename from src/mainboard/dell/e6400/board_info.txt -rename to src/mainboard/dell/gm45_latitude/board_info.txt -diff --git a/src/mainboard/dell/e6400/bootblock.c b/src/mainboard/dell/gm45_latitude/bootblock.c -similarity index 100% -rename from src/mainboard/dell/e6400/bootblock.c -rename to src/mainboard/dell/gm45_latitude/bootblock.c -diff --git a/src/mainboard/dell/e6400/cmos.default b/src/mainboard/dell/gm45_latitude/cmos.default -similarity index 100% -rename from src/mainboard/dell/e6400/cmos.default -rename to src/mainboard/dell/gm45_latitude/cmos.default -diff --git a/src/mainboard/dell/e6400/cmos.layout b/src/mainboard/dell/gm45_latitude/cmos.layout -similarity index 100% -rename from src/mainboard/dell/e6400/cmos.layout -rename to src/mainboard/dell/gm45_latitude/cmos.layout -diff --git a/src/mainboard/dell/e6400/cstates.c b/src/mainboard/dell/gm45_latitude/cstates.c -similarity index 100% -rename from src/mainboard/dell/e6400/cstates.c -rename to src/mainboard/dell/gm45_latitude/cstates.c -diff --git a/src/mainboard/dell/e6400/devicetree.cb b/src/mainboard/dell/gm45_latitude/devicetree.cb -similarity index 98% -rename from src/mainboard/dell/e6400/devicetree.cb -rename to src/mainboard/dell/gm45_latitude/devicetree.cb -index e9f3915d17..76dae87153 100644 ---- a/src/mainboard/dell/e6400/devicetree.cb -+++ b/src/mainboard/dell/gm45_latitude/devicetree.cb -@@ -15,7 +15,6 @@ chip northbridge/intel/gm45 - 	register "pci_mmio_size" = "2048" -  - 	device domain 0 on --		subsystemid 0x1028 0x0233 inherit - 		ops gm45_pci_domain_ops -  - 		device pci 00.0 on end # host bridge -diff --git a/src/mainboard/dell/e6400/dsdt.asl b/src/mainboard/dell/gm45_latitude/dsdt.asl -similarity index 100% -rename from src/mainboard/dell/e6400/dsdt.asl -rename to src/mainboard/dell/gm45_latitude/dsdt.asl -diff --git a/src/mainboard/dell/e6400/mainboard.c b/src/mainboard/dell/gm45_latitude/mainboard.c -similarity index 100% -rename from src/mainboard/dell/e6400/mainboard.c -rename to src/mainboard/dell/gm45_latitude/mainboard.c -diff --git a/src/mainboard/dell/e6400/romstage.c b/src/mainboard/dell/gm45_latitude/romstage.c -similarity index 100% -rename from src/mainboard/dell/e6400/romstage.c -rename to src/mainboard/dell/gm45_latitude/romstage.c -diff --git a/src/mainboard/dell/e6400/data.vbt b/src/mainboard/dell/gm45_latitude/variants/e6400/data.vbt -similarity index 100% -rename from src/mainboard/dell/e6400/data.vbt -rename to src/mainboard/dell/gm45_latitude/variants/e6400/data.vbt -diff --git a/src/mainboard/dell/e6400/gma-mainboard.ads b/src/mainboard/dell/gm45_latitude/variants/e6400/gma-mainboard.ads -similarity index 100% -rename from src/mainboard/dell/e6400/gma-mainboard.ads -rename to src/mainboard/dell/gm45_latitude/variants/e6400/gma-mainboard.ads -diff --git a/src/mainboard/dell/e6400/gpio.c b/src/mainboard/dell/gm45_latitude/variants/e6400/gpio.c -similarity index 100% -rename from src/mainboard/dell/e6400/gpio.c -rename to src/mainboard/dell/gm45_latitude/variants/e6400/gpio.c -diff --git a/src/mainboard/dell/e6400/hda_verb.c b/src/mainboard/dell/gm45_latitude/variants/e6400/hda_verb.c -similarity index 100% -rename from src/mainboard/dell/e6400/hda_verb.c -rename to src/mainboard/dell/gm45_latitude/variants/e6400/hda_verb.c -diff --git a/src/mainboard/dell/gm45_latitude/variants/e6400/overridetree.cb b/src/mainboard/dell/gm45_latitude/variants/e6400/overridetree.cb -new file mode 100644 -index 0000000000..acc34a2252 ---- /dev/null -+++ b/src/mainboard/dell/gm45_latitude/variants/e6400/overridetree.cb -@@ -0,0 +1,7 @@ -+## SPDX-License-Identifier: GPL-2.0-or-later -+ -+chip northbridge/intel/gm45 -+	device domain 0 on -+		subsystemid 0x1028 0x0233 inherit -+	end -+end ---  -2.39.5 - diff --git a/config/coreboot/default/patches/0021-mb-dell-gm45_latitudes-Add-E4300-variant.patch b/config/coreboot/default/patches/0020-mb-dell-gm45_latitudes-Add-E4300-variant.patch index af893982..3b2d59ce 100644 --- a/config/coreboot/default/patches/0021-mb-dell-gm45_latitudes-Add-E4300-variant.patch +++ b/config/coreboot/default/patches/0020-mb-dell-gm45_latitudes-Add-E4300-variant.patch @@ -1,7 +1,7 @@ -From b87e6774f0407ea48610c83ea54ab6a4b4a78a24 Mon Sep 17 00:00:00 2001 +From 75620139fe2bd6898d51dd7bd02e1031369feeec Mon Sep 17 00:00:00 2001  From: Nicholas Chin <nic.c3.14@gmail.com>  Date: Thu, 26 Sep 2024 19:51:25 -0600 -Subject: [PATCH 21/37] mb/dell/gm45_latitudes: Add E4300 variant +Subject: [PATCH 20/40] mb/dell/gm45_latitudes: Add E4300 variant  Change-Id: I0f2059501b11be103187e3ce1a7c04ab85ae63d2  Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com> @@ -21,10 +21,10 @@ Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com>   create mode 100644 src/mainboard/dell/gm45_latitude/variants/e4300/overridetree.cb  diff --git a/src/mainboard/dell/gm45_latitude/Kconfig b/src/mainboard/dell/gm45_latitude/Kconfig -index ba76fb6e8c..144f9bcdf0 100644 +index 4b026be2ba..9f0f56e304 100644  --- a/src/mainboard/dell/gm45_latitude/Kconfig  +++ b/src/mainboard/dell/gm45_latitude/Kconfig -@@ -21,6 +21,9 @@ config BOARD_DELL_GM45_LATITUDE_COMMON +@@ -20,6 +20,9 @@ config BOARD_DELL_GM45_LATITUDE_COMMON   config BOARD_DELL_E6400   	select BOARD_DELL_GM45_LATITUDE_COMMON @@ -32,9 +32,9 @@ index ba76fb6e8c..144f9bcdf0 100644  +	select BOARD_DELL_GM45_LATITUDE_COMMON  +   if BOARD_DELL_GM45_LATITUDE_COMMON -    config INTEL_GMA_DPLL_REF_FREQ -@@ -31,12 +34,14 @@ config MAINBOARD_DIR + 	default 100000000 +@@ -29,12 +32,14 @@ config MAINBOARD_DIR   config MAINBOARD_PART_NUMBER   	default "Latitude E6400" if BOARD_DELL_E6400 @@ -328,5 +328,5 @@ index 0000000000..20dfa245fb  +	end  +end  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0022-mb-dell-Add-S3-SMI-handler-for-Dell-Latitudes.patch b/config/coreboot/default/patches/0021-mb-dell-Add-S3-SMI-handler-for-Dell-Latitudes.patch index bbdce358..dcd75bb6 100644 --- a/config/coreboot/default/patches/0022-mb-dell-Add-S3-SMI-handler-for-Dell-Latitudes.patch +++ b/config/coreboot/default/patches/0021-mb-dell-Add-S3-SMI-handler-for-Dell-Latitudes.patch @@ -1,7 +1,7 @@ -From 0bc9ca409793836dcdb386db97b7a9464d92a973 Mon Sep 17 00:00:00 2001 +From 26862554523e08ea1d1cd18cfd09e3434b12e2a3 Mon Sep 17 00:00:00 2001  From: Nicholas Chin <nic.c3.14@gmail.com>  Date: Fri, 3 May 2024 16:31:12 -0600 -Subject: [PATCH 22/37] mb/dell: Add S3 SMI handler for Dell Latitudes +Subject: [PATCH 21/40] mb/dell: Add S3 SMI handler for Dell Latitudes  Integrate the previously added mec5035_smi_sleep() function into  mainboard code to fix S3 suspend on the SNB/IVB Latitudes and the E7240. @@ -12,19 +12,19 @@ the power LED while in S3. Without it, all LEDs turn off during S3.  Change-Id: Ic0d887f75be13c3fb9f6df62153ac458895e0283  Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com>  --- - src/mainboard/dell/e7240/smihandler.c            | 9 +++++++++   src/mainboard/dell/gm45_latitude/smihandler.c    | 9 +++++++++ + src/mainboard/dell/haswell_latitude/smihandler.c | 9 +++++++++   src/mainboard/dell/snb_ivb_latitude/smihandler.c | 9 +++++++++   3 files changed, 27 insertions(+) - create mode 100644 src/mainboard/dell/e7240/smihandler.c   create mode 100644 src/mainboard/dell/gm45_latitude/smihandler.c + create mode 100644 src/mainboard/dell/haswell_latitude/smihandler.c   create mode 100644 src/mainboard/dell/snb_ivb_latitude/smihandler.c -diff --git a/src/mainboard/dell/e7240/smihandler.c b/src/mainboard/dell/e7240/smihandler.c +diff --git a/src/mainboard/dell/gm45_latitude/smihandler.c b/src/mainboard/dell/gm45_latitude/smihandler.c  new file mode 100644  index 0000000000..00e55b51db  --- /dev/null -+++ b/src/mainboard/dell/e7240/smihandler.c ++++ b/src/mainboard/dell/gm45_latitude/smihandler.c  @@ -0,0 +1,9 @@  +/* SPDX-License-Identifier: GPL-2.0-only */  + @@ -35,11 +35,11 @@ index 0000000000..00e55b51db  +{  +	mec5035_smi_sleep(slp_typ);  +} -diff --git a/src/mainboard/dell/gm45_latitude/smihandler.c b/src/mainboard/dell/gm45_latitude/smihandler.c +diff --git a/src/mainboard/dell/haswell_latitude/smihandler.c b/src/mainboard/dell/haswell_latitude/smihandler.c  new file mode 100644  index 0000000000..00e55b51db  --- /dev/null -+++ b/src/mainboard/dell/gm45_latitude/smihandler.c ++++ b/src/mainboard/dell/haswell_latitude/smihandler.c  @@ -0,0 +1,9 @@  +/* SPDX-License-Identifier: GPL-2.0-only */  + @@ -66,5 +66,5 @@ index 0000000000..00e55b51db  +	mec5035_smi_sleep(slp_typ);  +}  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0023-ec-dell-mec5035-Route-power-button-event-to-host.patch b/config/coreboot/default/patches/0022-ec-dell-mec5035-Route-power-button-event-to-host.patch index ab01c935..ab85a389 100644 --- a/config/coreboot/default/patches/0023-ec-dell-mec5035-Route-power-button-event-to-host.patch +++ b/config/coreboot/default/patches/0022-ec-dell-mec5035-Route-power-button-event-to-host.patch @@ -1,7 +1,7 @@ -From d91dc168d6b8eca5e78aef9e48571d6edb156d45 Mon Sep 17 00:00:00 2001 +From 849f0aba544d135e2028092862e5f030813c868e Mon Sep 17 00:00:00 2001  From: Nicholas Chin <nic.c3.14@gmail.com>  Date: Tue, 18 Jun 2024 21:31:08 -0600 -Subject: [PATCH 23/37] ec/dell/mec5035: Route power button event to host +Subject: [PATCH 22/40] ec/dell/mec5035: Route power button event to host  If command 0x3e with an argument of 1 isn't sent to the EC, pressing the  power button results in the EC powering off the system without letting @@ -88,5 +88,5 @@ index 8d4fded28b..51422598c4 100644   void mec5035_sleep_enable(void);  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0024-Disable-compression-on-refcode-insertion.patch b/config/coreboot/default/patches/0023-Disable-compression-on-refcode-insertion.patch index c557e9d7..17e630e3 100644 --- a/config/coreboot/default/patches/0024-Disable-compression-on-refcode-insertion.patch +++ b/config/coreboot/default/patches/0023-Disable-compression-on-refcode-insertion.patch @@ -1,7 +1,7 @@ -From b6bd33b0430f72c2fce16a3b1e41927ef540923b Mon Sep 17 00:00:00 2001 +From 89ecd79ab46f56c65c0b5720d1c84b12698a02b4 Mon Sep 17 00:00:00 2001  From: Leah Rowe <info@minifree.org>  Date: Tue, 31 Dec 2024 14:42:24 +0000 -Subject: [PATCH 24/37] Disable compression on refcode insertion +Subject: [PATCH 23/40] Disable compression on refcode insertion  Compression is not reliably reproducible. In an lbmk release  context, this means we cannot rely on vendorfile insertion. @@ -14,7 +14,7 @@ Signed-off-by: Leah Rowe <info@minifree.org>   1 file changed, 1 insertion(+), 1 deletion(-)  diff --git a/Makefile.mk b/Makefile.mk -index 3969bfbd05..15346569f8 100644 +index 218e388bb5..a2163c4644 100644  --- a/Makefile.mk  +++ b/Makefile.mk  @@ -1392,7 +1392,7 @@ endif @@ -27,5 +27,5 @@ index 3969bfbd05..15346569f8 100644   cbfs-files-$(CONFIG_SEABIOS_VGA_COREBOOT) += vgaroms/seavgabios.bin   vgaroms/seavgabios.bin-file := $(CONFIG_PAYLOAD_VGABIOS_FILE)  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0025-nb-intel-Disable-stack-overflow-debug-options.patch b/config/coreboot/default/patches/0024-nb-intel-Disable-stack-overflow-debug-options.patch index 696be518..cc9504e9 100644 --- a/config/coreboot/default/patches/0025-nb-intel-Disable-stack-overflow-debug-options.patch +++ b/config/coreboot/default/patches/0024-nb-intel-Disable-stack-overflow-debug-options.patch @@ -1,7 +1,7 @@ -From fc4c65f3bb807b9fc766745a70f92729b0b8d99e Mon Sep 17 00:00:00 2001 +From df60dac9dbaf0c71008dbead7dc1a8c8881c5e33 Mon Sep 17 00:00:00 2001  From: Leah Rowe <leah@libreboot.org>  Date: Mon, 21 Apr 2025 02:58:47 +0100 -Subject: [PATCH 25/37] nb/intel/*: Disable stack overflow debug options +Subject: [PATCH 24/40] nb/intel/*: Disable stack overflow debug options  Signed-off-by: Leah Rowe <leah@libreboot.org>  --- @@ -183,5 +183,5 @@ index 6430319f6a..1803ef5733 100644  +   endif  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0029-mb-dell-Add-Optiplex-780-MT-x4x-ICH10.patch b/config/coreboot/default/patches/0025-mb-dell-Add-Optiplex-780-MT-x4x-ICH10.patch index eb9263b9..70bb9ae9 100644 --- a/config/coreboot/default/patches/0029-mb-dell-Add-Optiplex-780-MT-x4x-ICH10.patch +++ b/config/coreboot/default/patches/0025-mb-dell-Add-Optiplex-780-MT-x4x-ICH10.patch @@ -1,7 +1,7 @@ -From 75cc0ea09234064318046624845b0afc5afb0ce5 Mon Sep 17 00:00:00 2001 +From c3af549f5b6431475f3d180eb3b3041d9bfc5d81 Mon Sep 17 00:00:00 2001  From: Nicholas Chin <nic.c3.14@gmail.com>  Date: Mon, 30 Sep 2024 20:44:38 -0400 -Subject: [PATCH 29/37] mb/dell: Add Optiplex 780 MT (x4x/ICH10) +Subject: [PATCH 25/40] mb/dell: Add Optiplex 780 MT (x4x/ICH10)  Change-Id: Idb45737ce95bfd26e978323c650de7d308b5079c  Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com> @@ -704,5 +704,5 @@ index 0000000000..555b1c1f5c  +	end  +end  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0030-mb-dell-optiplex_780-Add-USFF-variant.patch b/config/coreboot/default/patches/0026-mb-dell-optiplex_780-Add-USFF-variant.patch index 8ce7471b..231e303e 100644 --- a/config/coreboot/default/patches/0030-mb-dell-optiplex_780-Add-USFF-variant.patch +++ b/config/coreboot/default/patches/0026-mb-dell-optiplex_780-Add-USFF-variant.patch @@ -1,7 +1,7 @@ -From 6725ec0bb976c61cbe87e61bf0e8b02e38d14de9 Mon Sep 17 00:00:00 2001 +From bb14741af8e4a16d3d098d79fb8df0c3a45e6ccb Mon Sep 17 00:00:00 2001  From: Nicholas Chin <nic.c3.14@gmail.com>  Date: Wed, 30 Oct 2024 20:55:25 -0600 -Subject: [PATCH 30/37] mb/dell/optiplex_780: Add USFF variant +Subject: [PATCH 26/40] mb/dell/optiplex_780: Add USFF variant  Change-Id: I3aa21c743749f4a11a2501f4c121316bd2f1a103  Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com> @@ -322,5 +322,5 @@ index 0000000000..555b1c1f5c  +	end  +end  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0027-soc-intel-skylake-Enable-4E-4F-PNP-I-O-ports-in-boot.patch b/config/coreboot/default/patches/0027-soc-intel-skylake-Enable-4E-4F-PNP-I-O-ports-in-boot.patch deleted file mode 100644 index 9d75cec6..00000000 --- a/config/coreboot/default/patches/0027-soc-intel-skylake-Enable-4E-4F-PNP-I-O-ports-in-boot.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 3bb65b7f2a02ecb93e15ae037da38ad8f812747b Mon Sep 17 00:00:00 2001 -From: Mate Kukri <km@mkukri.xyz> -Date: Fri, 22 Nov 2024 21:26:48 +0000 -Subject: [PATCH 27/37] soc/intel/skylake: Enable 4E/4F PNP I/O ports in - bootblock - -Change-Id: I57c9d8a9513a268e2ca6a0abd1306cd038598173 -Signed-off-by: Mate Kukri <km@mkukri.xyz> ---- - src/soc/intel/skylake/bootblock/pch.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/soc/intel/skylake/bootblock/pch.c b/src/soc/intel/skylake/bootblock/pch.c -index df00bb85a9..beaece960b 100644 ---- a/src/soc/intel/skylake/bootblock/pch.c -+++ b/src/soc/intel/skylake/bootblock/pch.c -@@ -100,8 +100,8 @@ static void soc_config_pwrmbase(void) -  - void pch_early_iorange_init(void) - { --	uint16_t io_enables = LPC_IOE_SUPERIO_2E_2F | LPC_IOE_KBC_60_64 | --			LPC_IOE_EC_62_66; -+	uint16_t io_enables = LPC_IOE_EC_4E_4F | LPC_IOE_SUPERIO_2E_2F | -+			LPC_IOE_KBC_60_64 | LPC_IOE_EC_62_66; -  - 	const config_t *config = config_of_soc(); -  ---  -2.39.5 - diff --git a/config/coreboot/default/patches/0036-src-intel-x4x-Disable-stack-overflow-debug.patch b/config/coreboot/default/patches/0027-src-intel-x4x-Disable-stack-overflow-debug.patch index 2e06ad79..94186a30 100644 --- a/config/coreboot/default/patches/0036-src-intel-x4x-Disable-stack-overflow-debug.patch +++ b/config/coreboot/default/patches/0027-src-intel-x4x-Disable-stack-overflow-debug.patch @@ -1,7 +1,7 @@ -From 8dcd86c34d92b9b17bcfe4c7c61793042dc97268 Mon Sep 17 00:00:00 2001 +From 1685de1beee49456e9f6f578ca6e37219fe7dfff Mon Sep 17 00:00:00 2001  From: Leah Rowe <leah@libreboot.org>  Date: Mon, 6 Jan 2025 01:53:53 +0000 -Subject: [PATCH 36/37] src/intel/x4x: Disable stack overflow debug +Subject: [PATCH 27/40] src/intel/x4x: Disable stack overflow debug  Signed-off-by: Leah Rowe <leah@libreboot.org>  --- @@ -29,5 +29,5 @@ index 1803ef5733..7129aabf72 100644   config DOMAIN_RESOURCE_32BIT_LIMIT   	default 0xfec00000  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0028-hp-8300cmt-remove-xhci_overcurrent_mapping.patch b/config/coreboot/default/patches/0028-hp-8300cmt-remove-xhci_overcurrent_mapping.patch new file mode 100644 index 00000000..c42b3cf0 --- /dev/null +++ b/config/coreboot/default/patches/0028-hp-8300cmt-remove-xhci_overcurrent_mapping.patch @@ -0,0 +1,42 @@ +From 6f54ed4b0622c7772561760ea4b435bd236ac834 Mon Sep 17 00:00:00 2001 +From: Leah Rowe <leah@libreboot.org> +Date: Tue, 22 Apr 2025 10:21:59 +0100 +Subject: [PATCH 28/40] hp/8300cmt: remove xhci_overcurrent_mapping + +No longer needed, as per the following commit: + +commit a3d1e6c4806e6c0e2e744be3a03fce12f21778d1 +Author: Keith Hui <buurin@gmail.com> +Date:   Tue Dec 31 18:19:31 2024 -0500 + +    sb/intel/bd82x6x: Apply EHCI mapping to xhci_overcurrent_mapping + +Removing this from the devicetree also allows the +board to compile, otherwise an error is thrown: + +build/mainboard/hp/compaq_elite_8300_cmt/static.c:147:10: error: 'const struct southbridge_intel_bd82x6x_config' has no member named 'xhci_overcurrent_mapping' +  147 |         .xhci_overcurrent_mapping = 0x00000c03, +      |          ^~~~~~~~~~~~~~~~~~~~~~~~ +build/mainboard/hp/compaq_elite_8300_cmt/static.c:147:37: error: excess elements in struct initializer [-Werror] +  147 |         .xhci_overcurrent_mapping = 0x00000c03, + +Signed-off-by: Leah Rowe <leah@libreboot.org> +--- + src/mainboard/hp/compaq_elite_8300_cmt/devicetree.cb | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/mainboard/hp/compaq_elite_8300_cmt/devicetree.cb b/src/mainboard/hp/compaq_elite_8300_cmt/devicetree.cb +index 3d21739b72..3a0b6d5c59 100644 +--- a/src/mainboard/hp/compaq_elite_8300_cmt/devicetree.cb ++++ b/src/mainboard/hp/compaq_elite_8300_cmt/devicetree.cb +@@ -25,7 +25,6 @@ chip northbridge/intel/sandybridge + 			register "spi_lvscc" = "0x2005" + 			register "spi_uvscc" = "0x2005" + 			register "superspeed_capable_ports" = "0x0000000f" +-			register "xhci_overcurrent_mapping" = "0x00000c03" + 			register "xhci_switchable_ports" = "0x0000000f" + 			register "usb_port_config" = "{ + 				{ 1, 0, 0 }, +--  +2.47.3 + diff --git a/config/coreboot/default/patches/0028-mb-lenovo-Add-ThinkPad-T480-and-ThinkPad-T480s.patch b/config/coreboot/default/patches/0028-mb-lenovo-Add-ThinkPad-T480-and-ThinkPad-T480s.patch deleted file mode 100644 index df71dc47..00000000 --- a/config/coreboot/default/patches/0028-mb-lenovo-Add-ThinkPad-T480-and-ThinkPad-T480s.patch +++ /dev/null @@ -1,2232 +0,0 @@ -From b515ba5b0cd02dc1771f27eaa716582b0827a638 Mon Sep 17 00:00:00 2001 -From: Mate Kukri <km@mkukri.xyz> -Date: Tue, 31 Dec 2024 22:49:15 +0000 -Subject: [PATCH 28/37] mb/lenovo: Add ThinkPad T480 and ThinkPad T480s - -These machine have BootGuard fused and requires deguard to -boot coreboot. - -Known issues: -- Alpine Ridge Thunderbolt 3 controller does not work -- Some Fn+F{1-12} keys aren't handled correctly -- Nvidia dGPU is finicky -  - Needs option ROM -  - Power enable code is buggy -  - Nouveau only works on linux 6.8-6.9 -- Headphone jack isn't detected as plugged in despite correct verbs - -Thanks to Leah Rowe for helping with the T480s. - -Signed-off-by: Mate Kukri <km@mkukri.xyz> -Change-Id: I19d421412c771c1f242f6ff39453f824fa866163 ---- - src/device/pci_rom.c                          |   4 +- - src/ec/lenovo/h8/acpi/ec.asl                  |   2 +- - src/ec/lenovo/h8/bluetooth.c                  |   6 +- - src/ec/lenovo/h8/wwan.c                       |   6 +- - src/mainboard/lenovo/sklkbl_thinkpad/Kconfig  |  57 +++++ - .../lenovo/sklkbl_thinkpad/Kconfig.name       |   7 + - .../lenovo/sklkbl_thinkpad/Makefile.mk        |  73 +++++++ - .../lenovo/sklkbl_thinkpad/acpi/ec.asl        |  12 ++ - .../lenovo/sklkbl_thinkpad/acpi/superio.asl   |   3 + - .../lenovo/sklkbl_thinkpad/bootblock.c        |  60 ++++++ - .../lenovo/sklkbl_thinkpad/devicetree.cb      |  71 ++++++ - src/mainboard/lenovo/sklkbl_thinkpad/dsdt.asl |  33 +++ - src/mainboard/lenovo/sklkbl_thinkpad/ec.c     | 153 +++++++++++++ - src/mainboard/lenovo/sklkbl_thinkpad/ec.h     |  99 +++++++++ - src/mainboard/lenovo/sklkbl_thinkpad/gpio.h   |   8 + - .../lenovo/sklkbl_thinkpad/ramstage.c         | 105 +++++++++ - .../sklkbl_thinkpad/variants/t480/data.vbt    | Bin 0 -> 4106 bytes - .../variants/t480/gma-mainboard.ads           |  19 ++ - .../sklkbl_thinkpad/variants/t480/gpio.c      | 203 ++++++++++++++++++ - .../sklkbl_thinkpad/variants/t480/hda_verb.c  |  90 ++++++++ - .../variants/t480/memory_init_params.c        |  20 ++ - .../variants/t480/overridetree.cb             | 103 +++++++++ - .../sklkbl_thinkpad/variants/t480s/data.vbt   | Bin 0 -> 4106 bytes - .../variants/t480s/gma-mainboard.ads          |  19 ++ - .../sklkbl_thinkpad/variants/t480s/gpio.c     | 199 +++++++++++++++++ - .../sklkbl_thinkpad/variants/t480s/hda_verb.c |  90 ++++++++ - .../variants/t480s/memory_init_params.c       |  44 ++++ - .../variants/t480s/overridetree.cb            | 103 +++++++++ - .../variants/t480s/spd/spd_0.bin              | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_1.bin              | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_10.bin             | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_11.bin             | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_12.bin             | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_13.bin             | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_14.bin             | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_15.bin             | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_16.bin             | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_17.bin             | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_18.bin             | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_19.bin             | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_2.bin              | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_20.bin             | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_3.bin              | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_4.bin              | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_5.bin              | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_6.bin              | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_7.bin              | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_8.bin              | Bin 0 -> 512 bytes - .../variants/t480s/spd/spd_9.bin              | Bin 0 -> 512 bytes - 49 files changed, 1583 insertions(+), 6 deletions(-) - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/Kconfig - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/Kconfig.name - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/Makefile.mk - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/acpi/ec.asl - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/acpi/superio.asl - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/bootblock.c - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/devicetree.cb - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/dsdt.asl - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/ec.c - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/ec.h - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/gpio.h - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/ramstage.c - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/data.vbt - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gma-mainboard.ads - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gpio.c - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/hda_verb.c - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/memory_init_params.c - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/overridetree.cb - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/data.vbt - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/gma-mainboard.ads - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/gpio.c - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/hda_verb.c - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/memory_init_params.c - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/overridetree.cb - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_0.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_1.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_10.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_11.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_12.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_13.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_14.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_15.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_16.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_17.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_18.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_19.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_2.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_20.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_3.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_4.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_5.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_6.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_7.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_8.bin - create mode 100644 src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_9.bin - -diff --git a/src/device/pci_rom.c b/src/device/pci_rom.c -index dc41ef14ce..bba98d9dea 100644 ---- a/src/device/pci_rom.c -+++ b/src/device/pci_rom.c -@@ -396,14 +396,16 @@ void pci_rom_ssdt(const struct device *device) - 		rom = cbrom; - 	} -  -+#if 0 - 	const char *scope = acpi_device_path(device); - 	if (!scope) { - 		printk(BIOS_ERR, "%s: Missing ACPI scope\n", dev_path(device)); - 		return; - 	} -+#endif -  - 	/* write _ROM method */ --	acpigen_write_scope(scope); -+	acpigen_write_scope("\\_SB.PCI0.RP01.PEGP"); - 	acpigen_write_rom((void *)rom, rom->size * 512); - 	acpigen_pop_len(); /* pop scope */ - } -diff --git a/src/ec/lenovo/h8/acpi/ec.asl b/src/ec/lenovo/h8/acpi/ec.asl -index bc54d3b422..8f4a8e1986 100644 ---- a/src/ec/lenovo/h8/acpi/ec.asl -+++ b/src/ec/lenovo/h8/acpi/ec.asl -@@ -331,7 +331,7 @@ Device(EC) - #include "sleepbutton.asl" - #include "lid.asl" - #include "beep.asl" --#include "thermal.asl" -+//#include "thermal.asl" - #include "systemstatus.asl" - #include "thinkpad.asl" - } -diff --git a/src/ec/lenovo/h8/bluetooth.c b/src/ec/lenovo/h8/bluetooth.c -index 16fc8dce39..be71a24ced 100644 ---- a/src/ec/lenovo/h8/bluetooth.c -+++ b/src/ec/lenovo/h8/bluetooth.c -@@ -1,6 +1,6 @@ - /* SPDX-License-Identifier: GPL-2.0-only */ -  --#include <southbridge/intel/common/gpio.h> -+// #include <southbridge/intel/common/gpio.h> - #include <console/console.h> - #include <device/device.h> - #include <ec/acpi/ec.h> -@@ -28,16 +28,18 @@ bool h8_has_bdc(const struct device *dev) - { - 	struct ec_lenovo_h8_config *conf = dev->chip_info; -  --	if (!conf->has_bdc_detection) { -+	if (1 || !conf->has_bdc_detection) { - 		printk(BIOS_INFO, "H8: BDC detection not implemented. " - 				  "Assuming BDC installed\n"); - 		return true; - 	} -  -+#if 0 - 	if (get_gpio(conf->bdc_gpio_num) == conf->bdc_gpio_lvl) { - 		printk(BIOS_INFO, "H8: BDC installed\n"); - 		return true; - 	} -+#endif -  - 	printk(BIOS_INFO, "H8: BDC not installed\n"); - 	return false; -diff --git a/src/ec/lenovo/h8/wwan.c b/src/ec/lenovo/h8/wwan.c -index 685886fcce..5cdcf77406 100644 ---- a/src/ec/lenovo/h8/wwan.c -+++ b/src/ec/lenovo/h8/wwan.c -@@ -1,6 +1,6 @@ - /* SPDX-License-Identifier: GPL-2.0-only */ -  --#include <southbridge/intel/common/gpio.h> -+// #include <southbridge/intel/common/gpio.h> - #include <console/console.h> - #include <device/device.h> - #include <ec/acpi/ec.h> -@@ -26,16 +26,18 @@ bool h8_has_wwan(const struct device *dev) - { - 	struct ec_lenovo_h8_config *conf = dev->chip_info; -  --	if (!conf->has_wwan_detection) { -+	if (1 || !conf->has_wwan_detection) { - 		printk(BIOS_INFO, "H8: WWAN detection not implemented. " - 				  "Assuming WWAN installed\n"); - 		return true; - 	} -  -+#if 0 - 	if (get_gpio(conf->wwan_gpio_num) == conf->wwan_gpio_lvl) { - 		printk(BIOS_INFO, "H8: WWAN installed\n"); - 		return true; - 	} -+#endif -  - 	printk(BIOS_INFO, "H8: WWAN not installed\n"); - 	return false; -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/Kconfig b/src/mainboard/lenovo/sklkbl_thinkpad/Kconfig -new file mode 100644 -index 0000000000..4998672943 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/Kconfig -@@ -0,0 +1,57 @@ -+# SPDX-License-Identifier: GPL-2.0-only -+ -+config BOARD_LENOVO_SKLKBL_THINKPAD_COMMON -+	bool -+	select BOARD_ROMSIZE_KB_16384 -+	select EC_LENOVO_H8 -+	select EC_LENOVO_PMH7 -+	select H8_HAS_BAT_THRESHOLDS_IMPL -+	select H8_HAS_LEDLOGO -+	select H8_HAS_PRIMARY_FN_KEYS -+	select HAVE_ACPI_RESUME -+	select HAVE_ACPI_TABLES -+	select INTEL_GMA_HAVE_VBT -+	select INTEL_INT15 -+	select MAINBOARD_HAS_LIBGFXINIT -+	select MAINBOARD_HAS_TPM2 -+	select MAINBOARD_USES_IFD_GBE_REGION -+	select MEMORY_MAPPED_TPM -+	select SOC_INTEL_COMMON_BLOCK_HDA_VERB -+	select SOC_INTEL_KABYLAKE -+	select SPD_READ_BY_WORD -+	select SYSTEM_TYPE_LAPTOP -+ -+config BOARD_LENOVO_T480 -+	bool -+	select BOARD_LENOVO_SKLKBL_THINKPAD_COMMON -+ -+config BOARD_LENOVO_T480S -+	bool -+	select BOARD_LENOVO_SKLKBL_THINKPAD_COMMON -+ -+if BOARD_LENOVO_SKLKBL_THINKPAD_COMMON -+ -+config MAINBOARD_DIR -+	default "lenovo/sklkbl_thinkpad" -+ -+config VARIANT_DIR -+	default "t480" if BOARD_LENOVO_T480 -+	default "t480s" if BOARD_LENOVO_T480S -+ -+config OVERRIDE_DEVICETREE -+	default "variants/\$(CONFIG_VARIANT_DIR)/overridetree.cb" -+ -+config MAINBOARD_PART_NUMBER -+	default "T480" if BOARD_LENOVO_T480 -+	default "T480s" if BOARD_LENOVO_T480S -+ -+config CBFS_SIZE -+	default 0x900000 -+ -+config DIMM_MAX -+	default 2 -+ -+config DIMM_SPD_SIZE -+	default 512	# DDR4 -+ -+endif -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/Kconfig.name b/src/mainboard/lenovo/sklkbl_thinkpad/Kconfig.name -new file mode 100644 -index 0000000000..abc273f387 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/Kconfig.name -@@ -0,0 +1,7 @@ -+# SPDX-License-Identifier: GPL-2.0-only -+ -+config BOARD_LENOVO_T480 -+	bool "ThinkPad T480" -+ -+config BOARD_LENOVO_T480S -+	bool "ThinkPad T480s" -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/Makefile.mk b/src/mainboard/lenovo/sklkbl_thinkpad/Makefile.mk -new file mode 100644 -index 0000000000..c308239177 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/Makefile.mk -@@ -0,0 +1,73 @@ -+## SPDX-License-Identifier: GPL-2.0-only -+ -+bootblock-y += bootblock.c ec.c -+ -+romstage-y += variants/$(VARIANT_DIR)/memory_init_params.c -+ -+ramstage-y += ramstage.c ec.c -+ramstage-y += variants/$(VARIANT_DIR)/gpio.c variants/$(VARIANT_DIR)/hda_verb.c -+ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += variants/$(VARIANT_DIR)/gma-mainboard.ads -+ -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_0.bin -+spd_0.bin-file := variants/$(VARIANT_DIR)/spd/spd_0.bin -+spd_0.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_1.bin -+spd_1.bin-file := variants/$(VARIANT_DIR)/spd/spd_1.bin -+spd_1.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_2.bin -+spd_2.bin-file := variants/$(VARIANT_DIR)/spd/spd_2.bin -+spd_2.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_3.bin -+spd_3.bin-file := variants/$(VARIANT_DIR)/spd/spd_3.bin -+spd_3.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_4.bin -+spd_4.bin-file := variants/$(VARIANT_DIR)/spd/spd_4.bin -+spd_4.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_5.bin -+spd_5.bin-file := variants/$(VARIANT_DIR)/spd/spd_5.bin -+spd_5.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_6.bin -+spd_6.bin-file := variants/$(VARIANT_DIR)/spd/spd_6.bin -+spd_6.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_7.bin -+spd_7.bin-file := variants/$(VARIANT_DIR)/spd/spd_7.bin -+spd_7.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_8.bin -+spd_8.bin-file := variants/$(VARIANT_DIR)/spd/spd_8.bin -+spd_8.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_9.bin -+spd_9.bin-file := variants/$(VARIANT_DIR)/spd/spd_9.bin -+spd_9.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_10.bin -+spd_10.bin-file := variants/$(VARIANT_DIR)/spd/spd_10.bin -+spd_10.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_11.bin -+spd_11.bin-file := variants/$(VARIANT_DIR)/spd/spd_11.bin -+spd_11.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_12.bin -+spd_12.bin-file := variants/$(VARIANT_DIR)/spd/spd_12.bin -+spd_12.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_13.bin -+spd_13.bin-file := variants/$(VARIANT_DIR)/spd/spd_13.bin -+spd_13.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_14.bin -+spd_14.bin-file := variants/$(VARIANT_DIR)/spd/spd_14.bin -+spd_14.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_15.bin -+spd_15.bin-file := variants/$(VARIANT_DIR)/spd/spd_15.bin -+spd_15.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_16.bin -+spd_16.bin-file := variants/$(VARIANT_DIR)/spd/spd_16.bin -+spd_16.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_17.bin -+spd_17.bin-file := variants/$(VARIANT_DIR)/spd/spd_17.bin -+spd_17.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_18.bin -+spd_18.bin-file := variants/$(VARIANT_DIR)/spd/spd_18.bin -+spd_18.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_19.bin -+spd_19.bin-file := variants/$(VARIANT_DIR)/spd/spd_19.bin -+spd_19.bin-type := raw -+cbfs-files-$(CONFIG_BOARD_LENOVO_T480S) += spd_20.bin -+spd_20.bin-file := variants/$(VARIANT_DIR)/spd/spd_20.bin -+spd_20.bin-type := raw -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/acpi/ec.asl b/src/mainboard/lenovo/sklkbl_thinkpad/acpi/ec.asl -new file mode 100644 -index 0000000000..3a949a2fca ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/acpi/ec.asl -@@ -0,0 +1,12 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#define BRIGHTNESS_UP \_SB.PCI0.GFX0.INCB -+#define BRIGHTNESS_DOWN \_SB.PCI0.GFX0.DECB -+#define THINKPAD_EC_GPE 22 -+ -+Name(\TCRT, 100) -+Name(\TPSV, 90) -+Name(\FLVL, 0) -+ -+#include <ec/lenovo/h8/acpi/ec.asl> -+#include <ec/lenovo/h8/acpi/thinkpad_bat_thresholds_b0.asl> -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/acpi/superio.asl b/src/mainboard/lenovo/sklkbl_thinkpad/acpi/superio.asl -new file mode 100644 -index 0000000000..55b1db5b11 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/acpi/superio.asl -@@ -0,0 +1,3 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#include <drivers/pc80/pc/ps2_controller.asl> -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/bootblock.c b/src/mainboard/lenovo/sklkbl_thinkpad/bootblock.c -new file mode 100644 -index 0000000000..fb660dbdfa ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/bootblock.c -@@ -0,0 +1,60 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#include <arch/io.h> -+#include <bootblock_common.h> -+#include <device/pci.h> -+#include <soc/pci_devs.h> -+#include "ec.h" -+ -+static void configure_uart(uint16_t port, uint16_t iobase, uint8_t irqno) -+{ -+	microchip_pnp_enter_conf_state(port); -+ -+	// Select LPC I/F LDN -+	pnp_write(port, PNP_LDN_SELECT, LDN_LPCIF); -+	// Write UART BAR -+	pnp_write_le32(port, LPCIF_BAR_UART, (uint32_t) iobase << 16 | 0x8707); -+	// Set SIRQ4 to UART -+	pnp_write(port, LPCIF_SIRQ(irqno), LDN_UART); -+ -+	// Configure UART LDN -+	pnp_write(port, PNP_LDN_SELECT, LDN_UART); -+	pnp_write(port, UART_ACTIVATE, 0x01); -+	pnp_write(port, UART_CONFIG_SELECT, 0x00); -+ -+	microchip_pnp_exit_conf_state(port); -+ -+#ifdef CONFIG_BOARD_LENOVO_T480 -+	// Supply debug unlock key -+	debug_write_key(DEBUG_RW_KEY_IDX, debug_rw_key); -+ -+	// Use debug writes to set UART_TX and UART_RX GPIOs -+	debug_write_dword(0xf0c400 + 0x110, 0x00001000); -+	debug_write_dword(0xf0c400 + 0x114, 0x00001000); -+#endif -+} -+ -+ -+#define UART_PORT	0x3f8 -+#define UART_IRQ	4 -+ -+void bootblock_mainboard_early_init(void) -+{ -+	// Tell EC via BIOS Debug Port 1 that the world isn't on fire -+ -+	// Let the EC know that BIOS code is running -+	outb(0x11, 0x86); -+	outb(0x6e, 0x86); -+ -+	// Enable accesses to EC1 interface -+	ec0_write(0, ec0_read(0) | 0x20); -+ -+	// Reset LEDs to power on state -+	// (Without this warm reboot leaves LEDs off) -+	ec0_write(0x0c, 0x80); -+	ec0_write(0x0c, 0x07); -+	ec0_write(0x0c, 0x8a); -+ -+	// Setup debug UART -+	configure_uart(EC_CFG_PORT, UART_PORT, UART_IRQ); -+} -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/devicetree.cb b/src/mainboard/lenovo/sklkbl_thinkpad/devicetree.cb -new file mode 100644 -index 0000000000..c07d4d53ca ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/devicetree.cb -@@ -0,0 +1,71 @@ -+# SPDX-License-Identifier: GPL-2.0-only -+ -+chip soc/intel/skylake -+	# IGD Displays -+	register "gfx" = "GMA_STATIC_DISPLAYS(0)" -+ -+	register "panel_cfg" = "{ -+		.up_delay_ms		= 200, -+		.down_delay_ms		=  50, -+		.cycle_delay_ms		= 600, -+		.backlight_on_delay_ms	=   1, -+		.backlight_off_delay_ms	= 200, -+		.backlight_pwm_hz	= 200, -+	}" -+ -+        # Power -+        register "PmConfigSlpS3MinAssert" = "2"         # 50ms -+        register "PmConfigSlpS4MinAssert" = "1"         # 1s -+        register "PmConfigSlpSusMinAssert" = "3"        # 500ms -+        register "PmConfigSlpAMinAssert" = "3"          # 2s -+ -+	device domain 0 on -+		device ref igpu on end -+		device ref sa_thermal on end -+		device ref thermal on end -+		device ref south_xhci on end -+		device ref lpc_espi on -+			register "serirq_mode" = "SERIRQ_CONTINUOUS" -+ -+			register "gen1_dec" = "0x007c1601" -+			register "gen2_dec" = "0x000c15e1" -+ -+			chip ec/lenovo/pmh7 -+				register "backlight_enable" = "true" -+				register "dock_event_enable" = "true" -+				device pnp ff.1 on end # dummy -+			end -+ -+			chip ec/lenovo/h8 -+				register "beepmask0" = "0x00" -+				register "beepmask1" = "0x86" -+				register "config0" = "0xa6" -+				register "config1" = "0x0d" -+				register "config2" = "0xa8" -+				register "config3" = "0xc4" -+				register "has_keyboard_backlight" = "1" -+				register "event2_enable" = "0xff" -+				register "event3_enable" = "0xff" -+				register "event4_enable" = "0xd0" -+				register "event5_enable" = "0x3c" -+				register "event7_enable" = "0x01" -+				register "event8_enable" = "0x7b" -+				register "event9_enable" = "0xff" -+				register "eventc_enable" = "0xff" -+				register "eventd_enable" = "0xff" -+				register "evente_enable" = "0x9d" -+				device pnp ff.2 on # dummy -+					io 0x60 = 0x62 -+					io 0x62 = 0x66 -+					io 0x64 = 0x1600 -+					io 0x66 = 0x1604 -+				end -+			end -+ -+			chip drivers/pc80/tpm -+				device pnp 0c31.0 on end -+			end -+		end -+		device ref hda on end -+	end -+end -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/dsdt.asl b/src/mainboard/lenovo/sklkbl_thinkpad/dsdt.asl -new file mode 100644 -index 0000000000..aa4d4de2a6 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/dsdt.asl -@@ -0,0 +1,33 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#include <acpi/acpi.h> -+DefinitionBlock( -+	"dsdt.aml", -+	"DSDT", -+	ACPI_DSDT_REV_2, -+	OEM_ID, -+	ACPI_TABLE_CREATOR, -+	0x20110725 -+) -+{ -+	#include <acpi/dsdt_top.asl> -+	#include <soc/intel/common/block/acpi/acpi/globalnvs.asl> -+	#include <cpu/intel/common/acpi/cpu.asl> -+ -+	Device (\_SB.PCI0) -+	{ -+		#include <soc/intel/skylake/acpi/systemagent.asl> -+		#include <soc/intel/skylake/acpi/pch.asl> -+		#include <drivers/intel/gma/acpi/default_brightness_levels.asl> -+	} -+ -+	Scope (\_SB.PCI0.RP01) -+	{ -+		Device (PEGP) -+		{ -+			Name (_ADR, Zero) -+		} -+	} -+ -+	#include <southbridge/intel/common/acpi/sleepstates.asl> -+} -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/ec.c b/src/mainboard/lenovo/sklkbl_thinkpad/ec.c -new file mode 100644 -index 0000000000..adb6a60324 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/ec.c -@@ -0,0 +1,153 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#include <arch/io.h> -+#include "ec.h" -+ -+#define MICROCHIP_CONFIGURATION_ENTRY_KEY	0x55 -+#define MICROCHIP_CONFIGURATION_EXIT_KEY	0xaa -+ -+void microchip_pnp_enter_conf_state(uint16_t port) -+{ -+	outb(MICROCHIP_CONFIGURATION_ENTRY_KEY, port); -+} -+ -+void microchip_pnp_exit_conf_state(uint16_t port) -+{ -+	outb(MICROCHIP_CONFIGURATION_EXIT_KEY, port); -+} -+ -+uint8_t pnp_read(uint16_t port, uint8_t index) -+{ -+	outb(index, port); -+	return inb(port + 1); -+} -+ -+uint32_t pnp_read_le32(uint16_t port, uint8_t index) -+{ -+	return (uint32_t) pnp_read(port, index) | -+			(uint32_t) pnp_read(port, index + 1) << 8 | -+			(uint32_t) pnp_read(port, index + 2) << 16 | -+			(uint32_t) pnp_read(port, index + 3) << 24; -+} -+ -+void pnp_write(uint16_t port, uint8_t index, uint8_t value) -+{ -+	outb(index, port); -+	outb(value, port + 1); -+} -+ -+void pnp_write_le32(uint16_t port, uint8_t index, uint32_t value) -+{ -+	pnp_write(port, index, value & 0xff); -+	pnp_write(port, index + 1, value >> 8 & 0xff); -+	pnp_write(port, index + 2, value >> 16 & 0xff); -+	pnp_write(port, index + 3, value >> 24 & 0xff); -+} -+ -+static void ecN_clear_out_queue(uint16_t cmd_port, uint16_t data_port) -+{ -+	while (inb(cmd_port) & EC_OBF) -+		inb(data_port); -+} -+ -+static void ecN_wait_to_send(uint16_t cmd_port, uint16_t data_port) -+{ -+	while (inb(cmd_port) & EC_IBF) -+		; -+} -+ -+static void ecN_wait_to_recv(uint16_t cmd_port, uint16_t data_port) -+{ -+	while (!(inb(cmd_port) & EC_OBF)) -+		; -+} -+ -+uint8_t ecN_read(uint16_t cmd_port, uint16_t data_port, uint8_t addr) -+{ -+	ecN_clear_out_queue(cmd_port, data_port); -+	ecN_wait_to_send(cmd_port, data_port); -+	outb(EC_READ, cmd_port); -+	ecN_wait_to_send(cmd_port, data_port); -+	outb(addr, data_port); -+	ecN_wait_to_recv(cmd_port, data_port); -+	return inb(data_port); -+} -+ -+void ecN_write(uint16_t cmd_port, uint16_t data_port, uint8_t addr, uint8_t val) -+{ -+	ecN_clear_out_queue(cmd_port, data_port); -+	ecN_wait_to_send(cmd_port, data_port); -+	outb(EC_WRITE, cmd_port); -+	ecN_wait_to_send(cmd_port, data_port); -+	outb(addr, data_port); -+	ecN_wait_to_send(cmd_port, data_port); -+	outb(val, data_port); -+} -+ -+uint8_t eeprom_read(uint16_t addr) -+{ -+	ecN_clear_out_queue(EC2_CMD, EC2_DATA); -+	ecN_wait_to_send(EC2_CMD, EC2_DATA); -+	outl(1, EC2_CMD); -+	ecN_wait_to_send(EC2_CMD, EC2_DATA); -+	outl(addr, EC2_DATA); -+	ecN_wait_to_recv(EC2_CMD, EC2_DATA); -+	return inl(EC2_DATA); -+} -+ -+void eeprom_write(uint16_t addr, uint8_t val) -+{ -+	ecN_clear_out_queue(EC2_CMD, EC2_DATA); -+	ecN_wait_to_send(EC2_CMD, EC2_DATA); -+	outl(2, EC2_CMD); -+	ecN_wait_to_send(EC2_CMD, EC2_DATA); -+	outl((uint32_t) addr | (uint32_t) val << 16, EC2_DATA); -+	ecN_wait_to_recv(EC2_CMD, EC2_DATA); -+	inl(EC2_DATA); -+} -+ -+uint16_t debug_loaded_keys(void) -+{ -+	return (uint16_t) ec0_read(0x87) << 8 | (uint16_t) ec0_read(0x86); -+} -+ -+static void debug_cmd(uint8_t cmd) -+{ -+	ec0_write(EC_DEBUG_CMD, cmd); -+	while (ec0_read(EC_DEBUG_CMD) & 0x80) -+		; -+} -+ -+void debug_read_key(uint8_t i, uint8_t *key) -+{ -+	debug_cmd(0x80 | (i & 0xf)); -+	for (int j = 0; j < 8; ++j) -+		key[j] = ec0_read(0x3e + j); -+} -+ -+void debug_write_key(uint8_t i, const uint8_t *key) -+{ -+	for (int j = 0; j < 8; ++j) -+		ec0_write(0x3e + j, key[j]); -+	debug_cmd(0xc0 |  (i & 0xf)); -+} -+ -+uint32_t debug_read_dword(uint32_t addr) -+{ -+	ecN_clear_out_queue(EC3_CMD, EC3_DATA); -+	ecN_wait_to_send(EC3_CMD, EC3_DATA); -+	outl(addr << 8 | 0xE2, EC3_DATA); -+	ecN_wait_to_recv(EC3_CMD, EC3_DATA); -+	return inl(EC3_DATA); -+} -+ -+void debug_write_dword(uint32_t addr, uint32_t val) -+{ -+	ecN_clear_out_queue(EC3_CMD, EC3_DATA); -+	ecN_wait_to_send(EC3_CMD, EC3_DATA); -+	outl(addr << 8 | 0xEA, EC3_DATA); -+	ecN_wait_to_send(EC3_CMD, EC3_DATA); -+	outl(val, EC3_DATA); -+} -+ -+const uint8_t debug_rw_key[8] = { 0x7a, 0x41, 0xb1, 0x49, 0xfe, 0x21, 0x01, 0xcf }; -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/ec.h b/src/mainboard/lenovo/sklkbl_thinkpad/ec.h -new file mode 100644 -index 0000000000..d2963c8962 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/ec.h -@@ -0,0 +1,99 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#ifndef SKLKBL_THINKPAD_EC_H -+#define SKLKBL_THINKPAD_EC_H -+ -+// EC configuration base address -+#define EC_CFG_PORT		0x4e -+ -+// Chip global registers -+#define PNP_LDN_SELECT		0x07 -+# define LDN_UART		0x07 -+# define LDN_LPCIF		0x0c -+#define EC_DEVICE_ID		0x20 -+#define EC_DEVICE_REV		0x21 -+ -+// LPC I/F registers -+#define LPCIF_SIRQ(i)		(0x40 + (i)) -+ -+#define LPCIF_BAR_CFG		0x60 -+#define LPCIF_BAR_MAILBOX	0x64 -+#define LPCIF_BAR_8042		0x68 -+#define LPCIF_BAR_ACPI_EC0	0x6c -+#define LPCIF_BAR_ACPI_EC1	0x70 -+#define LPCIF_BAR_ACPI_EC2	0x74 -+#define LPCIF_BAR_ACPI_EC3	0x78 -+#define LPCIF_BAR_ACPI_PM0	0x7c -+#define LPCIF_BAR_UART		0x80 -+#define LPCIF_BAR_FAST_KYBD	0x84 -+#define LPCIF_BAR_EMBED_FLASH	0x88 -+#define LPCIF_BAR_GP_SPI	0x8c -+#define LPCIF_BAR_EMI		0x90 -+#define LPCIF_BAR_PMH7		0x94 -+#define LPCIF_BAR_PORT80_DBG0	0x98 -+#define LPCIF_BAR_PORT80_DBG1	0x9c -+#define LPCIF_BAR_RTC		0xa0 -+ -+// UART registers -+#define UART_ACTIVATE		0x30 -+#define UART_CONFIG_SELECT	0xf0 -+ -+void microchip_pnp_enter_conf_state(uint16_t port); -+void microchip_pnp_exit_conf_state(uint16_t port); -+uint8_t pnp_read(uint16_t port, uint8_t index); -+uint32_t pnp_read_le32(uint16_t port, uint8_t index); -+void pnp_write(uint16_t port, uint8_t index, uint8_t value); -+void pnp_write_le32(uint16_t port, uint8_t index, uint32_t value); -+ -+#define EC0_CMD		0x0066 -+#define EC0_DATA	0x0062 -+#define EC1_CMD		0x1604 -+#define EC1_DATA	0x1600 -+#define EC2_CMD		0x1634 -+#define EC2_DATA	0x1630 -+#define EC3_CMD		0x161c -+#define EC3_DATA	0x1618 -+ -+#define EC_OBF		(1 << 0) -+#define EC_IBF		(1 << 1) -+ -+#define EC_READ		0x80 -+#define EC_WRITE	0x81 -+ -+uint8_t ecN_read(uint16_t cmd_port, uint16_t data_port, uint8_t addr); -+ -+void ecN_write(uint16_t cmd_port, uint16_t data_port, uint8_t addr, uint8_t val); -+ -+// EC0 and EC1 mostly are useful with the READ/WRITE commands -+#define ec0_read(addr) ecN_read(EC0_CMD, EC0_DATA, addr) -+#define ec0_write(addr, val) ecN_write(EC0_CMD, EC0_DATA, addr, val) -+#define ec1_read(addr) ecN_read(EC1_CMD, EC1_DATA, addr) -+#define ec1_write(addr, val) ecN_write(EC1_CMD, EC1_DATA, addr, val) -+ -+// Read from the emulated EEPROM -+uint8_t eeprom_read(uint16_t addr); -+ -+// Write to the emulated EEPROM -+void eeprom_write(uint16_t addr, uint8_t val); -+ -+// Read loaded debug key mask -+uint16_t debug_loaded_keys(void); -+ -+// The following location (via either EC0 or EC1) can be used to interact with the debug interface -+#define EC_DEBUG_CMD 0x3d -+ -+void debug_read_key(uint8_t i, uint8_t *key); -+ -+void debug_write_key(uint8_t i, const uint8_t *key); -+ -+uint32_t debug_read_dword(uint32_t addr); -+ -+void debug_write_dword(uint32_t addr, uint32_t val); -+ -+// RW unlock key index -+#define DEBUG_RW_KEY_IDX 1 -+ -+// RW unlock key for EC version N24HT37W -+extern const uint8_t debug_rw_key[8]; -+ -+#endif -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/gpio.h b/src/mainboard/lenovo/sklkbl_thinkpad/gpio.h -new file mode 100644 -index 0000000000..d89ed712d4 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/gpio.h -@@ -0,0 +1,8 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#ifndef GPIO_H -+#define GPIO_H -+ -+void variant_config_gpios(void); -+ -+#endif -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/ramstage.c b/src/mainboard/lenovo/sklkbl_thinkpad/ramstage.c -new file mode 100644 -index 0000000000..44c8578852 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/ramstage.c -@@ -0,0 +1,105 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#include <arch/io.h> -+#include <device/device.h> -+#include <drivers/intel/gma/int15.h> -+#include <option.h> -+#include <soc/ramstage.h> -+#include "ec.h" -+#include "gpio.h" -+ -+#define GPIO_GPU_RST		GPP_E22 // active low -+#define GPIO_1R8VIDEO_AON_ON	GPP_E23 -+ -+#define GPIO_DGFX_PWRGD		GPP_F3 -+ -+#define GPIO_DISCRETE_PRESENCE	GPP_D9	// active low -+#define GPIO_DGFX_VRAM_ID0	GPP_D11 -+#define GPIO_DGFX_VRAM_ID1	GPP_D12 -+ -+void mainboard_silicon_init_params(FSP_SIL_UPD *params) -+{ -+	static const char * const dgfx_vram_id_str[] = { "1GB", "2GB", "4GB", "N/A" }; -+ -+	int dgfx_vram_id; -+ -+	// Setup GPIOs -+	variant_config_gpios(); -+ -+	// Detect and enable dGPU -+	if (gpio_get(GPIO_DISCRETE_PRESENCE) == 0) { // active low -+		dgfx_vram_id = gpio_get(GPIO_DGFX_VRAM_ID0) | gpio_get(GPIO_DGFX_VRAM_ID1) << 1; -+		printk(BIOS_DEBUG, "Discrete GPU present with %s VRAM\n", dgfx_vram_id_str[dgfx_vram_id]); -+ -+		// NOTE: i pulled this GPU enable sequence from thin air -+		// it sometimes works but is buggy and the GPU disappears in some cases so disabling it by default. -+		// also unrelated to this enable sequence the nouveau driver only works on 6.8-6.9 kernels -+		if (get_uint_option("dgpu_enable", 0)) { -+			printk(BIOS_DEBUG, "Enabling discrete GPU\n"); -+			gpio_set(GPIO_1R8VIDEO_AON_ON, 1);	// Enable GPU power rail -+			while (!gpio_get(GPIO_DGFX_PWRGD))	// Wait for power good signal from GPU -+				; -+			gpio_set(GPIO_GPU_RST, 1);		// Release GPU from reset -+		} else { -+			printk(BIOS_DEBUG, "Discrete GPU will remain disabled\n"); -+		} -+ -+	} else { -+		printk(BIOS_DEBUG, "Discrete GPU not present\n"); -+	} -+} -+ -+static void dump_ec_cfg(uint16_t port) -+{ -+	microchip_pnp_enter_conf_state(port); -+ -+	// Device info -+	printk(BIOS_DEBUG, "Device id  %02x\n", pnp_read(port, EC_DEVICE_ID)); -+	printk(BIOS_DEBUG, "Device rev %02x\n", pnp_read(port, EC_DEVICE_REV)); -+ -+	// Switch to LPCIF LDN -+	pnp_write(port, PNP_LDN_SELECT, LDN_LPCIF); -+ -+	// Dump SIRQs -+	for (int i = 0; i <= 15; i += 1) -+		printk(BIOS_DEBUG, "SIRQ%d = %02x\n", i, pnp_read(port, LPCIF_SIRQ(i))); -+ -+	// Dump BARs -+	printk(BIOS_DEBUG, "BAR CFG = %08x\n", pnp_read_le32(port, LPCIF_BAR_CFG)); -+	printk(BIOS_DEBUG, "BAR MAILBOX = %08x\n", pnp_read_le32(port, LPCIF_BAR_MAILBOX)); -+	printk(BIOS_DEBUG, "BAR 8042 = %08x\n", pnp_read_le32(port, LPCIF_BAR_8042)); -+	printk(BIOS_DEBUG, "BAR ACPI_EC0 = %08x\n", pnp_read_le32(port, LPCIF_BAR_ACPI_EC0)); -+	printk(BIOS_DEBUG, "BAR ACPI_EC1 = %08x\n", pnp_read_le32(port, LPCIF_BAR_ACPI_EC1)); -+	printk(BIOS_DEBUG, "BAR ACPI_EC2 = %08x\n", pnp_read_le32(port, LPCIF_BAR_ACPI_EC2)); -+	printk(BIOS_DEBUG, "BAR ACPI_EC3 = %08x\n", pnp_read_le32(port, LPCIF_BAR_ACPI_EC3)); -+	printk(BIOS_DEBUG, "BAR ACPI_PM0 = %08x\n", pnp_read_le32(port, LPCIF_BAR_ACPI_PM0)); -+	printk(BIOS_DEBUG, "BAR UART = %08x\n", pnp_read_le32(port, LPCIF_BAR_UART)); -+	printk(BIOS_DEBUG, "BAR FAST_KYBD = %08x\n", pnp_read_le32(port, LPCIF_BAR_FAST_KYBD)); -+	printk(BIOS_DEBUG, "BAR EMBED_FLASH = %08x\n", pnp_read_le32(port, LPCIF_BAR_EMBED_FLASH)); -+	printk(BIOS_DEBUG, "BAR GP_SPI = %08x\n", pnp_read_le32(port, LPCIF_BAR_GP_SPI)); -+	printk(BIOS_DEBUG, "BAR EMI = %08x\n", pnp_read_le32(port, LPCIF_BAR_EMI)); -+	printk(BIOS_DEBUG, "BAR PMH7 = %08x\n", pnp_read_le32(port, LPCIF_BAR_PMH7)); -+	printk(BIOS_DEBUG, "BAR PORT80_DBG0 = %08x\n", pnp_read_le32(port, LPCIF_BAR_PORT80_DBG0)); -+	printk(BIOS_DEBUG, "BAR PORT80_DBG1 = %08x\n", pnp_read_le32(port, LPCIF_BAR_PORT80_DBG1)); -+	printk(BIOS_DEBUG, "BAR RTC = %08x\n", pnp_read_le32(port, LPCIF_BAR_RTC)); -+ -+	microchip_pnp_exit_conf_state(port); -+} -+ -+static void mainboard_enable(struct device *dev) -+{ -+	if (CONFIG(VGA_ROM_RUN)) -+		install_intel_vga_int15_handler(GMA_INT15_ACTIVE_LFP_EDP, -+						GMA_INT15_PANEL_FIT_DEFAULT, -+						GMA_INT15_BOOT_DISPLAY_DEFAULT, 0); -+} -+ -+static void mainboard_init(void *chip_info) -+{ -+	dump_ec_cfg(EC_CFG_PORT); -+} -+ -+struct chip_operations mainboard_ops = { -+	.enable_dev = mainboard_enable, -+	.init = mainboard_init, -+}; -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/data.vbt b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/data.vbt -new file mode 100644 -index 0000000000000000000000000000000000000000..4db4202961d0be67b75f52b28f2111d5655595c3 -GIT binary patch -literal 4106 -zcmeHJU2GIp6h5=FKeKmc=rAo()>4l^U|XP_ZDGYy!|YE>mu}hZ4|PdQy1<TF-O}0? -zDF)LeX(GlTYoZ2xkUp4bc(Fbi;|s>bV0gipVB&+pHzmFpc`=IXxii}qiqH*)7}PU+ -z?woV)x!<09?wNbfhQa6n_IK}3M!Gw&OgS)sY2Q$LJ4F+z{-JneATkt9refXr6+8sr -zR{e1eASVcGl#mf_O&p%I^1;3af=xDeN0ZnydT=;zHOH-q=O;(UFda)^<j^52Z;c<A -zv~t)#xI2OzS7p&7!}%QUJu-688gD}mM%EbG*3`NU(Fiq%!p$v4=y8%;+qQ?>LXW8| -z-Vsanq!Y==Kq9plQ+*gu^hf&pJ9?tY{h01cbtR&SfsVM!_*!D4W5>papLuo?gRur| -zF$`lX;f2t48Dpd4V@(*z=dq95OkkfiVU53N<(gE+=U)KHEdU4}@R=aMjTTTOcb8-a -zC9IXSxZB*|#u~SlHnpsY25L#Sxy6ljl16gI)H0f>for?qaszCX;ESpG=pqROFWR~Z -zTqQzcH(berra`9K(R~0OJ_eeA<Ovbd&vdN3&y}qtJ`q3y6wpP2V}*{Dbi8b357>=> -z&R-)LYP^U3@%6h}+0)7m-mEOhOM92<j^WbYrTU_kNXz~GCDNT`I|IC3AsFzURKM6k -zQdYbOof5*Zq``6G)5LxcgKFZn#G8mi#5;*Qh*QM-i4PHv5FaHzLHru=Tg2yx{aFHb -z(R2S=c8RBfL#5J#E-BTphw@OA+GpyZ;G1*r11OzSMVJD%l2Wuxx^l~w*1QYefHUN4 -zpSM~1{wGHQJOdv7$#vPs;Ii+!aI*SVDadZ``zyQq-N$35E%P{WT}(AcpKmkH*)gyF -z|NhTLpsow9_zOk6x>l32>zpvu-&@ZkPf<>~Bsv&Oy1O(`pbLUf3vt*0HIRk0U3EzI -zIeSaIE9*jps%6qP7$EQo8=K#f^K_mFpy5prkNNSOU;oI@KK0}Ge*G6eyWz+6OyADf -zE`}D<k1}?G;rmSggt5;V{>b#-81u-uS=OJB*=`v}WPMs@ugdtLtbZo6OEUf}>!QL` -z1zQ!pLt!Zek0|;p3VTDrj}`q(g?+8yuZk|KY?X>TRlP@LPpbH`s-ITbSygS+Jq6cQ -zp|Em=T_#B53Y|R}mtw!K3mUyWRhytxx_wi^(}HurDkx@L%OlKIA%rq@7%bE{p{Wl~ -zJJ%lV6&>fxBjnbA8G(&P?a8o%P#c~Wo$7|%1UE-$r;6jwt1uejOfMLwF-BDgC-Q+N -za!Hx;1S&$9!rlNCTsI*IMZ0#Y5aEO7sjIz#jb`S|q7OpRYx`h&=PK}_YnN#poNF=7 -z3yTO|pc0N&G3cozl21Q6c)l0vjm~0uFL)%2_T5RYR1$~dO~u)4px!jFycZNnchPVA -z!0+Vc_afL{m>rv2PY8{Cma`W{yG~JNJu?;L!#fSLmwRW{8R@gD7Z5~{xvZGpN)U`j -z^I~=;XVmtVzgSv@Na@HC?lC8A1l2+CU<IqV7J%6_t~L}S#%I}a5R3FZk`D#n4m*-O -z$?u%iuC_w$3p=)&nXQX^AwrdnK*hRu`Mqc`AzOgztfsBxvm77j5G7KQo#~<Ufx}jQ -z?|~8PU!d?s-JLd{0Ph}c6J*Zsxd^=dPINEGPS4+NOQoUG&E#4_TUNoTPI5CrmHR%r -VymGKbcpH8Yo8|ycF3<xZ{s}94r0@U$ - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gma-mainboard.ads b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gma-mainboard.ads -new file mode 100644 -index 0000000000..fcfbd75a92 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gma-mainboard.ads -@@ -0,0 +1,19 @@ -+-- SPDX-License-Identifier: GPL-2.0-or-later -+ -+with HW.GFX.GMA; -+with HW.GFX.GMA.Display_Probing; -+ -+use HW.GFX.GMA; -+use HW.GFX.GMA.Display_Probing; -+ -+private package GMA.Mainboard is -+ -+   ports : constant Port_List := -+     (eDP, -+      DP1, -+      DP2, -+      HDMI1, -+      HDMI2, -+      others => Disabled); -+ -+end GMA.Mainboard; -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gpio.c b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gpio.c -new file mode 100644 -index 0000000000..f7c29e1f39 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/gpio.c -@@ -0,0 +1,203 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#include <soc/gpio.h> -+#include "../../gpio.h" -+ -+/* FIXME: There are multiple GPIOs here that should be locked to prevent "TPM GPIO fail" style -+ * attacks. Unfortunately SKL/KBL GPIO locking *does not* work currently. */ -+ -+static const struct pad_config gpio_table[] = { -+ -+	/* ------- GPIO Community 0 ------- */ -+ -+	/* ------- GPIO Group GPP_A ------- */ -+	PAD_CFG_NF(GPP_A0, NONE, DEEP, NF1),				/* -KBRC */ -+	PAD_CFG_NF(GPP_A1, NATIVE, DEEP, NF1),				/* LPC_AD0 */ -+	PAD_CFG_NF(GPP_A2, NATIVE, DEEP, NF1),				/* LPC_AD1 */ -+	PAD_CFG_NF(GPP_A3, NATIVE, DEEP, NF1),				/* LPC_AD2 */ -+	PAD_CFG_NF(GPP_A4, NATIVE, DEEP, NF1),				/* LPC_AD3 */ -+	PAD_CFG_NF(GPP_A5, NONE, DEEP, NF1),				/* -LPC_FRAME */ -+	PAD_CFG_NF(GPP_A6, NONE, DEEP, NF1),				/* IRQSER */ -+	PAD_CFG_NF(GPP_A7, NONE, DEEP, NF1),				/* -TPM_IRQ */ -+	PAD_CFG_NF(GPP_A8, NONE, DEEP, NF1),				/* -CLKRUN */ -+	PAD_CFG_NF(GPP_A9, NATIVE, DEEP, NF1),				/* LPCCLK_EC_24M */ -+	PAD_CFG_NF(GPP_A10, NATIVE, DEEP, NF1),				/* LPCCLK_DEBUG_24M */ -+	PAD_NC(GPP_A11, NONE), -+	PAD_NC(GPP_A12, NONE), -+	PAD_CFG_NF(GPP_A13, NATIVE, DEEP, NF1),				/* -SUSWARN */ -+	PAD_CFG_NF(GPP_A14, NATIVE, DEEP, NF1),				/* -SUS_STAT */ -+	PAD_CFG_NF(GPP_A15, NATIVE, DEEP, NF1),				/* -SUSWARN */ -+	PAD_NC(GPP_A16, NONE), -+	PAD_NC(GPP_A17, NONE), -+	PAD_NC(GPP_A18, NONE), -+	PAD_NC(GPP_A19, NONE), -+	PAD_NC(GPP_A20, NONE), -+	PAD_NC(GPP_A21, NONE), -+	PAD_NC(GPP_A22, NONE), -+	PAD_NC(GPP_A23, NONE), -+ -+	/* ------- GPIO Group GPP_B ------- */ -+	PAD_NC(GPP_B0, NONE), -+	PAD_NC(GPP_B1, NONE), -+	PAD_NC(GPP_B2, NONE), -+	PAD_NC(GPP_B3, NONE), -+	PAD_CFG_GPI_SCI(GPP_B4, NONE, DEEP, EDGE_SINGLE, INVERT),	/* -TBT_PLUG_EVENT */ -+	PAD_CFG_NF(GPP_B5, NONE, DEEP, NF1),				/* -CLKREQ_PCIE0 */ -+	PAD_CFG_NF(GPP_B6, NONE, DEEP, NF1),				/* -CLKREQ_PCIE4 */ -+	PAD_CFG_NF(GPP_B7, NONE, DEEP, NF1),				/* -CLKREQ_PCIE5 */ -+	PAD_CFG_NF(GPP_B8, NONE, DEEP, NF1),				/* -CLKREQ_PCIE6 */ -+	PAD_CFG_NF(GPP_B9, NONE, DEEP, NF1),				/* -CLKREQ_PCIE8 */ -+	PAD_CFG_NF(GPP_B10, NONE, DEEP, NF1),				/* -CLKREQ_PCIE10 */ -+	PAD_NC(GPP_B11, NONE), -+	PAD_CFG_NF(GPP_B12, NONE, DEEP, NF1),				/* -PCH_SLP_S0 */ -+	PAD_CFG_NF(GPP_B13, NONE, DEEP, NF1),				/* -PLTRST */ -+	PAD_CFG_NF(GPP_B14, NATIVE, DEEP, NF1),				/* PCH_SPKR */ -+	PAD_CFG_GPO(GPP_B15, 1, DEEP),					/* NFC_DLREQ */ -+	PAD_NC(GPP_B16, NONE), -+	PAD_NC(GPP_B17, NONE), -+	PAD_NC(GPP_B18, NONE), -+	PAD_NC(GPP_B19, NONE), -+	PAD_NC(GPP_B20, NONE), -+	PAD_NC(GPP_B21, NONE), -+	PAD_NC(GPP_B22, NONE), -+	PAD_NC(GPP_B23, NONE), -+ -+	/* ------- GPIO Community 1 ------- */ -+ -+	/* ------- GPIO Group GPP_C ------- */ -+	PAD_CFG_NF(GPP_C0, NONE, DEEP, NF1),				/* SMB_CLK */ -+	PAD_CFG_NF(GPP_C1, NONE, DEEP, NF1),				/* SMB_DATA */ -+	PAD_NC(GPP_C2, NONE), -+	PAD_CFG_NF(GPP_C3, NONE, DEEP, NF1),				/* SML0_CLK */ -+	PAD_CFG_NF(GPP_C4, NONE, DEEP, NF1),				/* SML0_DATA */ -+	PAD_NC(GPP_C5, NONE), -+	PAD_CFG_NF(GPP_C6, NONE, DEEP, NF1),				/* EC_SCL2 */ -+	PAD_CFG_NF(GPP_C7, NONE, DEEP, NF1),				/* EC_SDA2 */ -+	PAD_NC(GPP_C8, NONE), -+	PAD_NC(GPP_C9, NONE), -+	PAD_NC(GPP_C10, NONE), -+	PAD_NC(GPP_C11, NONE), -+	PAD_NC(GPP_C12, NONE), -+	PAD_NC(GPP_C13, NONE), -+	PAD_NC(GPP_C14, NONE), -+	PAD_NC(GPP_C15, NONE), -+	PAD_CFG_NF(GPP_C16, NONE, DEEP, NF1),				/* I2C0_DATA */ -+	PAD_CFG_NF(GPP_C17, NONE, DEEP, NF1),				/* I2C0_CLK */ -+	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_GPI_SCI(GPP_C22, NONE, DEEP, EDGE_SINGLE, INVERT),	/* -EC_SCI */ -+	PAD_CFG_GPI_SCI(GPP_C23, NONE, DEEP, EDGE_SINGLE, INVERT),	/* -EC_WAKE */ -+ -+	/* ------- GPIO Group GPP_D ------- */ -+	PAD_NC(GPP_D0, NONE), -+	PAD_NC(GPP_D1, NONE), -+	PAD_NC(GPP_D2, NONE), -+	PAD_NC(GPP_D3, NONE), -+	PAD_NC(GPP_D4, NONE), -+	PAD_NC(GPP_D5, NONE), -+	PAD_NC(GPP_D6, NONE), -+	PAD_NC(GPP_D7, NONE), -+	PAD_NC(GPP_D8, NONE), -+	PAD_CFG_GPI_TRIG_OWN(GPP_D9, UP_20K, DEEP, OFF, ACPI),		/* -DISCRETE_PRESENCE */ -+	PAD_NC(GPP_D10, NONE), -+	PAD_CFG_GPI_TRIG_OWN(GPP_D11, UP_20K, DEEP, OFF, ACPI),		/* DGFX_VRAM_ID0 */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_D12, UP_20K, DEEP, OFF, ACPI),		/* DGFX_VRAM_ID1 */ -+	PAD_NC(GPP_D13, NONE), -+	PAD_NC(GPP_D14, NONE), -+	PAD_NC(GPP_D15, NONE), -+	PAD_NC(GPP_D16, NONE), -+	PAD_CFG_GPO(GPP_D17, 0, DEEP),					/* DDI_PRIORITY1 */ -+	PAD_NC(GPP_D18, NONE), -+	PAD_NC(GPP_D19, NONE), -+	PAD_NC(GPP_D20, NONE), -+	PAD_NC(GPP_D21, NONE), -+	PAD_CFG_GPI_TRIG_OWN(GPP_D22, UP_20K, DEEP, OFF, ACPI),		/* -NFC_DTCT */ -+	PAD_NC(GPP_D23, NONE), -+ -+	/* ------- GPIO Group GPP_E ------- */ -+	PAD_NC(GPP_E0, NONE), -+	PAD_CFG_NF(GPP_E1, NONE, DEEP, NF1),				/* -WWAN_SATA_DTCT (always HIGH) */ -+	PAD_CFG_NF(GPP_E2, NONE, DEEP, NF1),				/* -PE_DTCT */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_E3, NONE, DEEP, EDGE_SINGLE, ACPI),	/* -TBT_PLUG_EVENT */ -+	PAD_CFG_GPO(GPP_E4, 1, DEEP),					/* NFC_ON */ -+	PAD_NC(GPP_E5, NONE), -+	PAD_CFG_NF(GPP_E6, NONE, RSMRST, NF1),				/* SATA2_DEVSLP */ -+	PAD_NC(GPP_E7, NONE), -+	PAD_NC(GPP_E8, NONE), -+	PAD_CFG_NF(GPP_E9, NONE, DEEP, NF1),				/* -USB_PORT0_OC0 (AON port) */ -+	PAD_CFG_NF(GPP_E10, NONE, DEEP, NF1),				/* -USB_PORT1_OC1 (regular port) */ -+	PAD_NC(GPP_E11, NONE), -+	PAD_CFG_GPI_APIC_HIGH(GPP_E12, NONE, DEEP),			/* NFC_INT */ -+	PAD_CFG_NF(GPP_E13, NONE, DEEP, NF1),				/* DDIP1_HPD */ -+	PAD_CFG_NF(GPP_E14, NONE, DEEP, NF1),				/* DDIP2_HPD */ -+	PAD_NC(GPP_E15, NONE), -+	PAD_NC(GPP_E16, NONE), -+	PAD_CFG_NF(GPP_E17, NONE, DEEP, NF1),				/* EDP_HPD */ -+	PAD_NC(GPP_E18, NONE), -+	PAD_NC(GPP_E19, NONE), -+	PAD_CFG_NF(GPP_E20, NONE, DEEP, NF1),				/* DDIP2_CTRLCLK */ -+	PAD_CFG_NF(GPP_E21, NONE, DEEP, NF1),				/* DDIP2_CTRLDATA */ -+	PAD_CFG_TERM_GPO(GPP_E22, 0, UP_20K, RSMRST),			/* -GPU_RST */ -+	PAD_CFG_TERM_GPO(GPP_E23, 0, UP_20K, RSMRST),			/* 1R8VIDEO_AON_ON */ -+ -+	/* ------- GPIO Community 2 ------- */ -+ -+	/* -------- GPIO Group GPD -------- */ -+	PAD_CFG_NF(GPD0, NONE, PWROK, NF1),				/* -BATLOW */ -+	PAD_CFG_NF(GPD1, NATIVE, PWROK, NF1),				/* AC_PRESENT */ -+	PAD_CFG_NF(GPD2, NATIVE, PWROK, NF1),				/* -LANWAKE */ -+	PAD_CFG_NF(GPD3, UP_20K, PWROK, NF1),				/* -PWRSW_EC */ -+	PAD_CFG_NF(GPD4, NONE, PWROK, NF1),				/* -PCH_SLP_S3 */ -+	PAD_CFG_NF(GPD5, NONE, PWROK, NF1),				/* -PCH_SLP_S4 */ -+	PAD_CFG_NF(GPD6, NONE, PWROK, NF1),				/* -PCH_SLP_M */ -+	PAD_NC(GPD7, NONE), -+	PAD_CFG_NF(GPD8, NONE, PWROK, NF1),				/* SUSCLK_32K */ -+	PAD_CFG_NF(GPD9, NONE, PWROK, NF1),				/* -PCH_SLP_WLAN */ -+	PAD_CFG_NF(GPD10, NONE, PWROK, NF1),				/* -PCH_SLP_S5 */ -+	PAD_CFG_NF(GPD11, NONE, PWROK, NF1),				/* LANPHYPC */ -+ -+	/* ------- GPIO Community 3 ------- */ -+ -+	/* ------- GPIO Group GPP_F ------- */ -+	PAD_NC(GPP_F0, NONE), -+	PAD_CFG_GPI_TRIG_OWN(GPP_F1, NONE, DEEP, OFF, ACPI),		/* GC6_FB_EN */ -+	PAD_CFG_GPO(GPP_F2, 1, DEEP),					/* -GPU_EVENT */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F3, NONE, DEEP, OFF, ACPI),		/* DGFX_PWRGD */ -+	PAD_CFG_GPO(GPP_F4, 1, DEEP),					/* -WWAN_RESET */ -+	PAD_NC(GPP_F5, NONE), -+	PAD_CFG_GPI_TRIG_OWN(GPP_F6, UP_20K, DEEP, OFF, ACPI),		/* -MIC_HW_EN (R961 to GND) */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F7, UP_20K, DEEP, OFF, ACPI),		/* -INT_MIC_DTCT */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F8, UP_20K, DEEP, OFF, ACPI),		/* WWAN_CFG0 */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F9, UP_20K, DEEP, OFF, ACPI),		/* WWAN_CFG1 */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F10, UP_20K, DEEP, OFF, ACPI),		/* WWAN_CFG2 */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F11, UP_20K, DEEP, OFF, ACPI),		/* WWAN_CFG3 */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F12, UP_20K, DEEP, OFF, ACPI),		/* PLANARID0 */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F13, UP_20K, DEEP, OFF, ACPI),		/* PLANARID1 */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F14, UP_20K, DEEP, OFF, ACPI),		/* PLANARID2 */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F15, UP_20K, DEEP, OFF, ACPI),		/* PLANARID3 */ -+	PAD_NC(GPP_F16, NONE), -+	PAD_NC(GPP_F17, NONE), -+	PAD_NC(GPP_F18, NONE), -+	PAD_NC(GPP_F19, NONE), -+	PAD_NC(GPP_F20, NONE), -+	PAD_NC(GPP_F21, NONE), -+	PAD_CFG_GPI_TRIG_OWN(GPP_F22, UP_20K, DEEP, OFF, ACPI),		/* -INTRUDER_PCH */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F23, UP_20K, DEEP, OFF, ACPI),		/* -SC_DTCT */ -+ -+	/* ------- GPIO Group GPP_G ------- */ -+	PAD_NC(GPP_G0, NONE), -+	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_GPI_SCI(GPP_G7, NONE, DEEP, LEVEL, INVERT),		/* -TBT_PCIE_WAKE */ -+}; -+ -+void variant_config_gpios(void) -+{ -+	gpio_configure_pads(gpio_table, ARRAY_SIZE(gpio_table)); -+} -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/hda_verb.c b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/hda_verb.c -new file mode 100644 -index 0000000000..3a951ce0da ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/hda_verb.c -@@ -0,0 +1,90 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#include <device/azalia_device.h> -+ -+const u32 cim_verb_data[] = { -+	0x10ec0257, // Vendor/Device ID: Realtek ALC257 -+	0x17aa225d, // Subsystem ID -+	11, -+	AZALIA_SUBVENDOR(0, 0x17aa225d), -+ -+	AZALIA_PIN_CFG(0, 0x12, AZALIA_PIN_DESC( -+		AZALIA_INTEGRATED, -+		AZALIA_INTERNAL, -+		AZALIA_MIC_IN, -+		AZALIA_OTHER_DIGITAL, -+		AZALIA_COLOR_UNKNOWN, -+		AZALIA_NO_JACK_PRESENCE_DETECT, -+		2, 0 -+	)), -+	AZALIA_PIN_CFG(0, 0x13, 0x40000000), // does not describe a jack or internal device -+	AZALIA_PIN_CFG(0, 0x14, AZALIA_PIN_DESC( -+		AZALIA_INTEGRATED, -+		AZALIA_INTERNAL, -+		AZALIA_SPEAKER, -+		AZALIA_OTHER_ANALOG, -+		AZALIA_COLOR_UNKNOWN, -+		AZALIA_NO_JACK_PRESENCE_DETECT, -+		1, 0 -+	)), -+	AZALIA_PIN_CFG(0, 0x18, AZALIA_PIN_CFG_NC(0)), -+	AZALIA_PIN_CFG(0, 0x19, AZALIA_PIN_DESC( -+		AZALIA_JACK, -+		AZALIA_EXTERNAL_PRIMARY_CHASSIS | AZALIA_RIGHT, -+		AZALIA_MIC_IN, -+		AZALIA_STEREO_MONO_1_8, -+		AZALIA_BLACK, -+		AZALIA_JACK_PRESENCE_DETECT, -+		3, 0 -+	)), -+	AZALIA_PIN_CFG(0, 0x1a, AZALIA_PIN_CFG_NC(0)), -+	AZALIA_PIN_CFG(0, 0x1b, AZALIA_PIN_CFG_NC(0)), -+	AZALIA_PIN_CFG(0, 0x1d, 0x40661b45), // does not describe a jack or internal device -+	AZALIA_PIN_CFG(0, 0x1e, AZALIA_PIN_CFG_NC(0)), -+	AZALIA_PIN_CFG(0, 0x21, AZALIA_PIN_DESC( -+		AZALIA_JACK, -+		AZALIA_EXTERNAL_PRIMARY_CHASSIS | AZALIA_RIGHT, -+		AZALIA_HP_OUT, -+		AZALIA_STEREO_MONO_1_8, -+		AZALIA_BLACK, -+		AZALIA_JACK_PRESENCE_DETECT, -+		1, 15 -+	)), -+ -+	0x8086280b, // Vendor/Device ID: Intel Kabylake HDMI -+	0x80860101, // Subsystem ID -+	4, -+	AZALIA_SUBVENDOR(2, 0x80860101), -+ -+	AZALIA_PIN_CFG(2, 0x05, AZALIA_PIN_DESC( -+		AZALIA_JACK, -+		AZALIA_DIGITAL_DISPLAY, -+		AZALIA_DIGITAL_OTHER_OUT, -+		AZALIA_OTHER_DIGITAL, -+		AZALIA_COLOR_UNKNOWN, -+		AZALIA_JACK_PRESENCE_DETECT, -+		1, 0 -+	)), -+	AZALIA_PIN_CFG(2, 0x06, AZALIA_PIN_DESC( -+		AZALIA_JACK, -+		AZALIA_DIGITAL_DISPLAY, -+		AZALIA_DIGITAL_OTHER_OUT, -+		AZALIA_OTHER_DIGITAL, -+		AZALIA_COLOR_UNKNOWN, -+		AZALIA_JACK_PRESENCE_DETECT, -+		2, 0 -+	)), -+	AZALIA_PIN_CFG(2, 0x07, AZALIA_PIN_DESC( -+		AZALIA_JACK, -+		AZALIA_DIGITAL_DISPLAY, -+		AZALIA_DIGITAL_OTHER_OUT, -+		AZALIA_OTHER_DIGITAL, -+		AZALIA_COLOR_UNKNOWN, -+		AZALIA_JACK_PRESENCE_DETECT, -+		3, 0 -+	)), -+}; -+ -+const u32 pc_beep_verbs[] = {}; -+ -+AZALIA_ARRAY_SIZES; -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/memory_init_params.c b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/memory_init_params.c -new file mode 100644 -index 0000000000..5252a402f9 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/memory_init_params.c -@@ -0,0 +1,20 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#include <soc/romstage.h> -+#include <spd_bin.h> -+ -+void mainboard_memory_init_params(FSPM_UPD *mupd) -+{ -+	FSP_M_CONFIG *mem_cfg = &mupd->FspmConfig; -+	mem_cfg->DqPinsInterleaved = true;			/* DDR_DQ in interleave mode */ -+	mem_cfg->CaVrefConfig      = 2;				/* VREF_CA to CH_A and VREF_DQ_B to CH_B */ -+	mem_cfg->MemorySpdDataLen  = CONFIG_DIMM_SPD_SIZE; -+ -+	/* Get SPD for memory slots */ -+	struct spd_block blk = { .addr_map = { 0x50, 0x51, } }; -+	get_spd_smbus(&blk); -+	dump_spd_info(&blk); -+ -+	mem_cfg->MemorySpdPtr00    = (uintptr_t)blk.spd_array[0]; -+	mem_cfg->MemorySpdPtr10    = (uintptr_t)blk.spd_array[1]; -+} -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/overridetree.cb b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/overridetree.cb -new file mode 100644 -index 0000000000..bf66bd3a69 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480/overridetree.cb -@@ -0,0 +1,103 @@ -+# SPDX-License-Identifier: GPL-2.0-only -+ -+chip soc/intel/skylake -+	device domain 0 on -+		device ref south_xhci on -+			register "usb2_ports" = "{ -+				[0] = USB2_PORT_MID(OC1),		// USB-A -+				[1] = USB2_PORT_MID(OC0),		// USB-A (always on) -+				[2] = USB2_PORT_MID(OC_SKIP),		// JSC-1 (smartcard slot) -+				[3] = USB2_PORT_MID(OC_SKIP),		// USB-C (charging port) -+				[4] = USB2_PORT_MID(OC_SKIP),		// JCAM1 (IR camera) -+				[5] = USB2_PORT_MID(OC_SKIP),		// JWWAN1 (M.2 WWAN USB) -+				[6] = USB2_PORT_MID(OC_SKIP),		// JWLAN1 (M.2 WLAN USB) -+				[7] = USB2_PORT_MID(OC_SKIP),		// JCAM1 (webcam) -+				[8] = USB2_PORT_MID(OC_SKIP),		// JFPR1 (fingerprint reader) -+				[9] = USB2_PORT_MID(OC_SKIP),		// JLCD1 (touch panel) -+			}" -+			register "usb3_ports" = "{ -+				[0] = USB3_PORT_DEFAULT(OC1),		// USB-A -+				[1] = USB3_PORT_DEFAULT(OC0),		// USB-A (always on) -+				[2] = USB3_PORT_DEFAULT(OC_SKIP),	// RTS5344S (SD card reader) -+				[3] = USB3_PORT_DEFAULT(OC_SKIP),	// USB-C (charging port) -+			}" -+		end -+ -+		device ref sata on -+			# SATA_2 - JHDD1 SATA SSD -+			register "SataPortsEnable[2]" = "1" -+			register "SataPortsDevSlp[2]" = "1" -+		end -+ -+		# PCIe controller 1 - 1x4 -+		#   PCIE 1-4   - RP1  - dGPU - CLKOUT0 - CLKREQ0 -+		# -+		# PCIe controller 2 - 2x1+1x2 (lane reversal) -+		#   PCIE 5     - GBE  - GBE  - CLKOUT1 - CLKREQ1 (clobbers RP8) -+		#   PCIE 6     - RP7  - WLAN - CLKOUT2 - CLKREQ2 -+		#   PCIE 7-8   - RP5  - WWAN - CLKOUT3 - CLKREQ3 -+		# -+		# PCIe controller 3 - 2x2 -+		#   PCIE 9-10  - RP9  - TB3  - CLKOUT4 - CLKREQ4 -+		#   PCIE 11-12 - RP11 - SSD  - CLKOUT5 - CLKREQ5 -+ -+		# dGPU - x4 -+		device ref pcie_rp1 on -+			register "PcieRpEnable[0]"			= "1" -+			register "PcieRpClkReqSupport[0]"		= "1" -+			register "PcieRpClkReqNumber[0]"		= "0" -+			register "PcieRpClkSrcNumber[0]"		= "0" -+			register "PcieRpAdvancedErrorReporting[0]"	= "1" -+			register "PcieRpLtrEnable[0]"			= "1" -+		end -+ -+		# Ethernet (clobbers RP8) -+		device ref gbe on -+			register "LanClkReqSupported"			= "1" -+			register "LanClkReqNumber"			= "1" -+			register "EnableLanLtr"				= "1" -+			register "EnableLanK1Off"			= "1" -+		end -+ -+		# M.2 WLAN - x1 -+		device ref pcie_rp7 on -+			register "PcieRpEnable[6]"			= "1" -+			register "PcieRpClkReqSupport[6]"		= "1" -+			register "PcieRpClkReqNumber[6]"		= "2" -+			register "PcieRpClkSrcNumber[6]"		= "2" -+			register "PcieRpAdvancedErrorReporting[6]"	= "1" -+			register "PcieRpLtrEnable[6]"			= "1" -+		end -+ -+		# M.2 WWAN - x2 -+		device ref pcie_rp5 on -+			register "PcieRpEnable[4]"			= "1" -+			register "PcieRpClkReqSupport[4]"		= "1" -+			register "PcieRpClkReqNumber[4]"		= "3" -+			register "PcieRpClkSrcNumber[4]"		= "3" -+			register "PcieRpAdvancedErrorReporting[4]"	= "1" -+			register "PcieRpLtrEnable[4]"			= "1" -+		end -+ -+		# TB3 (Alpine Ridge LP) - x2 -+		device ref pcie_rp9 on -+			register "PcieRpEnable[8]"			= "1" -+			register "PcieRpClkReqSupport[8]"		= "1" -+			register "PcieRpClkReqNumber[8]"		= "4" -+			register "PcieRpClkSrcNumber[8]"		= "4" -+			register "PcieRpAdvancedErrorReporting[8]"	= "1" -+			register "PcieRpLtrEnable[8]"			= "1" -+			register "PcieRpHotPlug[8]"			= "1" -+		end -+ -+		# M.2 2280 caddy - x2 -+		device ref pcie_rp11 on -+			register "PcieRpEnable[10]"			= "1" -+			register "PcieRpClkReqSupport[10]"		= "1" -+			register "PcieRpClkReqNumber[10]"		= "5" -+			register "PcieRpClkSrcNumber[10]"		= "5" -+			register "PcieRpAdvancedErrorReporting[10]"	= "1" -+			register "PcieRpLtrEnable[10]"			= "1" -+		end -+	end -+end -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/data.vbt b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/data.vbt -new file mode 100644 -index 0000000000000000000000000000000000000000..47732e37d5b2bad4e674fd10eafa605d26f97840 -GIT binary patch -literal 4106 -zcmeHJUu+a*5TCu>yW9JAmoD2P<t%lC2CfC#y%tU^HSGOq>9tqx`iFWXCLD09R<E?S -zMT)`nNScT-%9*GEA8a2?G`v`!jPV6yVlcd5OnC6Y;F}U&jJz1db9VRID@E)DLk#NN -z&9^i2&Hiq_`R2ZF8ipf7IM{nI5$^585@kULrrx0OPKv~ngNI__q41$dA{p()ui+v1 -zw(9rm09lUPAP4nOTm0CRnF|aw5^SQSH<G}<u_Gfnvn6IuK0h@!j;UxI!$*&rIdkIh -zl$piB;eBDWa1|CgK9bAg{^O%Z%!ziiz{neeJDb~fBI?1GV5p^44?a$ETl=n1d+;%Z -z#X6(OzEnIB9*QUTV{!mv@xk!mU}s+>aS&4j$?kY0KGYdgn6;MZ*!anbk!PNr!a%eU -zTXkLEL3ly5L&oUX#CS7?b2%Kad?s<goHQq1G_%bLv);c5qQC)gZtxnw!L3%1MWI_X -z0wUImYD_R11gsI%l%Zw})KN_c#&!YgM3v;Up{7+s1=lXlB>-#@;mhg8>>>#S&)d2I -zmP&-g0$k02szSQj(Y*j}YYtQnDH0;2ui<!ko-28Y){6ilAcrmz951v4RTWQ_ye!or -z4xOJya#Sr7{o)%XFUfJCndM%KM(c^ol_hzlb*1h&uC%Vy%U(P!_qUfwcb4r;SmPQ_ -zhxf($vVo)we+jxogb`7NQ^aS9eQpNT#2bmX5(kO*5O)$Mi4PJVB_1U{L42C{HR894 -z=ZJk70(Q~o{*COiRR#_fix0XaS3?igAuo2!)<NF8ARGWF&M7=h16xZaS|UxpZA)w3 -z1CQUC@^&oxtbG2HGk&WA9=_qa;$?8fdy_j;eY+H3ciR5U?|$2?oT;mPoV=Dx&CwUf -zv~zYWs{cR#vl*!ChO54O0k3UT#mpur4fXeCdE_aoNtZ|mgF!ck3Nmy<0BRuy4NwCa -zNZDP7XrHsU<-0NyB2=wXwgEqZPukelExAY+hyWVj0{)~A=X~17KK7XpzxQcB``9fX -zZf4pp#`ZEanRbG)(+odg+NX?t!SF|>{mPhI!flfFgv9nqI4Wr~5_?s`k0kALiCvcP -zCrRUFrpVYPYn?Jn%6MGXUXj_GGJYa!U&-tn8Gn&ANnz_0+@olH3VTw)mlf@-!p<v7 -zljhF5u5tObYwR{boRI14NxNkGd6QG=>8{!e#p0ct5}M(h16D>p?OGjSz6v3juERjS -z#z{?mXvVqrXs_rvUmYR40gNzg(QD6y9E94?4DWO|6eb83LI-smcVC6x1n2reH}rAp -zLM);f=tWDCr``UF5T>!;PYu^H1g>EBP8A}2*fM>s-@nC3pDV|}6+CtfhG(II7`pcw -z`jLfJ!?;*R@Bp=Nw2EPOC7FEs(cugIP_K6tN_$~tvS8nx6iOv|IMrO3&-m*N9ZP#b -znG^~>I|l1cUVSeD9r^k3h0TP}WWD9=MZxY<<azgO1@-W5<NTHW*-d)t{Q4yX9_+?a -zHawLe=uO6@%xqS#?JxafX%#$`BhkIqq>Z3B2yU!k71#YRpThOJtVheMDA50rV#s@U -z+nKbA{O(olYR}icuzQD*-cjBQ9;%!eMDVP>7mWsF@=%>o)wSgq=n%DHNOYwRr4Ao6 -zbNdgEn*RdDS>Rud+fIY0N8JkP3q6;>8o%R(CE2n3?Xg%qP+U%~6|{XFyxv7Y#;J2Z -XK$lk*wsY^m4}9|iz?mg_AjCfat$CyH - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/gma-mainboard.ads b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/gma-mainboard.ads -new file mode 100644 -index 0000000000..fcfbd75a92 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/gma-mainboard.ads -@@ -0,0 +1,19 @@ -+-- SPDX-License-Identifier: GPL-2.0-or-later -+ -+with HW.GFX.GMA; -+with HW.GFX.GMA.Display_Probing; -+ -+use HW.GFX.GMA; -+use HW.GFX.GMA.Display_Probing; -+ -+private package GMA.Mainboard is -+ -+   ports : constant Port_List := -+     (eDP, -+      DP1, -+      DP2, -+      HDMI1, -+      HDMI2, -+      others => Disabled); -+ -+end GMA.Mainboard; -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/gpio.c b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/gpio.c -new file mode 100644 -index 0000000000..a98dd2bc4e ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/gpio.c -@@ -0,0 +1,199 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#include <soc/gpio.h> -+#include "../../gpio.h" -+ -+static const struct pad_config gpio_table[] = { -+	/* ------- GPIO Community 0 ------- */ -+ -+	/* ------- GPIO Group GPP_A ------- */ -+	PAD_CFG_NF(GPP_A0, NONE, DEEP, NF1),				/* -KBRC */ -+	PAD_CFG_NF(GPP_A1, NATIVE, DEEP, NF1),				/* LPC_AD0 */ -+	PAD_CFG_NF(GPP_A2, NATIVE, DEEP, NF1),				/* LPC_AD1 */ -+	PAD_CFG_NF(GPP_A3, NATIVE, DEEP, NF1),				/* LPC_AD2 */ -+	PAD_CFG_NF(GPP_A4, NATIVE, DEEP, NF1),				/* LPC_AD3 */ -+	PAD_CFG_NF(GPP_A5, NONE, DEEP, NF1),				/* -LPC_FRAME */ -+	PAD_CFG_NF(GPP_A6, NONE, DEEP, NF1),				/* IRQSER */ -+	PAD_CFG_NF(GPP_A7, NONE, DEEP, NF1),				/* -TPM_IRQ */ -+	PAD_CFG_NF(GPP_A8, NONE, DEEP, NF1),				/* -CLKRUN */ -+	PAD_CFG_NF(GPP_A9, DN_20K, DEEP, NF1),				/* LPCCLK_EC_24M */ -+	PAD_CFG_NF(GPP_A10, DN_20K, DEEP, NF1),				/* LPCCLK_DEBUG_24M */ -+	PAD_NC(GPP_A11, NONE), -+	PAD_NC(GPP_A12, NONE), -+	PAD_CFG_NF(GPP_A13, NONE, DEEP, NF1),				/* -SUSWARN */ -+	PAD_CFG_NF(GPP_A14, NONE, DEEP, NF1),				/* -SUS_STAT */ -+	PAD_CFG_NF(GPP_A15, UP_20K, DEEP, NF1),				/* -SUSWARN */ -+	PAD_NC(GPP_A16, NONE), -+	PAD_NC(GPP_A17, NONE), -+	PAD_NC(GPP_A18, NONE), -+	PAD_NC(GPP_A19, NONE), -+	PAD_NC(GPP_A20, NONE), -+	PAD_NC(GPP_A21, NONE), -+	PAD_NC(GPP_A22, NONE), -+	PAD_NC(GPP_A23, NONE), -+ -+	/* ------- GPIO Group GPP_B ------- */ -+	PAD_CFG_NF(GPP_B0, NONE, DEEP, NF1), -+	PAD_CFG_NF(GPP_B1, NONE, DEEP, NF1), -+	PAD_NC(GPP_B2, NONE), -+	PAD_NC(GPP_B3, NONE), -+	PAD_CFG_GPI_SCI(GPP_B4, NONE, DEEP, EDGE_SINGLE, INVERT),	/* -TBT_PLUG_EVENT */ -+	PAD_CFG_NF(GPP_B5, NONE, DEEP, NF1),				/* -CLKREQ_PCIE0 (dGPU) */ -+	PAD_CFG_NF(GPP_B6, NONE, DEEP, NF1),				/* -CLKREQ_PCIE3 (WWAN) */ -+	PAD_CFG_NF(GPP_B7, NONE, DEEP, NF1),				/* -CLKREQ_PCIE4 (GBE) */ -+	PAD_CFG_NF(GPP_B8, NONE, DEEP, NF1),				/* -CLKREQ_PCIE5 (WLAN) */ -+	PAD_CFG_NF(GPP_B9, NONE, DEEP, NF1),				/* -CLKREQ_PCIE6 (TB3) */ -+	PAD_CFG_NF(GPP_B10, NONE, DEEP, NF1),				/* -CLKREQ_PCIE8 (SSD) */ -+	PAD_NC(GPP_B11, NONE), -+	PAD_CFG_NF(GPP_B12, NONE, DEEP, NF1),				/* -PCH_SLP_S0 */ -+	PAD_CFG_NF(GPP_B13, NONE, DEEP, NF1),				/* -PLTRST */ -+	PAD_CFG_NF(GPP_B14, NONE, DEEP, NF1),				/* PCH_SPKR */ -+	PAD_CFG_GPO(GPP_B15, 0, DEEP),					/* NFC_DLREQ */ -+	PAD_NC(GPP_B16, NONE), -+	PAD_NC(GPP_B17, NONE), -+	PAD_NC(GPP_B18, NONE), -+	PAD_NC(GPP_B19, NONE), -+	PAD_NC(GPP_B20, NONE), -+	PAD_NC(GPP_B21, NONE), -+	PAD_NC(GPP_B22, NONE), -+	PAD_NC(GPP_B23, NONE), -+ -+	/* ------- GPIO Community 1 ------- */ -+ -+	/* ------- GPIO Group GPP_C ------- */ -+	PAD_CFG_NF(GPP_C0, NONE, DEEP, NF1),				/* SMB_CLK */ -+	PAD_CFG_NF(GPP_C1, NONE, DEEP, NF1),				/* SMB_DATA */ -+	PAD_CFG_GPO(GPP_C2, 1, DEEP), -+	PAD_CFG_NF(GPP_C3, NONE, DEEP, NF1),				/* SML0_CLK */ -+	PAD_CFG_NF(GPP_C4, NONE, DEEP, NF1),				/* SML0_DATA */ -+	PAD_NC(GPP_C5, NONE), -+	PAD_CFG_NF(GPP_C6, NONE, DEEP, NF1),				/* EC_SCL2 */ -+	PAD_CFG_NF(GPP_C7, NONE, DEEP, NF1),				/* EC_SDA2 */ -+	PAD_NC(GPP_C8, NONE), -+	PAD_NC(GPP_C9, NONE), -+	PAD_NC(GPP_C10, NONE), -+	PAD_NC(GPP_C11, NONE), -+	PAD_NC(GPP_C12, NONE), -+	PAD_NC(GPP_C13, NONE), -+	PAD_NC(GPP_C14, NONE), -+	PAD_NC(GPP_C15, NONE), -+	PAD_CFG_NF(GPP_C16, NONE, DEEP, NF1),				/* I2C0_DATA */ -+	PAD_CFG_NF(GPP_C17, NONE, DEEP, NF1),				/* I2C0_CLK */ -+	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_GPI_SCI(GPP_C22, NONE, DEEP, EDGE_SINGLE, INVERT),	/* -EC_SCI */ -+	PAD_CFG_GPI_SCI(GPP_C23, NONE, DEEP, EDGE_SINGLE, INVERT),	/* -EC_WAKE */ -+ -+	/* ------- GPIO Group GPP_D ------- */ -+	PAD_NC(GPP_D0, NONE), -+	PAD_NC(GPP_D1, NONE), -+	PAD_NC(GPP_D2, NONE), -+	PAD_NC(GPP_D3, NONE), -+	PAD_NC(GPP_D4, NONE), -+	PAD_NC(GPP_D5, NONE), -+	PAD_NC(GPP_D6, NONE), -+	PAD_NC(GPP_D7, NONE), -+	PAD_NC(GPP_D8, NONE), -+	PAD_CFG_GPI_TRIG_OWN(GPP_D9, UP_20K, DEEP, OFF, ACPI),		/* -DISCRETE_PRESENCE */ -+	PAD_NC(GPP_D10, NONE), -+	PAD_CFG_GPI_TRIG_OWN(GPP_D11, UP_20K, DEEP, OFF, ACPI),		/* DGFX_VRAM_ID0 */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_D12, UP_20K, DEEP, OFF, ACPI),		/* DGFX_VRAM_ID1 */ -+	PAD_NC(GPP_D13, NONE), -+	PAD_NC(GPP_D14, NONE), -+	PAD_NC(GPP_D15, NONE), -+	PAD_NC(GPP_D16, NONE), -+	PAD_CFG_GPO(GPP_D17, 0, DEEP),					/* DDI_PRIORITY */ -+	PAD_NC(GPP_D18, NONE), -+	PAD_NC(GPP_D19, NONE), -+	PAD_NC(GPP_D20, NONE), -+	PAD_NC(GPP_D21, NONE), -+	PAD_CFG_GPI_TRIG_OWN(GPP_D22, UP_20K, DEEP, OFF, ACPI),		/* -NFC_DTCT */ -+	PAD_NC(GPP_D23, NONE), -+ -+	/* ------- GPIO Group GPP_E ------- */ -+	PAD_CFG_GPO(GPP_E0, 1, DEEP),					/* BDC_ON */ -+	PAD_NC(GPP_E1, NONE), -+	PAD_CFG_NF(GPP_E2, NONE, DEEP, NF1),				/* -SATA2_DTCT */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_E3, NONE, DEEP, EDGE_SINGLE, ACPI),	/* -TBT_PLUG_EVENT */ -+	PAD_CFG_GPO(GPP_E4, 1, DEEP),					/* NFC_ON */ -+	PAD_NC(GPP_E5, NONE), -+	PAD_CFG_NF(GPP_E6, NONE, RSMRST, NF1),				/* SATA2_DEVSLP */ -+	PAD_NC(GPP_E7, NONE), -+	PAD_NC(GPP_E8, NONE), -+	PAD_CFG_NF(GPP_E9, NONE, DEEP, NF1),				/* -USB_PORT0_OC0 */ -+	PAD_CFG_NF(GPP_E10, NONE, DEEP, NF1),				/* -USB_PORT1_OC1 */ -+	PAD_NC(GPP_E11, NONE), -+	PAD_CFG_GPI_APIC_HIGH(GPP_E12, NONE, DEEP),			/* NFC_INT */ -+	PAD_CFG_NF(GPP_E13, NONE, DEEP, NF1),				/* DDIP1_HPD */ -+	PAD_CFG_NF(GPP_E14, NONE, DEEP, NF1),				/* DDIP2_HPD */ -+	PAD_NC(GPP_E15, NONE), -+	PAD_NC(GPP_E16, NONE), -+	PAD_CFG_NF(GPP_E17, NONE, DEEP, NF1),				/* EDP_HPD */ -+	PAD_NC(GPP_E18, NONE), -+	PAD_CFG_GPO(GPP_E19, 0, DEEP), -+	PAD_CFG_NF(GPP_E20, NONE, DEEP, NF1),				/* DDIP2_CTRLCLK */ -+	PAD_CFG_NF(GPP_E21, NONE, DEEP, NF1),				/* DDIP2_CTRLDATA */ -+	PAD_CFG_TERM_GPO(GPP_E22, 0, UP_20K, RSMRST),			/* -GPU_RST */ -+	PAD_CFG_TERM_GPO(GPP_E23, 0, UP_20K, RSMRST),			/* 1R8VIDEO_AON_ON */ -+ -+	/* ------- GPIO Community 2 ------- */ -+ -+	/* -------- GPIO Group GPD -------- */ -+	PAD_CFG_NF(GPD0, NONE, PWROK, NF1),				/* -BATLOW */ -+	PAD_CFG_NF(GPD1, NATIVE, PWROK, NF1),				/* AC_PRESENT */ -+	PAD_CFG_NF(GPD2, NATIVE, PWROK, NF1),				/* -LANWAKE */ -+	PAD_CFG_NF(GPD3, UP_20K, PWROK, NF1),				/* -PWRSW_EC */ -+	PAD_CFG_NF(GPD4, NONE, PWROK, NF1),				/* -PCH_SLP_S3 */ -+	PAD_CFG_NF(GPD5, NONE, PWROK, NF1),				/* -PCH_SLP_S4 */ -+	PAD_CFG_NF(GPD6, NONE, PWROK, NF1),				/* -PCH_SLP_M */ -+	PAD_NC(GPD7, NONE), -+	PAD_CFG_NF(GPD8, NONE, PWROK, NF1),				/* SUSCLK_32K */ -+	PAD_CFG_NF(GPD9, NONE, PWROK, NF1),				/* -PCH_SLP_WLAN */ -+	PAD_CFG_NF(GPD10, NONE, PWROK, NF1),				/* -PCH_SLP_S5 */ -+	PAD_CFG_NF(GPD11, NONE, PWROK, NF1),				/* LANPHYPC */ -+ -+	/* ------- GPIO Community 3 ------- */ -+ -+	/* ------- GPIO Group GPP_F ------- */ -+	PAD_CFG_GPO(GPP_F0, 0, DEEP), -+	PAD_CFG_GPI_TRIG_OWN(GPP_F1, NONE, DEEP, OFF, ACPI),		/* GC6_FB_EN */ -+	PAD_CFG_GPO(GPP_F2, 1, DEEP),					/* -GPU_EVENT */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F3, NONE, PLTRST, OFF, ACPI),		/* DGFX_PWRGD */ -+	PAD_NC(GPP_F4, NONE),						/* -WWAN_RESET */ -+	PAD_NC(GPP_F5, NONE), -+	PAD_CFG_GPI_TRIG_OWN(GPP_F6, UP_20K, DEEP, OFF, ACPI),		/* -MIC_HW_EN (R37 to GND) */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F7, UP_20K, DEEP, OFF, ACPI),		/* -INT_MIC_DTCT */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F8, UP_20K, DEEP, OFF, ACPI),		/* WWAN_CFG0 */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F9, UP_20K, DEEP, OFF, ACPI),		/* WWAN_CFG1 */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F10, UP_20K, DEEP, OFF, ACPI),		/* WWAN_CFG2 */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F11, UP_20K, DEEP, OFF, ACPI),		/* WWAN_CFG3 */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F12, UP_20K, DEEP, OFF, ACPI),		/* PLANARID0 */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F13, UP_20K, DEEP, OFF, ACPI),		/* PLANARID1 */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F14, UP_20K, DEEP, OFF, ACPI),		/* PLANARID2 */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F15, UP_20K, DEEP, OFF, ACPI),		/* PLANARID3 */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F16, UP_20K, DEEP, OFF, ACPI),		/* MEMORYID0 */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F17, UP_20K, DEEP, OFF, ACPI),		/* MEMORYID1 */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F18, UP_20K, DEEP, OFF, ACPI),		/* MEMORYID2 */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F19, UP_20K, DEEP, OFF, ACPI),		/* MEMORYID3 */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F20, UP_20K, DEEP, OFF, ACPI),		/* MEMORYID4 */ -+	PAD_NC(GPP_F21, NONE), -+	PAD_CFG_GPI_TRIG_OWN(GPP_F22, UP_20K, DEEP, OFF, ACPI),		/* -TAMPER_SW_DTCT */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F23, UP_20K, DEEP, OFF, ACPI),		/* -SC_DTCT */ -+ -+	/* ------- GPIO Group GPP_G ------- */ -+	PAD_NC(GPP_G0, NONE), -+	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_GPI_SCI(GPP_G7, NONE, DEEP, LEVEL, INVERT),		/* -TBT_PCIE_WAKE */ -+}; -+ -+void variant_config_gpios(void) -+{ -+	gpio_configure_pads(gpio_table, ARRAY_SIZE(gpio_table)); -+} -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/hda_verb.c b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/hda_verb.c -new file mode 100644 -index 0000000000..b1d96c5a76 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/hda_verb.c -@@ -0,0 +1,90 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#include <device/azalia_device.h> -+ -+const u32 cim_verb_data[] = { -+	0x10ec0257, // Vendor/Device ID: Realtek ALC257 -+	0x17aa2258, // Subsystem ID -+	11, -+	AZALIA_SUBVENDOR(0, 0x17aa2258), -+ -+	AZALIA_PIN_CFG(0, 0x12, AZALIA_PIN_DESC( -+		AZALIA_INTEGRATED, -+		AZALIA_INTERNAL, -+		AZALIA_MIC_IN, -+		AZALIA_OTHER_DIGITAL, -+		AZALIA_COLOR_UNKNOWN, -+		AZALIA_NO_JACK_PRESENCE_DETECT, -+		2, 0 -+	)), -+	AZALIA_PIN_CFG(0, 0x13, 0x40000000), // does not describe a jack or internal device -+	AZALIA_PIN_CFG(0, 0x14, AZALIA_PIN_DESC( -+		AZALIA_INTEGRATED, -+		AZALIA_INTERNAL, -+		AZALIA_SPEAKER, -+		AZALIA_OTHER_ANALOG, -+		AZALIA_COLOR_UNKNOWN, -+		AZALIA_NO_JACK_PRESENCE_DETECT, -+		1, 0 -+	)), -+	AZALIA_PIN_CFG(0, 0x18, AZALIA_PIN_CFG_NC(0)), -+	AZALIA_PIN_CFG(0, 0x19, AZALIA_PIN_DESC( -+		AZALIA_JACK, -+		AZALIA_EXTERNAL_PRIMARY_CHASSIS | AZALIA_RIGHT, -+		AZALIA_MIC_IN, -+		AZALIA_STEREO_MONO_1_8, -+		AZALIA_BLACK, -+		AZALIA_JACK_PRESENCE_DETECT, -+		3, 0 -+	)), -+	AZALIA_PIN_CFG(0, 0x1a, AZALIA_PIN_CFG_NC(0)), -+	AZALIA_PIN_CFG(0, 0x1b, AZALIA_PIN_CFG_NC(0)), -+	AZALIA_PIN_CFG(0, 0x1d, 0x40661b45), // does not describe a jack or internal device -+	AZALIA_PIN_CFG(0, 0x1e, AZALIA_PIN_CFG_NC(0)), -+	AZALIA_PIN_CFG(0, 0x21, AZALIA_PIN_DESC( -+		AZALIA_JACK, -+		AZALIA_EXTERNAL_PRIMARY_CHASSIS | AZALIA_RIGHT, -+		AZALIA_HP_OUT, -+		AZALIA_STEREO_MONO_1_8, -+		AZALIA_BLACK, -+		AZALIA_JACK_PRESENCE_DETECT, -+		1, 15 -+	)), -+ -+	0x8086280b, // Vendor/Device ID: Intel Kabylake HDMI -+	0x80860101, // Subsystem ID -+	4, -+	AZALIA_SUBVENDOR(2, 0x80860101), -+ -+	AZALIA_PIN_CFG(2, 0x05, AZALIA_PIN_DESC( -+		AZALIA_JACK, -+		AZALIA_DIGITAL_DISPLAY, -+		AZALIA_DIGITAL_OTHER_OUT, -+		AZALIA_OTHER_DIGITAL, -+		AZALIA_COLOR_UNKNOWN, -+		AZALIA_JACK_PRESENCE_DETECT, -+		1, 0 -+	)), -+	AZALIA_PIN_CFG(2, 0x06, AZALIA_PIN_DESC( -+		AZALIA_JACK, -+		AZALIA_DIGITAL_DISPLAY, -+		AZALIA_DIGITAL_OTHER_OUT, -+		AZALIA_OTHER_DIGITAL, -+		AZALIA_COLOR_UNKNOWN, -+		AZALIA_JACK_PRESENCE_DETECT, -+		1, 0 -+	)), -+	AZALIA_PIN_CFG(2, 0x07, AZALIA_PIN_DESC( -+		AZALIA_JACK, -+		AZALIA_DIGITAL_DISPLAY, -+		AZALIA_DIGITAL_OTHER_OUT, -+		AZALIA_OTHER_DIGITAL, -+		AZALIA_COLOR_UNKNOWN, -+		AZALIA_JACK_PRESENCE_DETECT, -+		1, 0 -+	)), -+}; -+ -+const u32 pc_beep_verbs[] = {}; -+ -+AZALIA_ARRAY_SIZES; -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/memory_init_params.c b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/memory_init_params.c -new file mode 100644 -index 0000000000..001e934b3a ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/memory_init_params.c -@@ -0,0 +1,44 @@ -+/* SPDX-License-Identifier: GPL-2.0-only */ -+ -+#include <cbfs.h> -+#include <gpio.h> -+#include <soc/gpio.h> -+#include <soc/romstage.h> -+#include <spd_bin.h> -+#include <stdio.h> -+ -+static const struct pad_config memory_id_gpio_table[] = { -+	PAD_CFG_GPI_TRIG_OWN(GPP_F16, UP_20K, DEEP, OFF, ACPI),		/* MEMORYID0 */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F17, UP_20K, DEEP, OFF, ACPI),		/* MEMORYID1 */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F18, UP_20K, DEEP, OFF, ACPI),		/* MEMORYID2 */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F19, UP_20K, DEEP, OFF, ACPI),		/* MEMORYID3 */ -+	PAD_CFG_GPI_TRIG_OWN(GPP_F20, UP_20K, DEEP, OFF, ACPI),		/* MEMORYID4 */ -+}; -+ -+void mainboard_memory_init_params(FSPM_UPD *mupd) -+{ -+	int spd_idx; -+	char spd_name[20]; -+	size_t spd_size; -+ -+	FSP_M_CONFIG *mem_cfg = &mupd->FspmConfig; -+	mem_cfg->DqPinsInterleaved = true;			/* DDR_DQ in interleave mode */ -+	mem_cfg->CaVrefConfig      = 2;				/* VREF_CA to CH_A and VREF_DQ_B to CH_B */ -+	mem_cfg->MemorySpdDataLen  = CONFIG_DIMM_SPD_SIZE; -+ -+	/* Get SPD for soldered RAM SPD (CH A) */ -+	gpio_configure_pads(memory_id_gpio_table, ARRAY_SIZE(memory_id_gpio_table)); -+ -+	spd_idx = gpio_get(GPP_F16) | gpio_get(GPP_F17) << 1 | gpio_get(GPP_F18) << 2 | -+		  gpio_get(GPP_F19) << 3 | gpio_get(GPP_F20) << 4; -+	printk(BIOS_DEBUG, "Detected MEMORY_ID = %d\n", spd_idx); -+	snprintf(spd_name, sizeof(spd_name), "spd_%d.bin", spd_idx); -+	mem_cfg->MemorySpdPtr00    = (uintptr_t)cbfs_map(spd_name, &spd_size); -+ -+	/* Get SPD for memory slot (CH B) */ -+	struct spd_block blk = { .addr_map = { [1] = 0x51, } }; -+	get_spd_smbus(&blk); -+	dump_spd_info(&blk); -+ -+	mem_cfg->MemorySpdPtr10    = (uintptr_t)blk.spd_array[1]; -+} -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/overridetree.cb b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/overridetree.cb -new file mode 100644 -index 0000000000..d4afca20c4 ---- /dev/null -+++ b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/overridetree.cb -@@ -0,0 +1,103 @@ -+# SPDX-License-Identifier: GPL-2.0-only -+ -+chip soc/intel/skylake -+	device domain 0 on -+		device ref south_xhci on -+			register "usb2_ports" = "{ -+				[0] = USB2_PORT_MID(OC0),		// JUSB1 (USB-A always on) -+				[1] = USB2_PORT_MID(OC1),		// JUSB2 (USB-A) -+				[2] = USB2_PORT_MID(OC_SKIP),		// JFPR (smartcard slot) -+				[3] = USB2_PORT_MID(OC_SKIP),		// JUSBC (USB-C) -+				[4] = USB2_PORT_MID(OC_SKIP),		// JCAM (IR camera) -+				[5] = USB2_PORT_MID(OC_SKIP),		// JWWAN (M.2 WWAN USB) -+				[6] = USB2_PORT_MID(OC_SKIP),		// JWLAN (M.2 WLAN USB) -+				[7] = USB2_PORT_MID(OC_SKIP),		// JCAM (webcam) -+				[8] = USB2_PORT_MID(OC_SKIP),		// JFPR (fingerprint reader) -+				[9] = USB2_PORT_MID(OC_SKIP),		// JLCD (touch panel) -+			}" -+			register "usb3_ports" = "{ -+				[0] = USB3_PORT_DEFAULT(OC0),		// JUSB1 (USB-A always on) -+				[1] = USB3_PORT_DEFAULT(OC1),		// JUSB2 (USB-A) -+				[2] = USB3_PORT_DEFAULT(OC_SKIP),	// JSD (SD card reader) -+				[3] = USB3_PORT_DEFAULT(OC_SKIP),	// JUSBC (USB-C) -+			}" -+		end -+ -+		device ref sata on -+			# SATA_2 - Main M.2 SATA SSD -+			register "SataPortsEnable[2]" = "1" -+			register "SataPortsDevSlp[2]" = "1" -+		end -+ -+		# PCIe controller 1 - 1x2+2x1 -+		#   PCIE 1-2   - RP1  - dGPU - CLKOUT0 - CLKREQ0 -+		#   PCIE 4     - RP4  - WWAN - CLKOUT1 - CLKREQ1 -+		# -+		# PCIe controller 2 - 2x1+1x2 (lane reversal) -+		#   PCIE 5     - GBE  - GBE  - CLKOUT2 - CLKREQ2 (clobbers RP8) -+		#   PCIE 6     - RP7  - WLAN - CLKOUT3 - CLKREQ3 -+		#   PCIE 7-8   - RP5  - TB3  - CLKOUT4 - CLKREQ4 -+		# -+		# PCIe controller 3 - 1x4 (lane reversal) -+		#   PCIE 9-12  - RP9  - SSD  - CLKOUT5 - CLKREQ5 -+ -+		# dGPU - x2 -+		device ref pcie_rp1 on -+			register "PcieRpEnable[0]"			= "1" -+			register "PcieRpClkReqSupport[0]"		= "1" -+			register "PcieRpClkReqNumber[0]"		= "0" -+			register "PcieRpClkSrcNumber[0]"		= "0" -+			register "PcieRpAdvancedErrorReporting[0]"	= "1" -+			register "PcieRpLtrEnable[0]"			= "1" -+		end -+ -+		# M.2 WWAN - x1 -+		device ref pcie_rp4 on -+			register "PcieRpEnable[3]"			= "1" -+			register "PcieRpClkReqSupport[3]"		= "1" -+			register "PcieRpClkReqNumber[3]"		= "1" -+			register "PcieRpClkSrcNumber[3]"		= "1" -+			register "PcieRpAdvancedErrorReporting[3]"	= "1" -+			register "PcieRpLtrEnable[3]"			= "1" -+		end -+ -+		# Ethernet (clobbers RP8) -+		device ref gbe on -+			register "LanClkReqSupported"			= "1" -+			register "LanClkReqNumber"			= "2" -+			register "EnableLanLtr"				= "1" -+			register "EnableLanK1Off"			= "1" -+		end -+ -+		# M.2 WLAN - x1 -+		device ref pcie_rp7 on -+			register "PcieRpEnable[6]"			= "1" -+			register "PcieRpClkReqSupport[6]"		= "1" -+			register "PcieRpClkReqNumber[6]"		= "3" -+			register "PcieRpClkSrcNumber[6]"		= "3" -+			register "PcieRpAdvancedErrorReporting[6]"	= "1" -+			register "PcieRpLtrEnable[6]"			= "1" -+		end -+ -+		# TB3 (Alpine Ridge LP) - x2 -+		device ref pcie_rp5 on -+			register "PcieRpEnable[4]"			= "1" -+			register "PcieRpClkReqSupport[4]"		= "1" -+			register "PcieRpClkReqNumber[4]"		= "4" -+			register "PcieRpClkSrcNumber[4]"		= "4" -+			register "PcieRpAdvancedErrorReporting[4]"	= "1" -+			register "PcieRpLtrEnable[4]"			= "1" -+			register "PcieRpHotPlug[4]"			= "1" -+		end -+ -+		# M.2 2280 SSD - x2 -+		device ref pcie_rp9 on -+			register "PcieRpEnable[8]"			= "1" -+			register "PcieRpClkReqSupport[8]"		= "1" -+			register "PcieRpClkReqNumber[8]"		= "5" -+			register "PcieRpClkSrcNumber[8]"		= "5" -+			register "PcieRpAdvancedErrorReporting[8]"	= "1" -+			register "PcieRpLtrEnable[8]"			= "1" -+		end -+	end -+end -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_0.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_0.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..86f39ddb55ea9fb58d5e5699637636ef597c734e -GIT binary patch -literal 512 -zcmY!u;9+)EWZ+<6U|?oq29gXMJYRrxPEL*>N67~+1r7#Qh7a1t+8`-(puhlu3{YAD -YT>%dM8_BI;nL`dsaHtp+rc($20I8n}l>h($ - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_1.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_1.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..df0f6e58b79286a4aeb690c5027adf7a1f5f668b -GIT binary patch -literal 512 -zcmY!u;9+i6oWQ}rz`)GN3?vyic)kGXoSYm%j*<^t3LFfq3@hZcwLwzoK!E`Q8KATR -Yx&j>hH(SqvWezd%<4`dwOs5b40B_I==>Px# - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_10.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_10.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..24f0d8992bc5244c62488da9633e4885f52f3e22 -GIT binary patch -literal 512 -zcmY!u<Y9JIWZ+;(U|?oqW&i?q-XHu740(BZf(&^dxD+@TSQ$QOn`kgpFo@WI<Pkv3 -zjN25185j^Oge*SRoUI_)=hwI&^9wTJQ%GaE+Z>cy&~OfFg0G3Wp`)phiHWn5fv$6q -PvjPw>z-1}5hGzN!nb#F$ - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_11.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_11.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..59b6b9e78263c42aae367ab7d4a784d888f30efe -GIT binary patch -literal 512 -zcmY!u<Y8`AWZ+;(U|?osW&i?q-XHu740(BZf(&^dxD+@TSQ%DGYiKZ3Fo@WI<Pm^J -zTbD)5RGF87L5G`J#gvCx7a@nAHD@bG{`ob#fBb?9_?6OB_I)U&#y6aUn&4|<Zs=&} -YZDQ=?WT@*L<g5S$3~*UWt)ZEI0F{0fq5uE@ - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_12.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_12.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..93be0ac94fc57222cd29e34eee11042d7842ac25 -GIT binary patch -literal 512 -zcmY!u<Y9JIWZ+;(U|?oqW&i?q-XHu740(BZf(&^dxD+@TSQ$QOn`kgpFo@WI<Pkv3 -zjN25185j^Oge*SRoUI_)=hwI&^9wTJQ%GaE+Z>cy(6E*fVuXjUqlKwqu$iM<keQ!u -VsD}a&Ff^?FkI#a;_$28g2LQ`x7jOUo - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_13.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_13.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..171a272bc734b72395622bf889d24972ef2d14f7 -GIT binary patch -literal 512 -zcmY!u<Y8`AWZ+;(U|?osW&i?q-XHu740(BZf(&^dxD+@TSQ%DGYiKZ3Fo@WI<Pkv3 -zjN25185j^Oge*SRoUI_)=hr%!_!*h-DWtL7fk%{D(6E*fVuXjUqob)|u$iN8keQ!u -VsD}a&Ff^?FkI#a;_$28g2LP>g7pDLK - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_14.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_14.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..a2a64a5e1adada3fc00b2e4edc60c77e610881a9 -GIT binary patch -literal 512 -zcmY!u<Y9JIWZ+;(U|?oqW&i><-XH%N8S?V-1R3%^a4B#wurhqmHql_HU=XnZ$x{Q& -z*$Oh{IYWaWKO+-03?$Qx1CPkm2-nu217(^xhPas;8kw1RMCls2o4FbS#SI&DT;VDQ -GCj$V){1T)9 - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_15.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_15.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..a2a64a5e1adada3fc00b2e4edc60c77e610881a9 -GIT binary patch -literal 512 -zcmY!u<Y9JIWZ+;(U|?oqW&i><-XH%N8S?V-1R3%^a4B#wurhqmHql_HU=XnZ$x{Q& -z*$Oh{IYWaWKO+-03?$Qx1CPkm2-nu217(^xhPas;8kw1RMCls2o4FbS#SI&DT;VDQ -GCj$V){1T)9 - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_16.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_16.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..a64a5a93fb4aef4d5f63d79cb2582731b9ac5063 -GIT binary patch -literal 512 -NcmZQz7zHCa1ONg600961 - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_17.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_17.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..5f23e86606094d3e5d2011db902ebd4a500bbffa -GIT binary patch -literal 512 -zcmY!u<Y9JIWZ+;(U|?oqW&i><-XHc140(BZf(&^dxD+@TSQ$QOn`kgpFo@WI<Pkv3 -zjN25185j^Oge*SRoUI_)=M3$7{ESTa6w+Akz#~d6Xjsb#F~Y;w(ZbX)*v#20$jnbS -V%v%8n7#i08$7jJ^e3JB$0{}ZV7fApB - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_18.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_18.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..05633943eb5af166da66a2e1f4e74948f75782fb -GIT binary patch -literal 512 -zcmY!u<Y9JIoXEkDz`)GN%m4&zyg%$281nM+1R3%^a4B#wurhqmHql_HU=XnZ$s>T6 -z8Mi42GcX`n2w8lrIa@)p&l&!{<7bq|r;x^SwThHl(6E*fVuXjUqobjFu$i-OkeQ!u -Vn70BDFf^?FkI#a;_$28g2LNS*7)Ag9 - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_19.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_19.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..857da9c9828cdac842329f6cef4539283777268b -GIT binary patch -literal 512 -zcmY!u<Y9JIWZ+;(U|?oqW&i?K-XH(98S?V-1R3%^a4B#wurhqmHql_HU=XnZ$x{Q& -z*$Oh{Il~1>enuv07)YiW2Og2B5w5L42g)>Y3~@6xG%_>sh|)E7H}WzBiW@fQc)?W; -GP6hy+m=i1j - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_2.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_2.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..b5b14cf2dfa06ae183b0379da4dc825129e1589f -GIT binary patch -literal 512 -zcmY!u;9+)EWZ+<6U|?oq29gXMJU@VRUS6IcN7)B11r7#Qh7a1tdLSuupuhlu3{YAD -XT>%b$v*cE=%%S%6I8=-Z(<uZ1pPdSg - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_20.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_20.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..a64a5a93fb4aef4d5f63d79cb2582731b9ac5063 -GIT binary patch -literal 512 -NcmZQz7zHCa1ONg600961 - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_3.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_3.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..d73736008af1eb67456b2fd66f7dec3b6669a442 -GIT binary patch -literal 512 -zcmY!u;9+i&oWQ}rz`)GN3?vyic)kGXoSYm%juHh92G#;*h81$!dLSuupuhlu3{YAD -YT>%b$+tzbnnL|62aHtp+rc($20QGqazW@LL - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_4.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_4.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..829f149547bc24859646c33d5926938d7a1b90cb -GIT binary patch -literal 512 -zcmY!u;9+)EWZ+<6U|?oq29gXMJYRrxPEL*>N67~+1r7#Qh7a1tdLSuupuhlu3{YAD -XT>%b$o8(ro%%OI594bbI=@bG0z{d&v - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_5.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_5.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..a64a5a93fb4aef4d5f63d79cb2582731b9ac5063 -GIT binary patch -literal 512 -NcmZQz7zHCa1ONg600961 - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_6.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_6.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..a64a5a93fb4aef4d5f63d79cb2582731b9ac5063 -GIT binary patch -literal 512 -NcmZQz7zHCa1ONg600961 - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_7.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_7.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..940f1e3cd8e5bd9ea32a82a14edcdcbc8132d8c7 -GIT binary patch -literal 512 -zcmY!u<Y8`AWZ+;(U|?osW&i><-XH%N8S?V-1R3%^a4B#wurjQW(9mG0U=XnZ$x{Q& -z0UPq1A)%L_QJxwGl4(Y*BAFWD+8T7AOcTeDU_*B^6OSleBX=`bLy)jxgN`d)<=|uh -E020*^DF6Tf - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_8.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_8.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..30c84410d417ef7afa8705c93cdb64a9f4e915a0 -GIT binary patch -literal 512 -zcmY!u<Y9JIWZ+;(U|?oqW&i?q-XHZ040(BZf(&^dxD+@TSQ$QOn`kgpFo@WI<f#GX -zYz3L}{MzzRenxp}7)YiWinU~FgllWifig`TL)=Uajm%6uqI8Yijh&1X6cmgabe!NS -H2PXpn6CD!Q - -literal 0 -HcmV?d00001 - -diff --git a/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_9.bin b/src/mainboard/lenovo/sklkbl_thinkpad/variants/t480s/spd/spd_9.bin -new file mode 100644 -index 0000000000000000000000000000000000000000..7facef55b93fe1f67411c00bab84862769461f63 -GIT binary patch -literal 512 -zcmY!u<Y8`AWZ+;(U|?osW&i?q-XHZ040(BZf(&^dxD+@TSQ%DGYiKZ3Fo@WI<f#GX -zYz3L}{F>W!enxp}7)YiWinU~FgllWifig`TLxK(6%}hL^bdB7N9Ss$Lz^FmT39fQ* -FG5`?&65ap+ - -literal 0 -HcmV?d00001 - ---  -2.39.5 - diff --git a/config/coreboot/default/patches/0031-dell-3050micro-disable-nvme-hotplug.patch b/config/coreboot/default/patches/0029-dell-3050micro-disable-nvme-hotplug.patch index c154a9a1..4b036e02 100644 --- a/config/coreboot/default/patches/0031-dell-3050micro-disable-nvme-hotplug.patch +++ b/config/coreboot/default/patches/0029-dell-3050micro-disable-nvme-hotplug.patch @@ -1,7 +1,7 @@ -From 4ffaddc37d30d39f25faeaef73046a6e2ce525e8 Mon Sep 17 00:00:00 2001 +From 17c67799604e0e29192415e97293d71deb457cb2 Mon Sep 17 00:00:00 2001  From: Leah Rowe <info@minifree.org>  Date: Wed, 11 Dec 2024 01:06:01 +0000 -Subject: [PATCH 31/37] dell/3050micro: disable nvme hotplug +Subject: [PATCH 29/40] dell/3050micro: disable nvme hotplug  in my testing, when running my 3050micro for a few days,  the nvme would sometimes randomly rename. @@ -30,10 +30,10 @@ Signed-off-by: Leah Rowe <leah@libreboot.org>   1 file changed, 3 insertions(+), 1 deletion(-)  diff --git a/src/mainboard/dell/optiplex_3050/devicetree.cb b/src/mainboard/dell/optiplex_3050/devicetree.cb -index da11085ab6..2a97306c5d 100644 +index 0d2adff74a..829acacab3 100644  --- a/src/mainboard/dell/optiplex_3050/devicetree.cb  +++ b/src/mainboard/dell/optiplex_3050/devicetree.cb -@@ -45,7 +45,9 @@ chip soc/intel/skylake +@@ -44,7 +44,9 @@ chip soc/intel/skylake   			register "PcieRpAdvancedErrorReporting[20]"     = "1"   			register "PcieRpLtrEnable[20]"                  = "true"   			register "PcieRpClkSrcNumber[20]"               = "3" @@ -45,5 +45,5 @@ index da11085ab6..2a97306c5d 100644   		# Realtek LAN  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0026-soc-intel-skylake-configure-usb-acpi.patch b/config/coreboot/default/patches/0030-soc-intel-skylake-configure-usb-acpi.patch index c411c18b..8a328251 100644 --- a/config/coreboot/default/patches/0026-soc-intel-skylake-configure-usb-acpi.patch +++ b/config/coreboot/default/patches/0030-soc-intel-skylake-configure-usb-acpi.patch @@ -1,7 +1,7 @@ -From 14002b2575d73d3edbc72584502a463e6802cba6 Mon Sep 17 00:00:00 2001 +From 819fe0e89e426d3d875cf8ab4d2de439ba716848 Mon Sep 17 00:00:00 2001  From: Felix Singer <felixsinger@posteo.net>  Date: Wed, 26 Jun 2024 04:24:31 +0200 -Subject: [PATCH 26/37] soc/intel/skylake: configure usb acpi +Subject: [PATCH 30/40] soc/intel/skylake: configure usb acpi  Change-Id: I53fc73046e4b107064fa8c3c617ba6d9b807b71d  Signed-off-by: Felix Singer <felixsinger@posteo.net> @@ -90,5 +90,5 @@ index 6538a1475b..dfb81d496e 100644   		device pci 14.2 alias thermal      off                     end   		device pci 14.3 alias cio          off                     end  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0035-src-intel-skylake-Disable-stack-overflow-debug-optio.patch b/config/coreboot/default/patches/0031-src-intel-skylake-Disable-stack-overflow-debug-optio.patch index eb5f0028..916e54dc 100644 --- a/config/coreboot/default/patches/0035-src-intel-skylake-Disable-stack-overflow-debug-optio.patch +++ b/config/coreboot/default/patches/0031-src-intel-skylake-Disable-stack-overflow-debug-optio.patch @@ -1,7 +1,7 @@ -From 18f4e970ebda43dd538f74398aea463a67040dd3 Mon Sep 17 00:00:00 2001 +From 7194444fbddcf6567d0c82f0986e5deeacaea680 Mon Sep 17 00:00:00 2001  From: Leah Rowe <leah@libreboot.org>  Date: Mon, 6 Jan 2025 01:36:23 +0000 -Subject: [PATCH 35/37] src/intel/skylake: Disable stack overflow debug options +Subject: [PATCH 31/40] src/intel/skylake: Disable stack overflow debug options  The option was appearing in T480/3050micro configs of lbmk,  after updating on the coreboot/next uprev for 20241206 rev8: @@ -37,7 +37,7 @@ Signed-off-by: Leah Rowe <leah@libreboot.org>   1 file changed, 9 insertions(+)  diff --git a/src/soc/intel/skylake/Kconfig b/src/soc/intel/skylake/Kconfig -index d51ffaef7b..42af82a5d8 100644 +index 9191ed0ff8..493a2d835a 100644  --- a/src/soc/intel/skylake/Kconfig  +++ b/src/soc/intel/skylake/Kconfig  @@ -129,6 +129,15 @@ config DCACHE_RAM_SIZE @@ -57,5 +57,5 @@ index d51ffaef7b..42af82a5d8 100644   	hex   	default 0x20400 if FSP_USES_CB_STACK  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0033-soc-intel-skylake-Don-t-compress-FSP-S.patch b/config/coreboot/default/patches/0032-soc-intel-skylake-Don-t-compress-FSP-S.patch index a7ab5a96..cd1ed452 100644 --- a/config/coreboot/default/patches/0033-soc-intel-skylake-Don-t-compress-FSP-S.patch +++ b/config/coreboot/default/patches/0032-soc-intel-skylake-Don-t-compress-FSP-S.patch @@ -1,7 +1,7 @@ -From 49cee334bc7fe9a78b9355b5256a37984bac385a Mon Sep 17 00:00:00 2001 +From 81360b8c28293856e964934d1f356b1312b39ff2 Mon Sep 17 00:00:00 2001  From: Leah Rowe <info@minifree.org>  Date: Thu, 26 Dec 2024 19:45:20 +0000 -Subject: [PATCH 33/37] soc/intel/skylake: Don't compress FSP-S +Subject: [PATCH 32/40] soc/intel/skylake: Don't compress FSP-S  Build systems like lbmk need to reproducibly insert  certain vendor files on release images. @@ -19,7 +19,7 @@ Signed-off-by: Leah Rowe <info@minifree.org>   1 file changed, 1 insertion(+), 1 deletion(-)  diff --git a/src/soc/intel/skylake/Kconfig b/src/soc/intel/skylake/Kconfig -index 9191ed0ff8..d51ffaef7b 100644 +index 493a2d835a..42af82a5d8 100644  --- a/src/soc/intel/skylake/Kconfig  +++ b/src/soc/intel/skylake/Kconfig  @@ -12,7 +12,7 @@ config SOC_INTEL_COMMON_SKYLAKE_BASE @@ -32,5 +32,5 @@ index 9191ed0ff8..d51ffaef7b 100644   	select GENERIC_GPIO_LIB   	select HAVE_FSP_GOP  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0032-lenovo-Add-Kconfig-option-CONFIG_LENOVO_TBFW_BIN.patch b/config/coreboot/default/patches/0033-lenovo-Add-Kconfig-option-CONFIG_LENOVO_TBFW_BIN.patch index e60c102f..487b32a2 100644 --- a/config/coreboot/default/patches/0032-lenovo-Add-Kconfig-option-CONFIG_LENOVO_TBFW_BIN.patch +++ b/config/coreboot/default/patches/0033-lenovo-Add-Kconfig-option-CONFIG_LENOVO_TBFW_BIN.patch @@ -1,7 +1,7 @@ -From 5d8930edfa1d9537ba80e24c0cf8f0c9e4e9ec72 Mon Sep 17 00:00:00 2001 +From 25ff99ff021312387734a10836232a5f3a2d2a12 Mon Sep 17 00:00:00 2001  From: Leah Rowe <info@minifree.org>  Date: Wed, 18 Dec 2024 02:06:18 +0000 -Subject: [PATCH 32/37] lenovo: Add Kconfig option CONFIG_LENOVO_TBFW_BIN +Subject: [PATCH 33/40] lenovo: Add Kconfig option CONFIG_LENOVO_TBFW_BIN  This is used by lbmk to know where a tb.bin file goes,  when extracting and padding TBT.bin from Lenovo ThunderBolt @@ -74,5 +74,5 @@ index 2ffbaab85f..512b326381 100644  +   endif # VENDOR_LENOVO  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0037-Conditional-TBFW-setting-for-T480-T480S.patch b/config/coreboot/default/patches/0034-Conditional-TBFW-setting-for-T480-T480S.patch index 7bca06a7..1aeae433 100644 --- a/config/coreboot/default/patches/0037-Conditional-TBFW-setting-for-T480-T480S.patch +++ b/config/coreboot/default/patches/0034-Conditional-TBFW-setting-for-T480-T480S.patch @@ -1,7 +1,7 @@ -From 9b547c2029611793f895117a807fa2d2c22a5332 Mon Sep 17 00:00:00 2001 +From 57630265c7ba2429a8215757330348733c087db3 Mon Sep 17 00:00:00 2001  From: Leah Rowe <leah@libreboot.org>  Date: Mon, 21 Apr 2025 05:14:45 +0100 -Subject: [PATCH 37/37] Conditional TBFW setting for T480/T480S +Subject: [PATCH 34/40] Conditional TBFW setting for T480/T480S  Otherwise, other boards will define it, which  might trigger the vendor download script, and @@ -33,5 +33,5 @@ index 512b326381..3d3490b35d 100644  +   endif # VENDOR_LENOVO  --  -2.39.5 +2.47.3 diff --git a/config/coreboot/default/patches/0034-soc-intel-pmc-Hardcoded-poweroff-after-power-fail.patch b/config/coreboot/default/patches/0034-soc-intel-pmc-Hardcoded-poweroff-after-power-fail.patch deleted file mode 100644 index ceee75c4..00000000 --- a/config/coreboot/default/patches/0034-soc-intel-pmc-Hardcoded-poweroff-after-power-fail.patch +++ /dev/null @@ -1,82 +0,0 @@ -From 09740dc9d43a8dc24b7416b70476796515af6581 Mon Sep 17 00:00:00 2001 -From: Leah Rowe <info@minifree.org> -Date: Tue, 31 Dec 2024 01:40:42 +0000 -Subject: [PATCH 34/37] soc/intel/pmc: Hardcoded poweroff after power fail - -Coreboot can set the power state for power on after previous -power failure, based on the option table. On the ThinkPad T480, -we have no nvram and, due to coreboot's design, we therefore -have no option table, so the default setting is enabled. - -In my testing, this seems to be that the system will turn on -after a power failure. If your ThinkPad was previously in a state -where it wouldn't turn on when plugging in the power, it'd be fine. - -If your battery ran out later on, this would be triggered and -your ThinkPad would permanently turn on, when plugging in a charger, -and there is currently no way to configure this behaviour. - -We currently only use the common SoC PMC code on the ThinkPad -T480, T480s and the Dell OptiPlex 3050 Micro, at the time of -this patch, and it is desirable that the system be set to power -off after power fail anyway. - -In some cases, you might want the opposite, for example if you're -running a server. This will be documented on the website, for that -reason. - -Signed-off-by: Leah Rowe <info@minifree.org> ---- - src/soc/intel/common/block/pmc/pmclib.c | 36 +++---------------------- - 1 file changed, 4 insertions(+), 32 deletions(-) - -diff --git a/src/soc/intel/common/block/pmc/pmclib.c b/src/soc/intel/common/block/pmc/pmclib.c -index 64b9bb997c..7823775bcb 100644 ---- a/src/soc/intel/common/block/pmc/pmclib.c -+++ b/src/soc/intel/common/block/pmc/pmclib.c -@@ -776,38 +776,10 @@ void pmc_clear_pmcon_sts(void) -  - void pmc_set_power_failure_state(const bool target_on) - { --	const unsigned int state = get_uint_option("power_on_after_fail", --					 CONFIG_MAINBOARD_POWER_FAILURE_STATE); -- --	/* --	 * On the shutdown path (target_on == false), we only need to --	 * update the register for MAINBOARD_POWER_STATE_PREVIOUS. For --	 * all other cases, we don't write the register to avoid clob- --	 * bering the value set on the boot path. This is necessary, --	 * for instance, when we can't access the option backend in SMM. --	 */ -- --	switch (state) { --	case MAINBOARD_POWER_STATE_OFF: --		if (!target_on) --			break; --		printk(BIOS_INFO, "Set power off after power failure.\n"); --		pmc_soc_set_afterg3_en(false); --		break; --	case MAINBOARD_POWER_STATE_ON: --		if (!target_on) --			break; --		printk(BIOS_INFO, "Set power on after power failure.\n"); --		pmc_soc_set_afterg3_en(true); --		break; --	case MAINBOARD_POWER_STATE_PREVIOUS: --		printk(BIOS_INFO, "Keep power state after power failure.\n"); --		pmc_soc_set_afterg3_en(target_on); --		break; --	default: --		printk(BIOS_WARNING, "Unknown power-failure state: %d\n", state); --		break; --	} -+	if (!target_on) -+		return; -+	printk(BIOS_INFO, "Set power off after power failure.\n"); -+	pmc_soc_set_afterg3_en(false); - } -  - /* This function returns the highest assertion duration of the SLP_Sx assertion widths */ ---  -2.39.5 - diff --git a/config/coreboot/default/patches/0035-mb-topton-adl-Add-TWL-variant-X2E_N150.patch b/config/coreboot/default/patches/0035-mb-topton-adl-Add-TWL-variant-X2E_N150.patch new file mode 100644 index 00000000..1edd0d27 --- /dev/null +++ b/config/coreboot/default/patches/0035-mb-topton-adl-Add-TWL-variant-X2E_N150.patch @@ -0,0 +1,106 @@ +From 0a98ff0cbd20484ced53b15f16f8b77d881ffb9e Mon Sep 17 00:00:00 2001 +From: Riku Viitanen <riku.viitanen@protonmail.com> +Date: Thu, 25 Sep 2025 22:45:37 +0300 +Subject: [PATCH 35/40] mb/topton/adl: Add TWL variant (X2E_N150) + +Seems to be the same board but with a Twin Lake processor. +VBT extracted from vendor firmware. This makes HDMI and +DisplayPort work. + +Change-Id: I1018042802cbb8010888847226a2117fd9dfaeb0 +Signed-off-by: Riku Viitanen <riku.viitanen@protonmail.com> +--- + src/mainboard/topton/adl/Kconfig      |  12 +++++++++--- + src/mainboard/topton/adl/Kconfig.name |   3 +++ + src/mainboard/topton/adl/data_twl.vbt | Bin 0 -> 9216 bytes + 3 files changed, 12 insertions(+), 3 deletions(-) + create mode 100644 src/mainboard/topton/adl/data_twl.vbt + +diff --git a/src/mainboard/topton/adl/Kconfig b/src/mainboard/topton/adl/Kconfig +index ffdfae1eee..331e1d624d 100644 +--- a/src/mainboard/topton/adl/Kconfig ++++ b/src/mainboard/topton/adl/Kconfig +@@ -1,6 +1,6 @@ + ## SPDX-License-Identifier: GPL-2.0-or-later +  +-if BOARD_TOPTON_X2F_N100 ++if BOARD_TOPTON_X2F_N100 || BOARD_TOPTON_X2E_N150 +  + config BOARD_SPECIFIC_OPTIONS + 	def_bool y +@@ -12,6 +12,7 @@ config BOARD_SPECIFIC_OPTIONS + 	select SUPERIO_ITE_IT8625E + 	select DRIVERS_UART_8250IO + 	select SOC_INTEL_ALDERLAKE_PCH_N ++	select SOC_INTEL_TWINLAKE if BOARD_TOPTON_X2E_N150 + 	select INTEL_GMA_HAVE_VBT + 	select SOC_INTEL_COMMON_BLOCK_HDA_VERB + 	select HAVE_INTEL_PTT +@@ -20,7 +21,12 @@ config BOARD_SPECIFIC_OPTIONS + config MAINBOARD_DIR + 	default "topton/adl" +  ++config INTEL_GMA_VBT_FILE ++	default "src/mainboard/\$(MAINBOARDDIR)/data.vbt" if BOARD_TOPTON_X2F_N100 ++	default "src/mainboard/\$(MAINBOARDDIR)/data_twl.vbt" if BOARD_TOPTON_X2E_N150 ++ + config MAINBOARD_PART_NUMBER +-	default "X2F_N100" ++	default "X2F_N100" if BOARD_TOPTON_X2F_N100 ++	default "X2E_N150" if BOARD_TOPTON_X2E_N150 +  +-endif # BOARD_TOPTON_X2F_N100 ++endif # BOARD_TOPTON_X2F_N100 || BOARD_TOPTON_X2E_N150 +diff --git a/src/mainboard/topton/adl/Kconfig.name b/src/mainboard/topton/adl/Kconfig.name +index 5b8b5ff602..db0eef29be 100644 +--- a/src/mainboard/topton/adl/Kconfig.name ++++ b/src/mainboard/topton/adl/Kconfig.name +@@ -2,3 +2,6 @@ +  + config BOARD_TOPTON_X2F_N100 + 	bool "X2F_N100" ++ ++config BOARD_TOPTON_X2E_N150 ++	bool "X2E_N150" +diff --git a/src/mainboard/topton/adl/data_twl.vbt b/src/mainboard/topton/adl/data_twl.vbt +new file mode 100644 +index 0000000000000000000000000000000000000000..05fbd5807365b3343e55ecedbd12fabb8a3199e9 +GIT binary patch +literal 9216 +zcmeHML2MgE6#cVnZ(QS$EeWj~+AvA0;DjbwJ8eiKOI^oKsN1BmoiuVKP~6mpM!1bh +zQ<Ng4E+U6qkoHnYD<ljO5(<}a;EYcw2q9TTAPykqMyWV})EjNgpV_rtrwuVJg{InX +z{oV2WH*f#{GdnZ8yKlUIj0T261F@mNv4M^VMM;7J%`Is>-Yxy%k<p1zU@S1vKQt0N +zMuF^r-<#KN03-?7<?<?uH+*h3mG;Ei=<xL9R65laN}Ydgb~-~N!7vS+KAlRZW=_qf +zl5}+Z#Q<e|wa)$vQ|Tl<e&Ot7YNn4OiGpbAJ<!>GfKuNJT}pSCPw^f^OP{x=@8F?Y +zXJ{ZeG8_pH1;)Z7$LUCnhQgzP(b0k7{-KjJ5*s-Z?hlU*gle4?Aq1y07iXqkJu^!^ +z!8Yo{>vV8l?lKKd&ty7jAf2W$hB;4Tsq?9sH&V&YS|=mQfx|`sh!g5^fCVPE`#}a9 +zsHlL)`xD_Z5wN|-v938@Q^cwq64R22!kSk4V-#wPQx09BB@^Ooa4i9{41s33Sk2r< +zK0;0ZS^b&{U!7sNmrWe<2^=R^;wVES?xKmSE&7)*aR%uczZ&8$o4D-&c5Imgt&)#j +zgz<fD;_3k;j?*h~oECB4nmE=BB?lQ3$FhWR@J>P8uj_HJ4#(k}A8x&g7&B1>2or#( +ziF#Md@5Pn7>QZ(mOru^zeFybj)b~+8Lj4T&3)C-BzefEI^=H&yQ2#*v6Lnh>DFxmU +z59?S!aef1(d!$e(MzK{(u6j6%x1#9q&+q23oB$|%*suhW@fW~f4DlZ4N5b|@r<kvC +zLcZoES*U+BOZQ0K236&8v;n}XwleU58Su1#Aa+-fESXZSY#+C4!Ya|WKgriD$BYZ_ +zu(;sj=bJ>vv%T&)C=`C!rs;HbkL*aa7_FOnF5%qI$}TF#h0PhVbrihu-PEHslo*T| +z99(Q}+MFS|3)BF#D(;0IgTdW%N#t7rWUzycG5B%K+c*lP9TuaYs7eOcR3;b&He@B& +zoV~FshB+E-lvVi-2BNcNyjq4&yXID-jjd{YvFroU*#ZwPRa&mXha-noWpdf4s<|?Q +z1bnyS8n;)I$yb`km!i<54C-cIuuSTFpM|belZUrD^=zWCNmZ!X7nn(#zKutr)l?IO +z$FF5G%X^WbowYLhLg$OFD{G&xVmw@J%jTo=ElT9d&Ju$NPp~p(vKj`ZU0q4cClz;; +zj{)w3h=YkS+~=6YJcxihK*nIFRYY;45wa1wQ*kLl*2?ff$NLc(w3=Q%9@rq?cvK60 +zn)~(M4mI9U?h6s>I0HC9+Wfv~Qz4;2eL|LTPs)TxA+wTeXfQGnIdv|TK7Q(K>M{7k +zf_m6eC_L{a($N)=;!6+j$o8psiXaG2p_YVgTOUN(ob({-SSOoheg7o<Hi)1wZoN-H +z1d_0yya(4sTz(9}aJcMPC#-%m@}j*{A+S)Atx+_5FNXM^pS$_AZa8tE2d5$(X9hk= +z7L#h83x&hHC)jk%yv&<V;B0cOyY%eg2JBeY!5fL+4-Vf{>tGLoy;J9W`0zO4@q-WH +z{1Fq+)|Jb-v$Fl~kFcA>_$}1`^HRBIDoYZV-fPCLpwhO*{~d}sCBEO<;&E8+TN$u2 +zU}eC{fRzC&16BsC4E&E7==)gM4KGasXo8NfuM)6I_LyJ%*vCx(^#cGZ0`Y(bal{hi +z4KBA`zl{K!O5Cu3Z?s$S#hJuI(eSwX3BIqkFA@bZh*7W|KFgxyP?>GcPKk`RMw?t= +z(|=;NRT76qw6#{)@^b>Hk|L<cvTXBJ*lrCI7`HExLD12cCbSuE88y7#k9h*Rlm!JS +zayFIx%%M#`DS%dE*p_X3F?QoqB(vGF1hV!#iNF<@7h90ic*bTn7K19SfE%J{OENU7 +z5#L66$)SB;Ez3(5AL-E>aVNGa=cOUUd~sv!9nfp*sPOaZ+xVs0fuGXx2U0!y!oLUb +SeEwbkJq|WZn<bBL2L1wR4t_2G + +literal 0 +HcmV?d00001 + +--  +2.47.3 + diff --git a/config/coreboot/default/patches/0036-soc-intel-alderlake-Disable-MRC_CACHE_USING_MRC_VERS.patch b/config/coreboot/default/patches/0036-soc-intel-alderlake-Disable-MRC_CACHE_USING_MRC_VERS.patch new file mode 100644 index 00000000..565be85a --- /dev/null +++ b/config/coreboot/default/patches/0036-soc-intel-alderlake-Disable-MRC_CACHE_USING_MRC_VERS.patch @@ -0,0 +1,30 @@ +From 8e191c71f11de4cb3d08fe585537f15043cacb1b Mon Sep 17 00:00:00 2001 +From: Riku Viitanen <riku.viitanen@protonmail.com> +Date: Sat, 27 Sep 2025 23:30:46 +0300 +Subject: [PATCH 36/40] soc/intel/alderlake: Disable + MRC_CACHE_USING_MRC_VERSION + +There's some issue with building against the FSP headers in src/vendorcode. +Headers in 3rdparty/fsp work, but since FspProducerDataHeaer.h is missing +from there, we need to disable MRC_CACHE_USING_MRC_VERSION by force. + +Signed-off-by: Riku Viitanen <riku.viitanen@protonmail.com> +--- + src/soc/intel/alderlake/Kconfig | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/soc/intel/alderlake/Kconfig b/src/soc/intel/alderlake/Kconfig +index 51bdf98b9d..739faa3808 100644 +--- a/src/soc/intel/alderlake/Kconfig ++++ b/src/soc/intel/alderlake/Kconfig +@@ -34,7 +34,6 @@ config SOC_INTEL_ALDERLAKE + 	select INTEL_GMA_VERSION_2 + 	select INTEL_TXT_LIB + 	select MP_SERVICES_PPI_V2 +-	select MRC_CACHE_USING_MRC_VERSION if (SOC_INTEL_ALDERLAKE_PCH_N || SOC_INTEL_RAPTORLAKE) && !FSP_USE_REPO + 	select MRC_SETTINGS_PROTECT + 	select PARALLEL_MP_AP_WORK + 	select PLATFORM_USES_FSP2_2 +--  +2.47.3 + diff --git a/config/coreboot/default/patches/0037-Subject-PATCH-1-1-Add-a-p-option-skip-FPTR-checks.patch b/config/coreboot/default/patches/0037-Subject-PATCH-1-1-Add-a-p-option-skip-FPTR-checks.patch new file mode 100644 index 00000000..8cff0c56 --- /dev/null +++ b/config/coreboot/default/patches/0037-Subject-PATCH-1-1-Add-a-p-option-skip-FPTR-checks.patch @@ -0,0 +1,76 @@ +From 8ab86ffd25fc013790c260e564c8b770c13a5342 Mon Sep 17 00:00:00 2001 +From: Leah Rowe <leah@libreboot.org> +Date: Sun, 28 Sep 2025 03:17:50 +0100 +Subject: [PATCH 37/40] Subject: [PATCH 1/1] Add a -p option (skip FPTR checks) + +if you pass -k (keep fptr modules), don't use -r, don't +use -t, you can essentially just use me_cleaner to +extract a ME image without changing it. this is useful +when for example, you just want to set the HAP bit. + +however, me_cleaner still performs a FPTR check. + +on some newer ME versions, it's always invalid according +to me_cleaner, because for example it doesn't handle +ME16 very well yet. + +this patch adds an option to override the FPTR check + +either pass -p or --pass-fptr + +NOTE: we probably won't use this on coreboot's me_cleaner, +which is the corna version. we only need it on the newer +me_cleaner versions for e.g. ME16, on certain setups. +still, it's best to have the patch here too, just in case. + +Signed-off-by: Leah Rowe <leah@libreboot.org> +--- + util/me_cleaner/me_cleaner.py | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +diff --git a/util/me_cleaner/me_cleaner.py b/util/me_cleaner/me_cleaner.py +index fae5e56732..228bac899f 100755 +--- a/util/me_cleaner/me_cleaner.py ++++ b/util/me_cleaner/me_cleaner.py +@@ -246,8 +246,10 @@ def check_partition_signature(f, offset): +     return "{:#x}".format(decrypted_sig).endswith(sha256.hexdigest())   # FIXME +  +  +-def print_check_partition_signature(f, offset): +-    if check_partition_signature(f, offset): ++def print_check_partition_signature(f, offset, pass_fptr): ++    if pass_fptr: ++        print("Skipping FPTR checks because the user told us to") ++    elif check_partition_signature(f, offset): +         print("VALID") +     else: +         print("INVALID!!") +@@ -486,6 +488,8 @@ if __name__ == "__main__": +                         "--extract-me)", action="store_true") +     parser.add_argument("-k", "--keep-modules", help="don't remove the FTPR " +                         "modules, even when possible", action="store_true") ++    parser.add_argument("-p", "--pass-fptr", help="skip FTPR signature checks" ++                        "regardless of other operations", action="store_true") +     bw_list.add_argument("-w", "--whitelist", metavar="whitelist", +                          help="Comma separated list of additional partitions " +                          "to keep in the final image. This can be used to " +@@ -871,12 +875,14 @@ if __name__ == "__main__": +             print("Checking the FTPR RSA signature of the extracted ME " +                   "image... ", end="") +             print_check_partition_signature(mef_copy, +-                                            ftpr_offset + ftpr_mn2_offset) ++                                            ftpr_offset + ftpr_mn2_offset, ++                                                args.pass_fptr) +         mef_copy.close() +  +     if not me6_ignition: +         print("Checking the FTPR RSA signature... ", end="") +-        print_check_partition_signature(mef, ftpr_offset + ftpr_mn2_offset) ++        print_check_partition_signature(mef, ftpr_offset + ftpr_mn2_offset, ++                                                args.pass_fptr) +  +     f.close() +  +--  +2.47.3 + diff --git a/config/coreboot/default/patches/0038-do-not-break-building-other-thinkpads-with-the-hacks.patch b/config/coreboot/default/patches/0038-do-not-break-building-other-thinkpads-with-the-hacks.patch deleted file mode 100644 index 87cde056..00000000 --- a/config/coreboot/default/patches/0038-do-not-break-building-other-thinkpads-with-the-hacks.patch +++ /dev/null @@ -1,153 +0,0 @@ -From 49204919e885dca2be45ffbaf2f5af62109ec3a7 Mon Sep 17 00:00:00 2001 -From: gaspar-ilom <gasparilom@riseup.net> -Date: Thu, 6 Mar 2025 23:00:00 +0000 -Subject: [PATCH 1/1] do not break building other thinkpads with the hacks for - the t480/s made Mate Kukri - -still not fixing things properly but at least it should now be possible to build older thinkpads without regressions. -prior, some code was just commented or unreachable. now we make this explicit with preprocessor directives. -heads should build all boards on this coreboot version from the same coreboot tree. - -Signed-off-by: gaspar-ilom <gasparilom@riseup.net> ---- - src/device/pci_rom.c         |  9 ++++++--- - src/ec/lenovo/h8/acpi/ec.asl |  4 +++- - src/ec/lenovo/h8/bluetooth.c | 14 ++++++++++---- - src/ec/lenovo/h8/wwan.c      | 14 ++++++++++---- - 4 files changed, 29 insertions(+), 12 deletions(-) - -diff --git a/src/device/pci_rom.c b/src/device/pci_rom.c -index bba98d9dea..db3dbbe2ce 100644 ---- a/src/device/pci_rom.c -+++ b/src/device/pci_rom.c -@@ -396,16 +396,19 @@ void pci_rom_ssdt(const struct device *device) - 		rom = cbrom; - 	} -  --#if 0 -+ -+	#if CONFIG(BOARD_LENOVO_SKLKBL_THINKPAD_COMMON) -+	const char *scope = "\\_SB.PCI0.RP01.PEGP"; -+	#else - 	const char *scope = acpi_device_path(device); -+	#endif - 	if (!scope) { - 		printk(BIOS_ERR, "%s: Missing ACPI scope\n", dev_path(device)); - 		return; - 	} --#endif -  - 	/* write _ROM method */ --	acpigen_write_scope("\\_SB.PCI0.RP01.PEGP"); -+	acpigen_write_scope(scope); - 	acpigen_write_rom((void *)rom, rom->size * 512); - 	acpigen_pop_len(); /* pop scope */ - } -diff --git a/src/ec/lenovo/h8/acpi/ec.asl b/src/ec/lenovo/h8/acpi/ec.asl -index 8f4a8e1986..f80c15106c 100644 ---- a/src/ec/lenovo/h8/acpi/ec.asl -+++ b/src/ec/lenovo/h8/acpi/ec.asl -@@ -331,7 +331,9 @@ Device(EC) - #include "sleepbutton.asl" - #include "lid.asl" - #include "beep.asl" --//#include "thermal.asl" -+#if !CONFIG(BOARD_LENOVO_SKLKBL_THINKPAD_COMMON) -+#include "thermal.asl" -+#endif - #include "systemstatus.asl" - #include "thinkpad.asl" - } -diff --git a/src/ec/lenovo/h8/bluetooth.c b/src/ec/lenovo/h8/bluetooth.c -index be71a24ced..e60b6c088c 100644 ---- a/src/ec/lenovo/h8/bluetooth.c -+++ b/src/ec/lenovo/h8/bluetooth.c -@@ -1,6 +1,8 @@ - /* SPDX-License-Identifier: GPL-2.0-only */ -  --// #include <southbridge/intel/common/gpio.h> -+#if !CONFIG(BOARD_LENOVO_SKLKBL_THINKPAD_COMMON) -+#include <southbridge/intel/common/gpio.h> -+#endif - #include <console/console.h> - #include <device/device.h> - #include <ec/acpi/ec.h> -@@ -26,23 +28,27 @@ void h8_bluetooth_enable(int on) -  */ - bool h8_has_bdc(const struct device *dev) - { -+	#if CONFIG(BOARD_LENOVO_SKLKBL_THINKPAD_COMMON) -+	printk(BIOS_INFO, "H8: BDC detection not implemented. " -+			  "Assuming BDC installed\n"); -+	return true; -+	#else - 	struct ec_lenovo_h8_config *conf = dev->chip_info; -  --	if (1 || !conf->has_bdc_detection) { -+	if (!conf->has_bdc_detection) { - 		printk(BIOS_INFO, "H8: BDC detection not implemented. " - 				  "Assuming BDC installed\n"); - 		return true; - 	} -  --#if 0 - 	if (get_gpio(conf->bdc_gpio_num) == conf->bdc_gpio_lvl) { - 		printk(BIOS_INFO, "H8: BDC installed\n"); - 		return true; - 	} --#endif -  - 	printk(BIOS_INFO, "H8: BDC not installed\n"); - 	return false; -+	#endif - } -  - /* -diff --git a/src/ec/lenovo/h8/wwan.c b/src/ec/lenovo/h8/wwan.c -index 5cdcf77406..b4f5787e01 100644 ---- a/src/ec/lenovo/h8/wwan.c -+++ b/src/ec/lenovo/h8/wwan.c -@@ -1,6 +1,8 @@ - /* SPDX-License-Identifier: GPL-2.0-only */ -  --// #include <southbridge/intel/common/gpio.h> -+#if !CONFIG(BOARD_LENOVO_SKLKBL_THINKPAD_COMMON) -+#include <southbridge/intel/common/gpio.h> -+#endif - #include <console/console.h> - #include <device/device.h> - #include <ec/acpi/ec.h> -@@ -24,23 +26,27 @@ void h8_wwan_enable(int on) -  */ - bool h8_has_wwan(const struct device *dev) - { -+	#if CONFIG(BOARD_LENOVO_SKLKBL_THINKPAD_COMMON) -+	printk(BIOS_INFO, "H8: WWAN detection not implemented. " -+			  "Assuming WWAN installed\n"); -+	return true; -+	#else - 	struct ec_lenovo_h8_config *conf = dev->chip_info; -  --	if (1 || !conf->has_wwan_detection) { -+	if (!conf->has_wwan_detection) { - 		printk(BIOS_INFO, "H8: WWAN detection not implemented. " - 				  "Assuming WWAN installed\n"); - 		return true; - 	} -  --#if 0 - 	if (get_gpio(conf->wwan_gpio_num) == conf->wwan_gpio_lvl) { - 		printk(BIOS_INFO, "H8: WWAN installed\n"); - 		return true; - 	} --#endif -  - 	printk(BIOS_INFO, "H8: WWAN not installed\n"); - 	return false; -+	#endif - } -  - /* ---  -2.39.5 - diff --git a/config/coreboot/default/patches/0038-soc-intel-alderlake-Don-t-compress-FSP-S.patch b/config/coreboot/default/patches/0038-soc-intel-alderlake-Don-t-compress-FSP-S.patch new file mode 100644 index 00000000..545f2076 --- /dev/null +++ b/config/coreboot/default/patches/0038-soc-intel-alderlake-Don-t-compress-FSP-S.patch @@ -0,0 +1,35 @@ +From c36ed52f7573563a9eaeeedd6e6c0ee75973a39d Mon Sep 17 00:00:00 2001 +From: Leah Rowe <leah@libreboot.org> +Date: Sat, 4 Oct 2025 21:57:43 +0100 +Subject: [PATCH 38/40] soc/intel/alderlake: Don't compress FSP-S + +Build systems like lbmk need to reproducibly insert +certain vendor files on release images. + +Compression isn't always reproducible, and making it +so costs a lot more time than simply disabling compression. + +With this change, FSP-S uses slightly more space inside +the flash, but it's not that much. + +Signed-off-by: Leah Rowe <leah@libreboot.org> +--- + src/soc/intel/alderlake/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/soc/intel/alderlake/Kconfig b/src/soc/intel/alderlake/Kconfig +index 739faa3808..1f6a1dca7d 100644 +--- a/src/soc/intel/alderlake/Kconfig ++++ b/src/soc/intel/alderlake/Kconfig +@@ -14,7 +14,7 @@ config SOC_INTEL_ALDERLAKE + 	select DISPLAY_FSP_VERSION_INFO + 	select DRIVERS_USB_ACPI + 	select EDK2_CPU_TIMER_LIB if PAYLOAD_EDK2 +-	select FSP_COMPRESS_FSP_S_LZ4 ++#	select FSP_COMPRESS_FSP_S_LZ4 + 	select FAST_SPI_SUPPORTS_EXT_BIOS_WINDOW + 	select FSP_M_XIP + 	select FSP_MULTIPHASE_SI_INIT_RETURN_BROKEN +--  +2.47.3 + diff --git a/config/coreboot/default/patches/0039-alderlake-don-t-require-full-fsp-repo-for-fd-path.patch b/config/coreboot/default/patches/0039-alderlake-don-t-require-full-fsp-repo-for-fd-path.patch new file mode 100644 index 00000000..ed7d98e0 --- /dev/null +++ b/config/coreboot/default/patches/0039-alderlake-don-t-require-full-fsp-repo-for-fd-path.patch @@ -0,0 +1,33 @@ +From e564490781b0b829da43534c6c2a1b26aeb3282f Mon Sep 17 00:00:00 2001 +From: Leah Rowe <leah@libreboot.org> +Date: Sat, 4 Oct 2025 22:20:11 +0100 +Subject: [PATCH 39/40] alderlake: don't require full fsp repo for fd path + +Signed-off-by: Leah Rowe <leah@libreboot.org> +--- + src/soc/intel/alderlake/Kconfig | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/src/soc/intel/alderlake/Kconfig b/src/soc/intel/alderlake/Kconfig +index 1f6a1dca7d..3979d9e162 100644 +--- a/src/soc/intel/alderlake/Kconfig ++++ b/src/soc/intel/alderlake/Kconfig +@@ -415,7 +415,14 @@ config FSP_HEADER_PATH +  + config FSP_FD_PATH + 	string +-	depends on FSP_USE_REPO ++#	dependency removed for lbmk purposes, so that the path is present ++#	in the config regardless of whether it's used. this is for ./mk -d ++#	on alderlake boards, which is used by lbmk to manually split fsp, ++#	even though the result is identical to what coreboot produces, because ++#	this enables lbmk to strip the fsp in release archives, and re-insert ++#	for compliance reasons (due to technicalities in intel's licensing), ++#	and to enable lbmk's advanced checksum verification of vendor files ++#	depends on FSP_USE_REPO + 	default "3rdparty/fsp/RaptorLakeFspBinPkg/IoT/RaptorLakeP/FSP.fd"   if FSP_TYPE_IOT && SOC_INTEL_ALDERLAKE_PCH_P && SOC_INTEL_RAPTORLAKE + 	default "3rdparty/fsp/RaptorLakeFspBinPkg/IoT/RaptorLakeS/FSP.fd"   if FSP_TYPE_IOT && SOC_INTEL_RAPTORLAKE_PCH_S + 	default "3rdparty/fsp/AlderLakeFspBinPkg/IoT/AlderLakeP/Fsp.fd"     if FSP_TYPE_IOT && SOC_INTEL_ALDERLAKE_PCH_P +--  +2.47.3 + diff --git a/config/coreboot/default/patches/0040-Haswell-NRI-Implement-SMBIOS-type-16-17.patch b/config/coreboot/default/patches/0040-Haswell-NRI-Implement-SMBIOS-type-16-17.patch new file mode 100644 index 00000000..4fdf2476 --- /dev/null +++ b/config/coreboot/default/patches/0040-Haswell-NRI-Implement-SMBIOS-type-16-17.patch @@ -0,0 +1,184 @@ +From 0fdb23e899e31b17a774ae9151410b11ccf13022 Mon Sep 17 00:00:00 2001 +From: Ron Nazarov <ron@noisytoot.org> +Date: Tue, 30 Sep 2025 22:36:53 +0100 +Subject: [PATCH 40/40] Haswell NRI: Implement SMBIOS type 16/17 + +Based on the implementation from Ivy/Sandy Bridge NRI. + +Tested on a Dell OptiPlex 9020 SFF with libreboot. + +Change-Id: I5e153258f9f88726f54c98baac0b1788a839f934 +Signed-off-by: Ron Nazarov <ron@noisytoot.org> +--- + .../haswell/native_raminit/raminit_main.c     |  6 +- + .../haswell/native_raminit/raminit_native.c   | 83 +++++++++++++++++-- + .../haswell/native_raminit/raminit_native.h   |  2 +- + 3 files changed, 81 insertions(+), 10 deletions(-) + +diff --git a/src/northbridge/intel/haswell/native_raminit/raminit_main.c b/src/northbridge/intel/haswell/native_raminit/raminit_main.c +index 84db33ebdf..328f777ee1 100644 +--- a/src/northbridge/intel/haswell/native_raminit/raminit_main.c ++++ b/src/northbridge/intel/haswell/native_raminit/raminit_main.c +@@ -245,7 +245,7 @@ static enum raminit_status try_raminit( + 	return status; + } +  +-void raminit_main(const enum raminit_boot_mode bootmode) ++const struct sysinfo *raminit_main(const enum raminit_boot_mode bootmode) + { + 	/* + 	 * The mighty_ctrl struct. Will happily nuke the pre-RAM stack +@@ -261,7 +261,7 @@ void raminit_main(const enum raminit_boot_mode bootmode) + 	if (bootmode != BOOTMODE_COLD) { + 		status = try_raminit(&mighty_ctrl, fast_boot, ARRAY_SIZE(fast_boot)); + 		if (status == RAMINIT_STATUS_SUCCESS) +-			return; ++			return &mighty_ctrl; + 	} +  + 	/** TODO: Try more than once **/ +@@ -269,4 +269,6 @@ void raminit_main(const enum raminit_boot_mode bootmode) +  + 	if (status != RAMINIT_STATUS_SUCCESS) + 		die("Memory initialization was met with utmost failure and misery\n"); ++ ++	return &mighty_ctrl; + } +diff --git a/src/northbridge/intel/haswell/native_raminit/raminit_native.c b/src/northbridge/intel/haswell/native_raminit/raminit_native.c +index 3ad8ce29e7..73532592e8 100644 +--- a/src/northbridge/intel/haswell/native_raminit/raminit_native.c ++++ b/src/northbridge/intel/haswell/native_raminit/raminit_native.c +@@ -16,6 +16,73 @@ +  + #include "raminit_native.h" +  ++static uint8_t nb_get_ecc_type(const uint32_t capid0_a) ++{ ++	return capid0_a & CAPID_ECCDIS ? MEMORY_ARRAY_ECC_NONE : MEMORY_ARRAY_ECC_SINGLE_BIT; ++} ++ ++static uint16_t nb_slots_per_channel(const uint32_t capid0_a) ++{ ++	return !(capid0_a & CAPID_DDPCD) + 1; ++} ++ ++static uint16_t nb_number_of_channels(const uint32_t capid0_a) ++{ ++	return !(capid0_a & CAPID_PDCD) + 1; ++} ++ ++static uint32_t nb_max_chan_capacity_mib(const uint32_t capid0_a) ++{ ++	uint32_t ddrsz; ++ ++	/* Values from documentation, which assume two DIMMs per channel */ ++	switch (CAPID_DDRSZ(capid0_a)) { ++	case 1: ++		ddrsz = 8192; ++		break; ++	case 2: ++		ddrsz = 2048; ++		break; ++	case 3: ++		ddrsz = 512; ++		break; ++	default: ++		ddrsz = 16384; ++		break; ++	} ++ ++	/* Account for the maximum number of DIMMs per channel */ ++	return (ddrsz / 2) * nb_slots_per_channel(capid0_a); ++} ++ ++/* Fill cbmem with information for SMBIOS type 16 and type 17 */ ++static void setup_sdram_meminfo(const struct sysinfo *ctrl) ++{ ++	const u16 ddr_freq = (1000 << 8) / ctrl->tCK; ++ ++	for (uint8_t channel = 0; channel < NUM_CHANNELS; channel++) { ++		for (uint8_t slot = 0; slot < NUM_SLOTS; slot++) { ++			enum cb_err ret = spd_add_smbios17(channel, slot, ddr_freq, ++						&ctrl->dimms[channel][slot].data); ++			if (ret != CB_SUCCESS) ++				printk(BIOS_ERR, "RAMINIT: Failed to add SMBIOS17\n"); ++		} ++	} ++ ++	/* The 'spd_add_smbios17' function allocates this CBMEM area */ ++	struct memory_info *m = cbmem_find(CBMEM_ID_MEMINFO); ++	if (!m) ++		return; ++ ++	const uint32_t capid0_a = pci_read_config32(HOST_BRIDGE, CAPID0_A); ++ ++	const uint16_t channels = nb_number_of_channels(capid0_a); ++ ++	m->ecc_type = nb_get_ecc_type(capid0_a); ++	m->max_capacity_mib = channels * nb_max_chan_capacity_mib(capid0_a); ++	m->number_of_devices = channels * nb_slots_per_channel(capid0_a); ++} ++ + static void wait_txt_clear(void) + { + 	const struct cpuid_result cpuid = cpuid_ext(1, 0); +@@ -90,7 +157,8 @@ static void raminit_reset(void) + static enum raminit_boot_mode do_actual_raminit( + 	const bool s3resume, + 	const bool cpu_replaced, +-	const enum raminit_boot_mode orig_bootmode) ++	const enum raminit_boot_mode orig_bootmode, ++	const struct sysinfo **ctrl) + { + 	struct mrc_data md = prepare_mrc_cache(); +  +@@ -158,7 +226,7 @@ static enum raminit_boot_mode do_actual_raminit( + 	 * And now, the actual memory initialization thing. + 	 */ + 	printk(RAM_DEBUG, "\nStarting native raminit\n"); +-	raminit_main(bootmode); ++	*ctrl = raminit_main(bootmode); +  + 	return bootmode; + } +@@ -176,8 +244,9 @@ void perform_raminit(const int s3resume) + 	wait_txt_clear(); + 	wrmsr(0x2e6, (msr_t) {.lo = 0, .hi = 0}); +  ++	const struct sysinfo *ctrl; + 	const enum raminit_boot_mode bootmode = +-			do_actual_raminit(s3resume, cpu_replaced, orig_bootmode); ++			do_actual_raminit(s3resume, cpu_replaced, orig_bootmode, &ctrl); +  + 	/** TODO: report_memory_config **/ +  +@@ -204,9 +273,9 @@ void perform_raminit(const int s3resume) + 		system_reset(); + 	} +  +-	/* Save training data on non-S3 resumes */ +-	if (!s3resume) ++	/* Save training data and set up SMBIOS type 16/17 on non-S3 resumes */ ++	if (!s3resume) { + 		save_mrc_data(); +- +-	/** TODO: setup_sdram_meminfo **/ ++		setup_sdram_meminfo(ctrl); ++	} + } +diff --git a/src/northbridge/intel/haswell/native_raminit/raminit_native.h b/src/northbridge/intel/haswell/native_raminit/raminit_native.h +index b9e84a11df..1401feedc5 100644 +--- a/src/northbridge/intel/haswell/native_raminit/raminit_native.h ++++ b/src/northbridge/intel/haswell/native_raminit/raminit_native.h +@@ -476,7 +476,7 @@ static inline void mchbar_write64(const uintptr_t x, const uint64_t v) + 		  "m"(mmxsave)); + } +  +-void raminit_main(enum raminit_boot_mode bootmode); ++const struct sysinfo *raminit_main(enum raminit_boot_mode bootmode); +  + enum raminit_status collect_spd_info(struct sysinfo *ctrl); + enum raminit_status initialise_mpll(struct sysinfo *ctrl); +--  +2.47.3 + diff --git a/config/coreboot/default/patches/0041-soc-alderlake-disable-stack-overflow-debug-option.patch b/config/coreboot/default/patches/0041-soc-alderlake-disable-stack-overflow-debug-option.patch new file mode 100644 index 00000000..979eff9b --- /dev/null +++ b/config/coreboot/default/patches/0041-soc-alderlake-disable-stack-overflow-debug-option.patch @@ -0,0 +1,46 @@ +From 9936228e74ef8bccbf6adb8640040901d395cda0 Mon Sep 17 00:00:00 2001 +From: Leah Rowe <leah@libreboot.org> +Date: Mon, 6 Oct 2025 04:47:06 +0100 +Subject: [PATCH 1/1] soc/alderlake: disable stack overflow debug option + +same as on other boards. based on this commit: + +commit 51cc2bacb6b07279b97e9934d079060475481fb6 +Author: Subrata Banik <subratabanik@google.com> +Author: Subrata Banik <subratabanik@google.com> +Date:   Fri Dec 13 13:07:28 2024 +0530 + +    soc/intel/pantherlake: Disable stack overflow debug options + +yeah, i've been replicating this change per platform. + +we do alderlake now in libreboot, so let's set that here too. + +Signed-off-by: Leah Rowe <leah@libreboot.org> +--- + src/soc/intel/alderlake/Kconfig | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/src/soc/intel/alderlake/Kconfig b/src/soc/intel/alderlake/Kconfig +index 3979d9e162..a47a27dfaf 100644 +--- a/src/soc/intel/alderlake/Kconfig ++++ b/src/soc/intel/alderlake/Kconfig +@@ -329,6 +329,15 @@ config SOC_INTEL_UFS_CLK_FREQ_HZ + 	int + 	default 19200000 +  ++# Override DEBUG Kconfig to avoid false alarm about stack overflow. ++config DEBUG_STACK_OVERFLOW_BREAKPOINTS ++	bool ++	default n ++ ++config DEBUG_STACK_OVERFLOW_BREAKPOINTS_IN_ALL_STAGES ++	bool ++	default n ++ + config DRIVERS_I2C_DESIGNWARE_CLOCK_MHZ + 	int + 	default 133 +--  +2.47.3 + | 
