Shuo Liu has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/81321?usp=email )
Change subject: intel/common/block: Use fixed BDF for IBL ......................................................................
intel/common/block: Use fixed BDF for IBL
IBL codes doesn't support bootloader controlled P2SB hidden and unhidden. Hence, dyanmically read IBL HPET/IOAPIC BDF by bootloader is not supported, because when P2SB is hidden the register access is denied.
Signed-off-by: Shuo Liu shuo.liu@intel.com Change-Id: I3975cb00e215c4984c63bb8510e8aef7d4cc85a4 --- M src/soc/intel/common/block/p2sb/p2sb.c 1 file changed, 26 insertions(+), 14 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/21/81321/1
diff --git a/src/soc/intel/common/block/p2sb/p2sb.c b/src/soc/intel/common/block/p2sb/p2sb.c index 04318c8..72df827 100644 --- a/src/soc/intel/common/block/p2sb/p2sb.c +++ b/src/soc/intel/common/block/p2sb/p2sb.c @@ -39,16 +39,22 @@
union p2sb_bdf p2sb_get_hpet_bdf(void) { - const bool was_hidden = p2sb_dev_is_hidden(PCH_DEV_P2SB); - if (was_hidden) - p2sb_unhide(); + if (CONFIG(SOC_INTEL_COMMON_IBL_BASE)) { + union p2sb_bdf bdf = {.bus = HPET_BUS_NUM, .dev = HPET_DEV_NUM, .fn = HPET0_FUNC_NUM}; + return bdf; + } else { + const bool was_hidden = p2sb_dev_is_hidden(PCH_DEV_P2SB);
- union p2sb_bdf bdf = { .raw = pci_read_config16(PCH_DEV_P2SB, PCH_P2SB_HBDF) }; + if (was_hidden) + p2sb_unhide();
- if (was_hidden) - p2sb_hide(); + union p2sb_bdf bdf = { .raw = pci_read_config16(PCH_DEV_P2SB, PCH_P2SB_HBDF) };
- return bdf; + if (was_hidden) + p2sb_hide(); + + return bdf; + } }
void p2sb_set_hpet_bdf(union p2sb_bdf bdf) @@ -58,16 +64,22 @@
union p2sb_bdf p2sb_get_ioapic_bdf(void) { - const bool was_hidden = p2sb_dev_is_hidden(PCH_DEV_P2SB); - if (was_hidden) - p2sb_unhide(); + if (CONFIG(SOC_INTEL_COMMON_IBL_BASE)) { + union p2sb_bdf bdf = {.bus = PCH_IOAPIC_BUS_NUMBER, .dev = PCH_IOAPIC_DEV_NUM, .fn = PCH_IOAPIC_FUNC_NUM}; + return bdf; + } else { + const bool was_hidden = p2sb_dev_is_hidden(PCH_DEV_P2SB);
- union p2sb_bdf bdf = { .raw = pci_read_config16(PCH_DEV_P2SB, PCH_P2SB_IBDF) }; + if (was_hidden) + p2sb_unhide();
- if (was_hidden) - p2sb_hide(); + union p2sb_bdf bdf = { .raw = pci_read_config16(PCH_DEV_P2SB, PCH_P2SB_IBDF) };
- return bdf; + if (was_hidden) + p2sb_hide(); + + return bdf; + } }
void p2sb_set_ioapic_bdf(union p2sb_bdf bdf)