Re: [PATCH v2 1/8] ASoC: da9055: Fix device registration of PMIC and CODEC devices

Lee Jones
2014-02-07T10:57:07Z

> 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@diasemi.com>
> Acked-by: Mark Brown <broonie@linaro.org>
> ---
> 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