[alsa-devel] [PATCH] ASoC: Add device tree binding for WM8731

Grant Likely grant.likely at secretlab.ca
Fri Jul 29 00:26:30 CEST 2011


On Tue, Jul 26, 2011 at 09:02:11PM +0100, Mark Brown wrote:
> Tested with the famous "hey, look! this compiles" test plan.
> 
> Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
> ---
>  Documentation/devicetree/bindings/sound/wm8731.txt |   18 ++++++++++++++++++
>  sound/soc/codecs/wm8731.c                          |   12 ++++++++++++
>  2 files changed, 30 insertions(+), 0 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/sound/wm8731.txt
> 
> diff --git a/Documentation/devicetree/bindings/sound/wm8731.txt b/Documentation/devicetree/bindings/sound/wm8731.txt
> new file mode 100644
> index 0000000..15f7004
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/wm8731.txt
> @@ -0,0 +1,18 @@
> +WM8731 audio CODEC
> +
> +This device supports both I2C and SPI (configured with pin strapping
> +on the board).
> +
> +Required properties:
> +
> +  - compatible : "wlf,wm8731"
> +
> +  - reg : the I2C address of the device for I2C, the chip select
> +          number for SPI.
> +
> +Example:
> +
> +codec: wm8731 at 1a {
> +	compatible = "wlf,wm8731";
> +	reg = <0x1a>;
> +};

Acked by: Grant Likely <grant.likely at secretlab.ca>

Although I'm sure some actual testing would be valuable before it is
actually merged.  :-)  And there is one comment below.

> diff --git a/sound/soc/codecs/wm8731.c b/sound/soc/codecs/wm8731.c
> index 76b4361..5ecc05a 100644
> --- a/sound/soc/codecs/wm8731.c
> +++ b/sound/soc/codecs/wm8731.c
> @@ -22,6 +22,7 @@
>  #include <linux/platform_device.h>
>  #include <linux/regulator/consumer.h>
>  #include <linux/spi/spi.h>
> +#include <linux/of_device.h>
>  #include <sound/core.h>
>  #include <sound/pcm.h>
>  #include <sound/pcm_params.h>
> @@ -607,6 +608,11 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8731 = {
>  	.num_dapm_routes = ARRAY_SIZE(wm8731_intercon),
>  };
>  
> +static const struct of_device_id wm8731_of_match[] = {
> +	{ .compatible = "wlf,wm8731", },
> +	{ }
> +};
> +
>  #if defined(CONFIG_SPI_MASTER)
>  static int __devinit wm8731_spi_probe(struct spi_device *spi)
>  {
> @@ -634,10 +640,13 @@ static int __devexit wm8731_spi_remove(struct spi_device *spi)
>  	return 0;
>  }
>  
> +MODULE_DEVICE_TABLE(spi, wm8731_of_match);

MODULE_DEVICE_TABLE(of, wm8731_of_match);

> +
>  static struct spi_driver wm8731_spi_driver = {
>  	.driver = {
>  		.name	= "wm8731",
>  		.owner	= THIS_MODULE,
> +		.of_match_table = wm8731_of_match,
>  	},
>  	.probe		= wm8731_spi_probe,
>  	.remove		= __devexit_p(wm8731_spi_remove),
> @@ -678,10 +687,13 @@ static const struct i2c_device_id wm8731_i2c_id[] = {
>  };
>  MODULE_DEVICE_TABLE(i2c, wm8731_i2c_id);
>  
> +MODULE_DEVICE_TABLE(i2c, wm8731_of_match);
> +

And this line can be dropped.

i2c module info is separate from i2c and spi tables (although there
may be some breakage here that need to be looked at.  Right now I
don't think the OF device ids get exported to udev for
non-platform_devices.  It needs some investigation.)

>  static struct i2c_driver wm8731_i2c_driver = {
>  	.driver = {
>  		.name = "wm8731",
>  		.owner = THIS_MODULE,
> +		.of_match_table = wm8731_of_match,
>  	},
>  	.probe =    wm8731_i2c_probe,
>  	.remove =   __devexit_p(wm8731_i2c_remove),
> -- 
> 1.7.5.4
> 
> _______________________________________________
> devicetree-discuss mailing list
> devicetree-discuss at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/devicetree-discuss


More information about the Alsa-devel mailing list