OSDN Git Service

ASoC: tlv320dac33: fix regression by adding back .read/.write
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Tue, 16 Jan 2018 01:59:01 +0000 (01:59 +0000)
committerMark Brown <broonie@kernel.org>
Tue, 16 Jan 2018 13:22:48 +0000 (13:22 +0000)
commit c4305af43a8 ("ASoC: use internal reg_cache on tlv320dac33")
removed .read/.write from driver, but it might breaks non-regmap
driver, because ALSA SoC framework might call it.

To fix this regression, this patch back .read/.write

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/tlv320dac33.c

index 675f5b1..8c71d2f 100644 (file)
@@ -246,6 +246,19 @@ static int dac33_write(struct snd_soc_codec *codec, unsigned int reg,
        return ret;
 }
 
+static int dac33_write_locked(struct snd_soc_codec *codec, unsigned int reg,
+                             unsigned int value)
+{
+       struct tlv320dac33_priv *dac33 = snd_soc_codec_get_drvdata(codec);
+       int ret;
+
+       mutex_lock(&dac33->mutex);
+       ret = dac33_write(codec, reg, value);
+       mutex_unlock(&dac33->mutex);
+
+       return ret;
+}
+
 #define DAC33_I2C_ADDR_AUTOINC 0x80
 static int dac33_write16(struct snd_soc_codec *codec, unsigned int reg,
                       unsigned int value)
@@ -1422,6 +1435,8 @@ static int dac33_soc_remove(struct snd_soc_codec *codec)
 }
 
 static const struct snd_soc_codec_driver soc_codec_dev_tlv320dac33 = {
+       .read = dac33_read_reg_cache,
+       .write = dac33_write_locked,
        .set_bias_level = dac33_set_bias_level,
        .idle_bias_off = true,