From fdc1b2e6b44b2eec04ad9f67e4c7e63b64cd066f Mon Sep 17 00:00:00 2001 From: Furquan Shaikh Date: Tue, 13 Dec 2016 21:50:32 -0800 Subject: drivers/i2c: Pass in i2c_generic_config into i2c_generic_fill_ssdt Remove any assumptions required for the drivers using i2c_generic to have drivers_i2c_generic_config structure at the start of the driver config. Instead pass in a pointer to drivers_i2c_generic_config from the calling driver. Change-Id: I51dc4cad1c1f246b51891abf7115a7120e87b098 Signed-off-by: Furquan Shaikh Reviewed-on: https://review.coreboot.org/17857 Reviewed-by: Aaron Durbin Tested-by: build bot (Jenkins) --- src/drivers/i2c/alps/alps.c | 3 ++- src/drivers/i2c/generic/chip.h | 10 ++++++---- src/drivers/i2c/generic/generic.c | 6 +++--- src/drivers/i2c/wacom/wacom.c | 3 ++- 4 files changed, 13 insertions(+), 9 deletions(-) (limited to 'src/drivers') diff --git a/src/drivers/i2c/alps/alps.c b/src/drivers/i2c/alps/alps.c index 2686f6c0ca..f0ccd6c44e 100644 --- a/src/drivers/i2c/alps/alps.c +++ b/src/drivers/i2c/alps/alps.c @@ -30,7 +30,8 @@ static void i2c_alps_fill_dsm(struct device *dev) static void i2c_alps_fill_ssdt_generator(struct device *dev) { - i2c_generic_fill_ssdt(dev, &i2c_alps_fill_dsm); + struct drivers_i2c_alps_config *config = dev->chip_info; + i2c_generic_fill_ssdt(dev, &i2c_alps_fill_dsm, &config->generic); } static const char *i2c_alps_acpi_name(struct device *dev) diff --git a/src/drivers/i2c/generic/chip.h b/src/drivers/i2c/generic/chip.h index 736de51591..b1fc8e5946 100644 --- a/src/drivers/i2c/generic/chip.h +++ b/src/drivers/i2c/generic/chip.h @@ -57,11 +57,13 @@ struct drivers_i2c_generic_config { * properties. Callback can be provided to fill in any * device-specific information in SSDT. * - * Drivers calling into this function to generate should place - * drivers_i2c_generic_config structure at the beginning of their device config - * structure. + * Parameters: + * dev: Device requesting i2c generic information to be filled + * callback: Callback to fill in device-specific information + * config: Pointer to drivers_i2c_generic_config structure */ void i2c_generic_fill_ssdt(struct device *dev, - void (*callback)(struct device *dev)); + void (*callback)(struct device *dev), + struct drivers_i2c_generic_config *config); #endif /* __I2C_GENERIC_CHIP_H__ */ diff --git a/src/drivers/i2c/generic/generic.c b/src/drivers/i2c/generic/generic.c index b8e5d863f7..50f60bb56a 100644 --- a/src/drivers/i2c/generic/generic.c +++ b/src/drivers/i2c/generic/generic.c @@ -66,9 +66,9 @@ static void i2c_generic_add_power_res(struct drivers_i2c_generic_config *config) } void i2c_generic_fill_ssdt(struct device *dev, - void (*callback)(struct device *dev)) + void (*callback)(struct device *dev), + struct drivers_i2c_generic_config *config) { - struct drivers_i2c_generic_config *config = dev->chip_info; const char *scope = acpi_device_scope(dev); struct acpi_i2c i2c = { .address = dev->path.i2c.device, @@ -131,7 +131,7 @@ void i2c_generic_fill_ssdt(struct device *dev, static void i2c_generic_fill_ssdt_generator(struct device *dev) { - i2c_generic_fill_ssdt(dev, NULL); + i2c_generic_fill_ssdt(dev, NULL, dev->chip_info); } /* Use name specified in config or build one from I2C address */ diff --git a/src/drivers/i2c/wacom/wacom.c b/src/drivers/i2c/wacom/wacom.c index c54194fc96..e6d12775a2 100644 --- a/src/drivers/i2c/wacom/wacom.c +++ b/src/drivers/i2c/wacom/wacom.c @@ -30,7 +30,8 @@ static void i2c_wacom_fill_dsm(struct device *dev) static void i2c_wacom_fill_ssdt_generator(struct device *dev) { - i2c_generic_fill_ssdt(dev, &i2c_wacom_fill_dsm); + struct drivers_i2c_wacom_config *config = dev->chip_info; + i2c_generic_fill_ssdt(dev, &i2c_wacom_fill_dsm, &config->generic); } static const char *i2c_wacom_acpi_name(struct device *dev) -- cgit v1.2.3