From b95ef282ff785f63ce2a74ff0140072856893687 Mon Sep 17 00:00:00 2001 From: Patrick Rudolph Date: Sat, 4 Nov 2023 11:08:25 +0100 Subject: [PATCH] sb/intel/bd82x6x/pch: Add method to identify PCH Identify PCH type by LPC device ID. This allows to identify the PCH without including northbridge headers. Tested: Lenovo X220 still boots. Change-Id: Ic3e15c1d8d4b1d1012d6204cc65de92d91431fbe Signed-off-by: Patrick Rudolph Reviewed-on: https://review.coreboot.org/c/coreboot/+/79145 Tested-by: build bot (Jenkins) Reviewed-by: Felix Held --- src/southbridge/intel/bd82x6x/common.c | 21 +++++++++++++++++++++ src/southbridge/intel/bd82x6x/pch.h | 1 + 2 files changed, 22 insertions(+) diff --git a/src/southbridge/intel/bd82x6x/common.c b/src/southbridge/intel/bd82x6x/common.c index f4c757a060..7163d3edc7 100644 --- a/src/southbridge/intel/bd82x6x/common.c +++ b/src/southbridge/intel/bd82x6x/common.c @@ -32,6 +32,27 @@ int pch_silicon_type(void) return pch_type; } +bool pch_is_mobile(void) +{ + const u16 devids[] = { + PCI_DID_INTEL_6_SERIES_MOBILE_SFF, PCI_DID_INTEL_6_SERIES_MOBILE, + PCI_DID_INTEL_6_SERIES_UM67, PCI_DID_INTEL_6_SERIES_HM65, + PCI_DID_INTEL_6_SERIES_HM67, PCI_DID_INTEL_6_SERIES_QS67, + PCI_DID_INTEL_6_SERIES_QM67, + PCI_DID_INTEL_7_SERIES_MOBILE, PCI_DID_INTEL_7_SERIES_MOBILE_SFF, + PCI_DID_INTEL_7_SERIES_QM77, PCI_DID_INTEL_7_SERIES_QS77, + PCI_DID_INTEL_7_SERIES_HM77, PCI_DID_INTEL_7_SERIES_UM77, + PCI_DID_INTEL_7_SERIES_HM76, PCI_DID_INTEL_7_SERIES_HM75, + PCI_DID_INTEL_7_SERIES_HM70, PCI_DID_INTEL_7_SERIES_NM70 + }; + u16 devid = pci_s_read_config16(PCH_LPC_DEV, PCI_DEVICE_ID); + + for (size_t i = 0; i < ARRAY_SIZE(devids); i++) + if (devid == devids[i]) + return true; + return false; +} + int pch_silicon_supported(int type, int rev) { int cur_type = pch_silicon_type(); diff --git a/src/southbridge/intel/bd82x6x/pch.h b/src/southbridge/intel/bd82x6x/pch.h index 3bb8701e5c..88c8df5c4a 100644 --- a/src/southbridge/intel/bd82x6x/pch.h +++ b/src/southbridge/intel/bd82x6x/pch.h @@ -35,6 +35,7 @@ int pch_silicon_revision(void); int pch_silicon_type(void); int pch_silicon_supported(int type, int rev); +bool pch_is_mobile(void); void pch_iobp_update(u32 address, u32 andvalue, u32 orvalue); void enable_usb_bar(void);