summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPatrick Rudolph <patrick.rudolph@9elements.com>2023-11-04 11:08:25 +0100
committerShelley Chen <shchen@google.com>2023-12-26 17:03:56 +0000
commitb95ef282ff785f63ce2a74ff0140072856893687 (patch)
treec25cd42c3594c53ac809eb8b307fd835a1a55c7d /src
parentf20c355a1f7b22c8d8540318c5137e438538d63e (diff)
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 <patrick.rudolph@9elements.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/79145 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
Diffstat (limited to 'src')
-rw-r--r--src/southbridge/intel/bd82x6x/common.c21
-rw-r--r--src/southbridge/intel/bd82x6x/pch.h1
2 files changed, 22 insertions, 0 deletions
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);