public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Zidan Wang <zidan.wang@freescale.com>
To: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Cc: <broonie@kernel.org>, <lgirdwood@gmail.com>, <perex@perex.cz>,
	<tiwai@suse.de>, <lars@metafoo.de>,
	<patches@opensource.wolfsonmicro.com>,
	<alsa-devel@alsa-project.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [alsa-devel][PATCH v2] ASoC: wm8960: add dapm kcontrols to select left/right ADC input source
Date: Wed, 17 Jun 2015 16:58:30 +0800	[thread overview]
Message-ID: <20150617085828.GA17972@shlinux2> (raw)
In-Reply-To: <20150616121839.GM32730@opensource.wolfsonmicro.com>

On Tue, Jun 16, 2015 at 01:18:39PM +0100, Charles Keepax wrote:
> On Tue, Jun 16, 2015 at 02:23:19PM +0800, Zidan Wang wrote:
> > Add dapm kcontrols to select left/right ADC input source, one to select
> > the left ADC input source and one for the right ADC input source.
> > 
> > In default, the left ADC will select the left input, and the right ADC will
> > select the right input. When the left(right) ADC select the right(left) input,
> > the left(right) input path will be powered down.
> > 
> > Signed-off-by: Zidan Wang <zidan.wang@freescale.com>
> > ---
> >  sound/soc/codecs/wm8960.c | 24 ++++++++++++++++++++++--
> >  1 file changed, 22 insertions(+), 2 deletions(-)
> > 
> > diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c
> > index 023e898..3ea12b7 100644
> > --- a/sound/soc/codecs/wm8960.c
> > +++ b/sound/soc/codecs/wm8960.c
> > @@ -141,6 +141,8 @@ static const char *wm8960_3d_upper_cutoff[] = {"High", "Low"};
> >  static const char *wm8960_3d_lower_cutoff[] = {"Low", "High"};
> >  static const char *wm8960_alcfunc[] = {"Off", "Right", "Left", "Stereo"};
> >  static const char *wm8960_alcmode[] = {"ALC", "Limiter"};
> > +static const char *wm8960_adcl_src_text[] = {"Left", "Right"};
> > +static const char *wm8960_adcr_src_text[] = {"Right", "Left"};
> >  
> >  static const struct soc_enum wm8960_enum[] = {
> >  	SOC_ENUM_SINGLE(WM8960_DACCTL1, 5, 4, wm8960_polarity),
> > @@ -150,6 +152,10 @@ static const struct soc_enum wm8960_enum[] = {
> >  	SOC_ENUM_SINGLE(WM8960_ALC1, 7, 4, wm8960_alcfunc),
> >  	SOC_ENUM_SINGLE(WM8960_ALC3, 8, 2, wm8960_alcmode),
> >  };
> > +static SOC_ENUM_SINGLE_DECL(wm8960_adcl_src_enum,
> > +			    WM8960_ADDCTL1, 3, wm8960_adcl_src_text);
> > +static SOC_ENUM_SINGLE_DECL(wm8960_adcr_src_enum,
> > +			    WM8960_ADDCTL1, 2, wm8960_adcr_src_text);
> >  
> >  static const int deemph_settings[] = { 0, 32000, 44100, 48000 };
> >  
> > @@ -281,6 +287,11 @@ SOC_SINGLE_TLV("Right Output Mixer RINPUT3 Volume",
> >  	       WM8960_ROUTMIX, 4, 7, 1, bypass_tlv),
> >  };
> >  
> > +static const struct snd_kcontrol_new wm8960_adcl_mux =
> > +	SOC_DAPM_ENUM("ADCL Source", wm8960_adcl_src_enum);
> > +static const struct snd_kcontrol_new wm8960_adcr_mux =
> > +	SOC_DAPM_ENUM("ADCR Source", wm8960_adcr_src_enum);
> > +
> >  static const struct snd_kcontrol_new wm8960_lin_boost[] = {
> >  SOC_DAPM_SINGLE("LINPUT2 Switch", WM8960_LINPATH, 6, 1, 0),
> >  SOC_DAPM_SINGLE("LINPUT3 Switch", WM8960_LINPATH, 7, 1, 0),
> > @@ -344,6 +355,9 @@ SND_SOC_DAPM_ADC("Right ADC", "Capture", WM8960_POWER1, 2, 0),
> >  SND_SOC_DAPM_DAC("Left DAC", "Playback", WM8960_POWER2, 8, 0),
> >  SND_SOC_DAPM_DAC("Right DAC", "Playback", WM8960_POWER2, 7, 0),
> >  
> > +SND_SOC_DAPM_MUX("ADCL Source", SND_SOC_NOPM, 0, 0, &wm8960_adcl_mux),
> > +SND_SOC_DAPM_MUX("ADCR Source", SND_SOC_NOPM, 0, 0, &wm8960_adcr_mux),
> > +
> >  SND_SOC_DAPM_MIXER("Left Output Mixer", WM8960_POWER3, 3, 0,
> >  	&wm8960_loutput_mixer[0],
> >  	ARRAY_SIZE(wm8960_loutput_mixer)),
> > @@ -399,8 +413,14 @@ static const struct snd_soc_dapm_route audio_paths[] = {
> >  	{ "Right Input Mixer", NULL, "RINPUT2" },
> >  	{ "Right Input Mixer", NULL, "RINPUT3" },
> >  
> > -	{ "Left ADC", NULL, "Left Input Mixer" },
> > -	{ "Right ADC", NULL, "Right Input Mixer" },
> > +	{ "ADCL Source", "Left", "Left Input Mixer" },
> > +	{ "ADCL Source", "Right", "Right Input Mixer" },
> > +
> > +	{ "ADCR Source", "Left", "Left Input Mixer" },
> > +	{ "ADCR Source", "Right", "Right Input Mixer" },
> > +
> > +	{ "Left ADC", NULL, "ADCL Source" },
> > +	{ "Right ADC", NULL, "ADCR Source" },
> 
> Are you sure this is correct? My reading is that those bits don't
> affect routing at all, they mearly determine how the channel is
> sent out on the AIF.
> 
I have tested on my board, it can works, but it has something wrong.

If set "ADCR Source" to "Left", RINPUT1(RINPUT2 and RINPUT3)->"Right Input Mixer" will
be powered down, but "Right ADC" is still powered up. Do you have some best method to 
set the audio route?

Thanks,
Zidan Wang


> Thanks,
> Charles

  reply	other threads:[~2015-06-17  9:00 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-16  6:23 [alsa-devel][PATCH v2] ASoC: wm8960: add dapm kcontrols to select left/right ADC input source Zidan Wang
2015-06-16 12:18 ` Charles Keepax
2015-06-17  8:58   ` Zidan Wang [this message]
2015-06-17 13:09     ` Charles Keepax

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150617085828.GA17972@shlinux2 \
    --to=zidan.wang@freescale.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=ckeepax@opensource.wolfsonmicro.com \
    --cc=lars@metafoo.de \
    --cc=lgirdwood@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=patches@opensource.wolfsonmicro.com \
    --cc=perex@perex.cz \
    --cc=tiwai@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox