ASoC: WCD9310: Fixes issues with ANC
ANC register writes were improperly packed into
integers. ANC register writes were not correctly
performed, as the mask was incorrectly applied.
Signed-off-by: Brad Rubin <brubin@codeaurora.org>
diff --git a/sound/soc/codecs/wcd9310.c b/sound/soc/codecs/wcd9310.c
index 8318126..dc03d2a 100644
--- a/sound/soc/codecs/wcd9310.c
+++ b/sound/soc/codecs/wcd9310.c
@@ -611,7 +611,7 @@
switch (event) {
case SND_SOC_DAPM_PRE_PMU:
- filename = "wcd9310_anc.bin";
+ filename = "wcd9310/wcd9310_anc.bin";
ret = request_firmware(&fw, filename, codec->dev);
if (ret != 0) {
@@ -642,7 +642,8 @@
TABLA_CODEC_UNPACK_ENTRY(tabla->anc_writes[i], reg,
mask, val);
old_val = snd_soc_read(codec, reg);
- snd_soc_write(codec, reg, (old_val & ~mask) | val);
+ snd_soc_write(codec, reg, (old_val & ~mask) |
+ (val & mask));
}
release_firmware(fw);
tabla->anc_writes = NULL;