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)
 }
 
 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,