aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/soc-cache.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/soc-cache.c')
-rw-r--r--sound/soc/soc-cache.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/sound/soc/soc-cache.c b/sound/soc/soc-cache.c
index 84b6916db87d..5869dc3be781 100644
--- a/sound/soc/soc-cache.c
+++ b/sound/soc/soc-cache.c
@@ -39,8 +39,10 @@ static int snd_soc_4_12_write(struct snd_soc_codec *codec, unsigned int reg,
39 if (reg < codec->reg_cache_size) 39 if (reg < codec->reg_cache_size)
40 cache[reg] = value; 40 cache[reg] = value;
41 41
42 if (codec->cache_only) 42 if (codec->cache_only) {
43 codec->cache_sync = 1;
43 return 0; 44 return 0;
45 }
44 46
45 ret = codec->hw_write(codec->control_data, data, 2); 47 ret = codec->hw_write(codec->control_data, data, 2);
46 if (ret == 2) 48 if (ret == 2)
@@ -105,8 +107,10 @@ static int snd_soc_7_9_write(struct snd_soc_codec *codec, unsigned int reg,
105 if (reg < codec->reg_cache_size) 107 if (reg < codec->reg_cache_size)
106 cache[reg] = value; 108 cache[reg] = value;
107 109
108 if (codec->cache_only) 110 if (codec->cache_only) {
111 codec->cache_sync = 1;
109 return 0; 112 return 0;
113 }
110 114
111 ret = codec->hw_write(codec->control_data, data, 2); 115 ret = codec->hw_write(codec->control_data, data, 2);
112 if (ret == 2) 116 if (ret == 2)
@@ -161,8 +165,10 @@ static int snd_soc_8_8_write(struct snd_soc_codec *codec, unsigned int reg,
161 if (reg < codec->reg_cache_size) 165 if (reg < codec->reg_cache_size)
162 cache[reg] = value; 166 cache[reg] = value;
163 167
164 if (codec->cache_only) 168 if (codec->cache_only) {
169 codec->cache_sync = 1;
165 return 0; 170 return 0;
171 }
166 172
167 if (codec->hw_write(codec->control_data, data, 2) == 2) 173 if (codec->hw_write(codec->control_data, data, 2) == 2)
168 return 0; 174 return 0;
@@ -192,8 +198,10 @@ static int snd_soc_8_16_write(struct snd_soc_codec *codec, unsigned int reg,
192 if (!snd_soc_codec_volatile_register(codec, reg)) 198 if (!snd_soc_codec_volatile_register(codec, reg))
193 reg_cache[reg] = value; 199 reg_cache[reg] = value;
194 200
195 if (codec->cache_only) 201 if (codec->cache_only) {
202 codec->cache_sync = 1;
196 return 0; 203 return 0;
204 }
197 205
198 if (codec->hw_write(codec->control_data, data, 3) == 3) 206 if (codec->hw_write(codec->control_data, data, 3) == 3)
199 return 0; 207 return 0;
@@ -313,8 +321,10 @@ static int snd_soc_16_8_write(struct snd_soc_codec *codec, unsigned int reg,
313 if (reg < codec->reg_cache_size) 321 if (reg < codec->reg_cache_size)
314 cache[reg] = value; 322 cache[reg] = value;
315 323
316 if (codec->cache_only) 324 if (codec->cache_only) {
325 codec->cache_sync = 1;
317 return 0; 326 return 0;
327 }
318 328
319 ret = codec->hw_write(codec->control_data, data, 3); 329 ret = codec->hw_write(codec->control_data, data, 3);
320 if (ret == 3) 330 if (ret == 3)