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>
This commit is contained in:
Felix Held 2021-01-05 00:03:20 +01:00 committed by Patrick Georgi
parent fc7b41d370
commit 8199b88222
1 changed files with 7 additions and 9 deletions

View File

@ -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)