soc/intel/common/p2sb: Add helper function to determine p2sb state

Change-Id: I1d6f9c18160806e289e98c2fa5d290c61434112f
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/47530
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-by: Christian Walter <christian.walter@9elements.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
diff --git a/src/soc/intel/common/block/p2sb/p2sb.c b/src/soc/intel/common/block/p2sb/p2sb.c
index d97cd8d..9673a2c 100644
--- a/src/soc/intel/common/block/p2sb/p2sb.c
+++ b/src/soc/intel/common/block/p2sb/p2sb.c
@@ -15,6 +15,18 @@
 
 #define HIDE_BIT (1 << 0)
 
+static bool p2sb_is_hidden(void)
+{
+	const uint16_t pci_vid = pci_read_config16(PCH_DEV_P2SB, PCI_VENDOR_ID);
+
+	if (pci_vid == 0xffff)
+		return true;
+	if (pci_vid == PCI_VENDOR_ID_INTEL)
+		return false;
+	printk(BIOS_ERR, "P2SB PCI_VENDOR_ID is invalid, unknown if hidden\n");
+	return true;
+}
+
 void p2sb_enable_bar(void)
 {
 	/* Enable PCR Base address in PCH */
@@ -59,8 +71,7 @@
 {
 	p2sb_set_hide_bit(0);
 
-	if (pci_read_config16(PCH_DEV_P2SB, PCI_VENDOR_ID) !=
-			PCI_VENDOR_ID_INTEL)
+	if (p2sb_is_hidden())
 		die_with_post_code(POST_HW_INIT_FAILURE,
 				   "Unable to unhide PCH_DEV_P2SB device !\n");
 }
@@ -69,8 +80,7 @@
 {
 	p2sb_set_hide_bit(1);
 
-	if (pci_read_config16(PCH_DEV_P2SB, PCI_VENDOR_ID) !=
-			0xFFFF)
+	if (!p2sb_is_hidden())
 		die_with_post_code(POST_HW_INIT_FAILURE,
 				   "Unable to hide PCH_DEV_P2SB device !\n");
 }