From c2cee06b4efb8992e625ca4554df17c7ef457930 Mon Sep 17 00:00:00 2001 From: Felix Held Date: Tue, 12 Oct 2021 23:35:11 +0200 Subject: soc/amd/common/block/i2c: implement proper read_resource Before this patch the reservation of the MMIO region of the I2C controllers was done in the LPC controller PCI device despite the I2C controllers already being devices in the devicetree. This patch implements this functionality as read_resources function of the I2C device instead. This will only reserve the memory when the I2C devices are enabled in devicetree which is a change from the previous behavior. Signed-off-by: Felix Held Change-Id: I67c853df3be2f593ecfa113ae2f74e5df7cf74e0 Reviewed-on: https://review.coreboot.org/c/coreboot/+/58307 Reviewed-by: Raul Rangel Reviewed-by: Karthik Ramasubramanian Tested-by: build bot (Jenkins) --- src/soc/amd/common/block/i2c/i2c.c | 8 ++++++-- src/soc/amd/common/block/lpc/lpc.c | 8 -------- 2 files changed, 6 insertions(+), 10 deletions(-) (limited to 'src/soc/amd/common/block') diff --git a/src/soc/amd/common/block/i2c/i2c.c b/src/soc/amd/common/block/i2c/i2c.c index 892c83e91f..ff9ec90fd5 100644 --- a/src/soc/amd/common/block/i2c/i2c.c +++ b/src/soc/amd/common/block/i2c/i2c.c @@ -121,9 +121,13 @@ void i2c_soc_init(void) dw_i2c_soc_init(false); } +static void i2c_read_resources(struct device *dev) +{ + mmio_resource(dev, 0, dev->path.mmio.addr / KiB, 4); +} + struct device_operations soc_amd_i2c_mmio_ops = { - /* TODO(kramasub): Move I2C resource info here. */ - .read_resources = noop_read_resources, + .read_resources = i2c_read_resources, .set_resources = noop_set_resources, .scan_bus = scan_smbus, .acpi_name = i2c_acpi_name, diff --git a/src/soc/amd/common/block/lpc/lpc.c b/src/soc/amd/common/block/lpc/lpc.c index 3027aae125..365c14dbf3 100644 --- a/src/soc/amd/common/block/lpc/lpc.c +++ b/src/soc/amd/common/block/lpc/lpc.c @@ -119,14 +119,6 @@ static void lpc_read_resources(struct device *dev) res->size = 0x00001000; res->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED; -#ifdef I2C_BASE_ADDRESS - /* I2C devices */ - res = new_resource(dev, 4); - res->base = I2C_BASE_ADDRESS; - res->size = I2C_DEVICE_SIZE * I2C_DEVICE_COUNT; - res->flags = IORESOURCE_MEM | IORESOURCE_ASSIGNED | IORESOURCE_FIXED; -#endif - compact_resources(dev); } -- cgit v1.2.3