> Currently the I2C device Ids conflict for the MFD and CODEC so > cannot be both instantiated on one platform. This patch updates > the Ids and names to make them unique from each other. > > It should be noted that the I2C addresses for both PMIC and CODEC > are modifiable so instantiation of the two are kept as separate > devices, rather than instantiating the CODEC from the MFD code. > > Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@xxxxxxxxxxx> > Acked-by: Mark Brown <broonie@xxxxxxxxxx> > --- > drivers/mfd/da9055-i2c.c | 12 ++++++++++-- > sound/soc/codecs/da9055.c | 11 +++++++++-- > 2 files changed, 19 insertions(+), 4 deletions(-) > > diff --git a/drivers/mfd/da9055-i2c.c b/drivers/mfd/da9055-i2c.c > index 13af7e5..8103e43 100644 > --- a/drivers/mfd/da9055-i2c.c > +++ b/drivers/mfd/da9055-i2c.c > @@ -53,17 +53,25 @@ static int da9055_i2c_remove(struct i2c_client *i2c) > return 0; > } > > +/* > + * DO NOT change the device Ids. The naming is intentionally specific as both > + * the PMIC and CODEC parts of this chip are instantiated separately as I2C > + * devices (both have configurable I2C addresses, and are to all intents and > + * purposes separate). As a result there are specific DA9055 ids for PMIC > + * and CODEC, which must be different to operate together. > + */ I'm not sure this comment is required. Most device IDs are named this way. > static struct i2c_device_id da9055_i2c_id[] = { > - {"da9055", 0}, > + {"da9055-pmic", 0}, > { } > }; > +MODULE_DEVICE_TABLE(i2c, da9055_i2c_id); > > static struct i2c_driver da9055_i2c_driver = { > .probe = da9055_i2c_probe, > .remove = da9055_i2c_remove, > .id_table = da9055_i2c_id, > .driver = { > - .name = "da9055", > + .name = "da9055-pmic", > .owner = THIS_MODULE, > }, > }; > diff --git a/sound/soc/codecs/da9055.c b/sound/soc/codecs/da9055.c > index 52b79a4..4228126 100644 > --- a/sound/soc/codecs/da9055.c > +++ b/sound/soc/codecs/da9055.c > @@ -1523,8 +1523,15 @@ static int da9055_remove(struct i2c_client *client) > return 0; > } > > +/* > + * DO NOT change the device Ids. The naming is intentionally specific as both > + * the CODEC and PMIC parts of this chip are instantiated separately as I2C > + * devices (both have configurable I2C addresses, and are to all intents and > + * purposes separate). As a result there are specific DA9055 Ids for CODEC > + * and PMIC, which must be different to operate together. > + */ And here, really, no need. > static const struct i2c_device_id da9055_i2c_id[] = { > - { "da9055", 0 }, > + { "da9055-codec", 0 }, > { } > }; > MODULE_DEVICE_TABLE(i2c, da9055_i2c_id); > @@ -1532,7 +1539,7 @@ MODULE_DEVICE_TABLE(i2c, da9055_i2c_id); > /* I2C codec control layer */ > static struct i2c_driver da9055_i2c_driver = { > .driver = { > - .name = "da9055", > + .name = "da9055-codec", > .owner = THIS_MODULE, > }, > .probe = da9055_i2c_probe, -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html