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

Lee Jones lee.jones at linaro.org
Fri Feb 7 11:56:57 CET 2014


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


More information about the Alsa-devel mailing list