diff options
author | Felix Held <felix-coreboot@felixheld.de> | 2021-01-05 00:03:20 +0100 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2021-01-22 14:24:55 +0000 |
commit | 8199b88222f9657c8afeeff10199da0c4d1b6bbd (patch) | |
tree | 68aec4c229d9ce21dd43ed45d667230053b87511 /src/soc/amd/common/block/smbus/sm.c | |
parent | fc7b41d370fa02cc97ae0e13dddf65e76dcf46b2 (diff) | |
download | coreboot-8199b88222f9657c8afeeff10199da0c4d1b6bbd.tar.xz |
soc/amd/common/block/smbus: always return SMBus MMIO in get_sm_mmio
The old code was broken and register 0x90 didn't even exist any more in
the config space of the SMBus PCI device, so just always return the MMIO
base address of the SMBus controller. As far as I've seen, no board in
tree uses this functionality at the moment.
Change-Id: Ib80d5c928da6022427afb8ccc969fb2aac953c2d
Signed-off-by: Felix Held <felix-coreboot@felixheld.de>
Reported-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/49121
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Diffstat (limited to 'src/soc/amd/common/block/smbus/sm.c')
-rw-r--r-- | src/soc/amd/common/block/smbus/sm.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/soc/amd/common/block/smbus/sm.c b/src/soc/amd/common/block/smbus/sm.c index 28e662c650..80a11848f5 100644 --- a/src/soc/amd/common/block/smbus/sm.c +++ b/src/soc/amd/common/block/smbus/sm.c @@ -21,15 +21,13 @@ static void sm_init(struct device *dev) static u32 get_sm_mmio(struct device *dev) { - struct resource *res; - struct bus *pbus; - - pbus = get_pbus_smbus(dev); - res = find_resource(pbus->dev, 0x90); - if (res->base == SMB_BASE_ADDR) - return (uintptr_t)acpimmio_smbus; - - return (uintptr_t)acpimmio_asf; + /* + * Since SMBus and ASF controller are behind the same PCIe device, we don't know behind + * which controller a device is. We assume here that the devices are behind the SMBus + * controller. The proper solution would be to handle those as MMIO devices instead of + * PCI ones. + */ + return (uintptr_t)acpimmio_smbus; } static int lsmbus_recv_byte(struct device *dev) |