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
Reviewed-on: https://review.coreboot.org/c/coreboot/+/61719
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Subrata Banik <subratabanik@google.com>
This commit is contained in:
Tim Wawrzynczak 2022-02-08 12:50:46 -07:00 committed by Felix Held
parent eb1891a9a8
commit 7a91a10c61
1 changed files with 6 additions and 1 deletions

View File

@ -127,7 +127,12 @@ uintptr_t dw_i2c_base_address(unsigned int bus)
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);
}
/*