summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFurquan Shaikh <furquan@chromium.org>2016-12-13 21:50:32 -0800
committerDuncan Laurie <dlaurie@chromium.org>2016-12-15 17:26:07 +0100
commitfdc1b2e6b44b2eec04ad9f67e4c7e63b64cd066f (patch)
tree0f26672e75b7b6ad61f031c5784e98dc88d0dc57
parente34c16f9157c0438e2ff42cd3b139397d3a7be24 (diff)
downloadcoreboot-fdc1b2e6b44b2eec04ad9f67e4c7e63b64cd066f.tar.xz
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 <furquan@chromium.org> Reviewed-on: https://review.coreboot.org/17857 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Tested-by: build bot (Jenkins)
-rw-r--r--src/drivers/i2c/alps/alps.c3
-rw-r--r--src/drivers/i2c/generic/chip.h10
-rw-r--r--src/drivers/i2c/generic/generic.c6
-rw-r--r--src/drivers/i2c/wacom/wacom.c3
4 files changed, 13 insertions, 9 deletions
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)