ASoC: wm8741: Fix setting interface format for DSP modes
Subsystems (3)
PATCH 1/2 ASoC: wm8741: Fix setting interface format for DSP modes
According to the datasheet:
Format Control (05h)
BITS[3:2]
FMT[1:0] Audio data format selection
00 = right justified mode
01 = left justified mode
10 = I2S mode
11 = DSP mode
BIT[4] LRP Polarity selec for LRCLK/DSP mode select
0 = normal LRCLK poalrity/DSP mode A 1 = inverted LRCLK poarity/DSP mode B
For SND_SOC_DAIFMT_DSP_A, we should set 0x000C instead of 0x0003. For SND_SOC_DAIFMT_DSP_B, we should set 0x001C instead of 0x0013.
--- sound/soc/codecs/wm8741.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
sound/soc/codecs/wm8741.c +2 -2
@@ -339,10 +339,10 @@ static int wm8741_set_dai_fmt(struct snd_soc_dai *codec_dai, iface |=0x0004 ;break ;case SND_SOC_DAIFMT_DSP_A : - iface |=0x0003 ; + iface |=0x000C ;break ;case SND_SOC_DAIFMT_DSP_B : - iface |=0x0013 ; + iface |=0x001C ;break ;default :return -EINVAL ;
Signature · 1 line
1.7.5.4
PATCH 2/2 ASoC: wm8741: Use snd_soc_cache_sync to sync reg_cache with the hardware
--- sound/soc/codecs/wm8741.c | 10 +--------- 1 files changed, 1 insertions(+), 9 deletions(-)
sound/soc/codecs/wm8741.c +1 -9
@@ -404,15 +404,7 @@ static struct snd_soc_dai_driver wm8741_dai = {#ifdef CONFIG_PM static int wm8741_resume (struct snd_soc_codec *codec) { -u16 *cache = codec->reg_cache; -int i; - -/* RESTORE REG Cache */ -for (i =0 ; i <WM8741_REGISTER_COUNT ; i++) { -if (cache[i] == wm8741_reg_defaults[i] ||WM8741_RESET == i) -continue ; -snd_soc_write (codec, i, cache[i]); - } +snd_soc_cache_sync (codec);return 0 ; }#else
Signature · 1 line
1.7.5.4
Quoted 38 lines · Axel Lin
According to the datasheet:
Format Control (05h)
BITS[3:2]
FMT[1:0] Audio data format selection
00 = right justified mode
01 = left justified mode
10 = I2S mode
11 = DSP mode
BIT[4] LRP Polarity selec for LRCLK/DSP mode select
0 = normal LRCLK poalrity/DSP mode A 1 = inverted LRCLK poarity/DSP mode BFor
SND_SOC_DAIFMT_DSP_A, we should set0x000Cinstead of0x0003. ForSND_SOC_DAIFMT_DSP_B, we should set0x001Cinstead of0x0013.Signed-off-by Axel Lin <[email protected]>--- sound/soc/codecs/wm8741.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)sound/soc/codecs/wm8741.c +2
-2@@ -339,10 +339,10 @@ static int wm8741_set_dai_fmt(struct snd_soc_dai *codec_dai, iface |=0x0004 ;break ;case SND_SOC_DAIFMT_DSP_A : - iface |=0x0003 ; + iface |=0x000C ;break ;case SND_SOC_DAIFMT_DSP_B : - iface |=0x0013 ; + iface |=0x001C ;break ;default :return -EINVAL;
Quoted 6 lines
--
1.7.5.4
Both
Mark Brown
AppliedQuoted 1 line · Axel Lin
According to the datasheet:
Applied both, thanks.