Attention is currently required from: Patrick Rudolph. Tim Wawrzynczak has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/61719 )
Change subject: src/soc/intel/common/block/i2c: Use early BAR in ENV_PAYLOAD_LOADER ......................................................................
src/soc/intel/common/block/i2c: Use early BAR in ENV_PAYLOAD_LOADER
There may be occasions where an I2C device was initialized during "early initialization," but when used again in ENV_PAYLOAD_LOADER before resource allocation happens, it would currently return that it has not been assigned a BAR. However, because of the early BAR assigned to it, it should still be valid to use that until proper resources have been assigned, therefore return any BAR that may have been assigned to the device during early initialization.
Signed-off-by: Tim Wawrzynczak twawrzynczak@chromium.org Change-Id: I8ab599199592a72ae96cd9f95accfaa0d84e66b6 --- M src/soc/intel/common/block/i2c/i2c.c 1 file changed, 6 insertions(+), 1 deletion(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/19/61719/1
diff --git a/src/soc/intel/common/block/i2c/i2c.c b/src/soc/intel/common/block/i2c/i2c.c index 7fdf818..acfb053 100644 --- a/src/soc/intel/common/block/i2c/i2c.c +++ b/src/soc/intel/common/block/i2c/i2c.c @@ -127,7 +127,12 @@ if (res) return res->base;
- return (uintptr_t)NULL; + /* No resource found yet, it's possible this is running in the + * PAYLOAD_LOADER stage before resources have been assigned yet, + * therefore, any early init BAR should still be valid. */ + + /* Read the first base address for this device */ + return (uintptr_t)ALIGN_DOWN(pci_read_config32(dev, PCI_BASE_ADDRESS_0), 16); }
/*