On 11 May 2009, at 12:41, Joonyoung Shim <jy0922.shim@xxxxxxxxxxx> wrote: > On 5/11/2009 3:53 PM, Peter Ujfalusi wrote: >> On Thursday 30 April 2009 10:20:16 ext Joonyoung Shim wrote: >>> On 4/30/2009 3:51 PM, Peter Ujfalusi wrote: >>>> On Wednesday 29 April 2009 03:19:21 ext Joonyoung Shim wrote: >>>>> I read it at TRM too, but cannot believe it such mixer of outputs. >>>>> >>>>> Actually, i setted to 1 both HSMIC_EN bit and MAINMIC_EN bit for >>>>> the >>>>> ANAMICL register, and recorded sound from headset mic and main >>>>> mic. The >>>>> result is that both sounds are recorded. >>>>> >>>>> So, to be sure this part, can you inquire about it to TI side? >>>> I'll ask Ti about this and also about the output mixer/mux thing, >>>> just to >>>> be sure that we are not doing anything 'illegal' with those either. >>>> >>>> We should wait with this until Ti responds, I'll let you know >>>> what is >>>> their opinion... >>> Ok, i see. >>> >>> Thanks. >> >> I got the response for this: >> On the output side: ear, predive, HS, Carkit is mixable, but the >> mixing is >> summing and not averaging, so if the inputs are close to full, it >> may cause >> saturation. >> >> On the input side: you are right, the inputs can be mixed, but if >> we enable >> more than one input at the same time, the input impedance of the >> input >> amplifier will be reduced. >> >> Just in case, can you resend the patch? >> > > Ok, i resend the patch. Thanks. Peter, are you OK with this? You asked for it to be resent so I guess you wanted to re-review it or something? > > > -- > From: Joonyoung Shim <jy0922.shim@xxxxxxxxxxx> > Date: Mon, 11 May 2009 20:36:08 +0900 > Subject: [PATCH] ASoC: TWL4030: change DAPMs for analog microphone > selection > > The inputs of the twl4030 codec can be mixed, so we will use the mixer > DAPM for the analog microphone registers(0x05, 0x06), but if we enable > more than one input at the same time, the input impedance of the input > amplifier will be reduced. > > Signed-off-by: Joonyoung Shim <jy0922.shim@xxxxxxxxxxx> > --- > sound/soc/codecs/twl4030.c | 52 +++++++++++++++ > +--------------------------- > 1 files changed, 19 insertions(+), 33 deletions(-) > > diff --git a/sound/soc/codecs/twl4030.c b/sound/soc/codecs/twl4030.c > index fd392c6..eaf91ab 100644 > --- a/sound/soc/codecs/twl4030.c > +++ b/sound/soc/codecs/twl4030.c > @@ -422,36 +422,18 @@ static const struct snd_kcontrol_new > twl4030_dapm_vibrapath_control = > SOC_DAPM_ENUM("Route", twl4030_vibrapath_enum); > > /* Left analog microphone selection */ > -static const char *twl4030_analoglmic_texts[] = > - {"Off", "Main mic", "Headset mic", "AUXL", "Carkit mic"}; > - > -static const unsigned int twl4030_analoglmic_values[] = > - {0x0, 0x1, 0x2, 0x4, 0x8}; > - > -static const struct soc_enum twl4030_analoglmic_enum = > - SOC_VALUE_ENUM_SINGLE(TWL4030_REG_ANAMICL, 0, 0xf, > - ARRAY_SIZE(twl4030_analoglmic_texts), > - twl4030_analoglmic_texts, > - twl4030_analoglmic_values); > - > -static const struct snd_kcontrol_new > twl4030_dapm_analoglmic_control = > -SOC_DAPM_VALUE_ENUM("Route", twl4030_analoglmic_enum); > +static const struct snd_kcontrol_new > twl4030_dapm_analoglmic_controls[] = { > + SOC_DAPM_SINGLE("Main mic", TWL4030_REG_ANAMICL, 0, 1, 0), > + SOC_DAPM_SINGLE("Headset mic", TWL4030_REG_ANAMICL, 1, 1, 0), > + SOC_DAPM_SINGLE("AUXL", TWL4030_REG_ANAMICL, 2, 1, 0), > + SOC_DAPM_SINGLE("Carkit mic", TWL4030_REG_ANAMICL, 3, 1, 0), > +}; > > /* Right analog microphone selection */ > -static const char *twl4030_analogrmic_texts[] = > - {"Off", "Sub mic", "AUXR"}; > - > -static const unsigned int twl4030_analogrmic_values[] = > - {0x0, 0x1, 0x4}; > - > -static const struct soc_enum twl4030_analogrmic_enum = > - SOC_VALUE_ENUM_SINGLE(TWL4030_REG_ANAMICR, 0, 0x5, > - ARRAY_SIZE(twl4030_analogrmic_texts), > - twl4030_analogrmic_texts, > - twl4030_analogrmic_values); > - > -static const struct snd_kcontrol_new > twl4030_dapm_analogrmic_control = > -SOC_DAPM_VALUE_ENUM("Route", twl4030_analogrmic_enum); > +static const struct snd_kcontrol_new > twl4030_dapm_analogrmic_controls[] = { > + SOC_DAPM_SINGLE("Sub mic", TWL4030_REG_ANAMICR, 0, 1, 0), > + SOC_DAPM_SINGLE("AUXR", TWL4030_REG_ANAMICR, 1, 1, 0), > +}; > > /* TX1 L/R Analog/Digital microphone selection */ > static const char *twl4030_micpathtx1_texts[] = > @@ -1138,11 +1120,15 @@ static const struct snd_soc_dapm_widget > twl4030_dapm_widgets[] = { > SND_SOC_DAPM_POST_PMU|SND_SOC_DAPM_POST_PMD| > SND_SOC_DAPM_POST_REG), > > - /* Analog input muxes with switch for the capture amplifiers */ > - SND_SOC_DAPM_VALUE_MUX("Analog Left Capture Route", > - TWL4030_REG_ANAMICL, 4, 0, &twl4030_dapm_analoglmic_control), > - SND_SOC_DAPM_VALUE_MUX("Analog Right Capture Route", > - TWL4030_REG_ANAMICR, 4, 0, &twl4030_dapm_analogrmic_control), > + /* Analog input mixers for the capture amplifiers */ > + SND_SOC_DAPM_MIXER("Analog Left Capture Route", > + TWL4030_REG_ANAMICL, 4, 0, > + &twl4030_dapm_analoglmic_controls[0], > + ARRAY_SIZE(twl4030_dapm_analoglmic_controls)), > + SND_SOC_DAPM_MIXER("Analog Right Capture Route", > + TWL4030_REG_ANAMICR, 4, 0, > + &twl4030_dapm_analogrmic_controls[0], > + ARRAY_SIZE(twl4030_dapm_analogrmic_controls)), > > SND_SOC_DAPM_PGA("ADC Physical Left", > TWL4030_REG_AVADC_CTL, 3, 0, NULL, 0), > -- > 1.6.0.4 _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel