
Currently there are two places in the snd_soc_cache code where the function to write to the hardware is determined by looking at the control_type. One lookup is done when the cache is initialized the other is done in snd_soc_hw_bulk_write_raw. This requires, that when the spi or i2c write function is changed, that both places are updated. To avoid missing one of them use the codec's hw_write callback in snd_soc_hw_bulk_write_raw instead of looking at the control_type.
Also this allows to use other bus types to do raw writes instead of limiting it to spi and i2c.
Signed-off-by: Lars-Peter Clausen lars@metafoo.de --- sound/soc/soc-cache.c | 16 +--------------- 1 files changed, 1 insertions(+), 15 deletions(-)
diff --git a/sound/soc/soc-cache.c b/sound/soc/soc-cache.c index 06b7b81..fb34d65 100644 --- a/sound/soc/soc-cache.c +++ b/sound/soc/soc-cache.c @@ -308,21 +308,7 @@ static int snd_soc_hw_bulk_write_raw(struct snd_soc_codec *codec, unsigned int r && reg < codec->driver->reg_cache_size) return -EINVAL;
- switch (codec->control_type) { -#if defined(CONFIG_I2C) || (defined(CONFIG_I2C_MODULE) && defined(MODULE)) - case SND_SOC_I2C: - ret = i2c_master_send(codec->control_data, data, len); - break; -#endif -#if defined(CONFIG_SPI_MASTER) - case SND_SOC_SPI: - ret = spi_write(codec->control_data, data, len); - break; -#endif - default: - BUG(); - } - + ret = codec->hw_write(codec, data, len); if (ret == len) return 0; if (ret < 0)