From: Mark Brown Date: Thu, 12 Aug 2010 09:59:15 +0000 (+0100) Subject: ASoC: Automatically determine control_data for soc-cache users X-Git-Tag: v2.6.37-rc1~126^2~1^2~176^2~1 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=a6d14342dc46f0ef94cccf323fd9481de84b458f;p=~emulex%2Finfiniband.git ASoC: Automatically determine control_data for soc-cache users Since the provision of a struct device for the CODEC is now mandatory we can use container_of() to locate the struct i2c_client and struct spi_device for relevant devices, removing the need to manually set it in each driver. A further patch will automate selection of the control type based on the bus_type of the struct device, further reducing the amount of driver code required. Signed-off-by: Mark Brown Signed-off-by: Liam Girdwood --- diff --git a/sound/soc/soc-cache.c b/sound/soc/soc-cache.c index 83cd8ed944b..b856177ea28 100644 --- a/sound/soc/soc-cache.c +++ b/sound/soc/soc-cache.c @@ -584,11 +584,19 @@ int snd_soc_codec_set_cache_io(struct snd_soc_codec *codec, #endif if (io_types[i].i2c_read) codec->hw_read = io_types[i].i2c_read; + + codec->control_data = container_of(codec->dev, + struct i2c_client, + dev); break; case SND_SOC_SPI: if (io_types[i].spi_write) codec->hw_write = io_types[i].spi_write; + + codec->control_data = container_of(codec->dev, + struct spi_device, + dev); break; }