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>
This commit is contained in:
Arthur Heymans 2020-11-12 20:41:57 +01:00
parent 7ba970aa78
commit a8798a3179
1 changed files with 14 additions and 4 deletions

View File

@ -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 @@ void p2sb_unhide(void)
{
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 @@ void p2sb_hide(void)
{
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");
}