ASoC: wm8711: Fix wrong mask for setting input audio data bit length select
Subsystems (3)
PATCH 1/2 ASoC: wm8711: Fix wrong mask for setting input audio data bit length select
The Input Audio Data Bit Length Select is controlled by BIT[3:2] of WM8711_IFACE(07h) register.
Current code incorrectly masks BIT[1:0] which is for Audio Data Format Select.
--- sound/soc/codecs/wm8711.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
sound/soc/codecs/wm8711.c +1 -1
@@ -151,7 +151,7 @@ static int wm8711_hw_params(struct snd_pcm_substream *substream, {struct snd_soc_codec *codec = dai->codec;struct wm8711_priv *wm8711 =snd_soc_codec_get_drvdata (codec); -u16 iface =snd_soc_read (codec,WM8711_IFACE ) &0xfffc ; +u16 iface =snd_soc_read (codec,WM8711_IFACE ) &0xfff3 ;int i =get_coeff (wm8711->sysclk,params_rate (params));u16 srate = (coeff_div[i].sr <<2 ) | (coeff_div[i].bosr <<1 ) | coeff_div[i].usb;
Signature · 1 line
1.7.5.4
PATCH 2/2 ASoC: wm8711: Add proper mask for wm8711_set_dai_fmt
Add mask for BIT[3:2] (the Input Audio Data Bit Length Select) of WM8711_IFACE(07h) register.
Otherwise, BIT[3:2] will be always set to 0b00 here.
--- sound/soc/codecs/wm8711.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
sound/soc/codecs/wm8711.c +1 -1
@@ -232,7 +232,7 @@ static int wm8711_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) {struct snd_soc_codec *codec = codec_dai->codec; -u16 iface =0 ; +u16 iface =snd_soc_read (codec,WM8711_IFACE ) &0x000c ;/* set master/slave audio interface */ switch (fmt &SND_SOC_DAIFMT_MASTER_MASK ) {
Signature · 1 line
1.7.5.4
Re: [PATCH 2/2] ASoC: wm8711: Add proper mask for wm8711_set_dai_fmt
2011/10/28 Axel Lin <[email protected]>:
Quoted 4 lines
Add mask for BIT[3:2] (the Input Audio Data Bit Length Select) of
WM8711_IFACE(07h)register.
Otherwise, BIT[3:2] will be always set to 0b00 here.
I think the subject line is not good.
I'll resend a patch with below subject line:
ASoC: Leave input audio data bit length settings untouched in wm8711_set_dai_fmt
Regards,
Axel
Re: [PATCH 2/2] ASoC: wm8711: Add proper mask for wm8711_set_dai_fmt
In reply to Axel LinQuoted 3 lines · Axel Lin
Add mask for BIT[3:2] (the Input Audio Data Bit Length Select) of
WM8711_IFACE(07h)register.
Otherwise, BIT[3:2] will be always set to 0b00 here.
Your changelog here isn't terribly clear and doesn't really correspond to the change well. Here you say you're masking something but...
sound/soc/codecs/wm8711.c static int wm8711_set_dai_fmt(struct snd_soc_dai *codec_dai, · line 235
Quoted 2 lines
sound/soc/codecs/wm8711.c +1
-1-u16 iface =0 ; +u16 iface =snd_soc_read (codec,WM8711_IFACE ) &0x000c ;
...what you're actually doing is preserving the existing values of some register bits. Nevertheless the change looks good so applied.
PATCH 2/2 ASoC: Leave input audio data bit length settings untouched in wm8711_set_dai_fmt
In reply to Axel LinCurrent implementation in wm8711_set_dai_fmt always clear BIT[3:2] (the Input Audio Data Bit Length Select) of WM8711_IFACE(07h) register. Input Audio Data Bit Length Select bits are set by wm8711_hw_params, we should leave BIT[3:2] untouched in wm8711_set_dai_fmt.
--- sound/soc/codecs/wm8711.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
sound/soc/codecs/wm8711.c +1 -1
@@ -232,7 +232,7 @@ static int wm8711_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) {struct snd_soc_codec *codec = codec_dai->codec; -u16 iface =0 ; +u16 iface =snd_soc_read (codec,WM8711_IFACE ) &0x000c ;/* set master/slave audio interface */ switch (fmt &SND_SOC_DAIFMT_MASTER_MASK ) {
Signature · 1 line
1.7.5.4