Message ID | 1BAFE6F6C881BF42822005164F1491C33EB52FD9@DBDE01.ent.ti.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
On Thu, Jan 24, 2013 at 09:33:34AM +0000, Hebbar, Gururaja wrote: > So, by just using the SND_SOC_DAPM_POST_PMU & SND_SOC_DAPM_PRE_PMD I can mask > & handle one particular voltage. What makes you say that? That is just not true.
On Thu, Jan 24, 2013 at 15:32:55, Mark Brown wrote: > On Thu, Jan 24, 2013 at 09:33:34AM +0000, Hebbar, Gururaja wrote: > > > So, by just using the SND_SOC_DAPM_POST_PMU & SND_SOC_DAPM_PRE_PMD I can mask > > & handle one particular voltage. > > What makes you say that? That is just not true. What I meant was that by using this macro (SND_SOC_DAPM_POST_PMU & SND_SOC_DAPM_PRE_PMD) I can just save and restore existing voltage values inside the event. They will not be user configurable (available to user through some widget). > Regards, Gururaja
On Thu, Jan 24, 2013 at 10:06:42AM +0000, Hebbar, Gururaja wrote: > What I meant was that by using this macro (SND_SOC_DAPM_POST_PMU & > SND_SOC_DAPM_PRE_PMD) I can just save and restore existing voltage values inside > the event. They will not be user configurable (available to user through some widget). Well, you *could* add separate register control for that but it's not really something that should obviously be exposed to users; usually that'd be something that is fixed by the platform via platform data.
On Thu, Jan 24, 2013 at 15:43:03, Mark Brown wrote: > On Thu, Jan 24, 2013 at 10:06:42AM +0000, Hebbar, Gururaja wrote: > > > What I meant was that by using this macro (SND_SOC_DAPM_POST_PMU & > > SND_SOC_DAPM_PRE_PMD) I can just save and restore existing voltage values inside > > the event. They will not be user configurable (available to user through some widget). > > Well, you *could* add separate register control for that That’s what I am doing using a different register control +static const char *mic_bias_level_txt[] = { "off", "2V", "2.5V", "AVDD" }; + +static const struct soc_enum mic_bias_level = +SOC_ENUM_SINGLE(MICBIAS_CTRL, 6, 4, mic_bias_level_txt); + static const struct snd_kcontrol_new aic3x_snd_controls[] = { /* Output */ SOC_DOUBLE_R_TLV("PCM Playback Volume", @@ -391,6 +396,9 @@ static const struct snd_kcontrol_new aic3x_snd_controls[] = { SOC_DOUBLE_R("PGA Capture Switch", LADC_VOL, RADC_VOL, 7, 0x01, 1), SOC_ENUM("ADC HPF Cut-off", aic3x_enum[ADC_HPF_ENUM]), + + /* Mic Bias Level */ + SOC_ENUM("Mic Bias Level", mic_bias_level), > but it's not > really something that should obviously be exposed to users; usually > that'd be something that is fixed by the platform via platform data. Will look into this angle. > Going by the way of using extra register control, will my method (code change attached in prev mail) be sufficient? Regards, Gururaja
diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c index 5708a97..2c17e46 100644 --- a/sound/soc/codecs/tlv320aic3x.c +++ b/sound/soc/codecs/tlv320aic3x.c @@ -268,6 +268,11 @@ static DECLARE_TLV_DB_SCALE(adc_tlv, 0, 50, 0); */ static DECLARE_TLV_DB_SCALE(output_stage_tlv, -5900, 50, 1); +static const char *mic_bias_level_txt[] = { "off", "2V", "2.5V", "AVDD" }; + +static const struct soc_enum mic_bias_level = +SOC_ENUM_SINGLE(MICBIAS_CTRL, 6, 4, mic_bias_level_txt); + static const struct snd_kcontrol_new aic3x_snd_controls[] = { /* Output */ SOC_DOUBLE_R_TLV("PCM Playback Volume", @@ -391,6 +396,9 @@ static const struct snd_kcontrol_new aic3x_snd_controls[] = { SOC_DOUBLE_R("PGA Capture Switch", LADC_VOL, RADC_VOL, 7, 0x01, 1), SOC_ENUM("ADC HPF Cut-off", aic3x_enum[ADC_HPF_ENUM]), + + /* Mic Bias Level */ + SOC_ENUM("Mic Bias Level", mic_bias_level), }; /* @@ -596,12 +604,7 @@ static const struct snd_soc_dapm_widget aic3x_dapm_widgets[] = { AIC3X_ASD_INTF_CTRLA, 0, 3, 3, 0), /* Mic Bias */ - SND_SOC_DAPM_REG(snd_soc_dapm_micbias, "Mic Bias 2V", - MICBIAS_CTRL, 6, 3, 1, 0), - SND_SOC_DAPM_REG(snd_soc_dapm_micbias, "Mic Bias 2.5V", - MICBIAS_CTRL, 6, 3, 2, 0), - SND_SOC_DAPM_REG(snd_soc_dapm_micbias, "Mic Bias AVDD", - MICBIAS_CTRL, 6, 3, 3, 0), + SND_SOC_DAPM_SUPPLY("Mic Bias", MICBIAS_CTRL, 6, 0, NULL, 0), /* Output mixers */ SND_SOC_DAPM_MIXER("Left Line Mixer", SND_SOC_NOPM, 0, 0, diff --git a/sound/soc/davinci/davinci-evm.c b/sound/soc/davinci/davinci-evm.c index 82d29a5..37b8e78 100644 --- a/sound/soc/davinci/davinci-evm.c +++ b/sound/soc/davinci/davinci-evm.c @@ -128,9 +128,9 @@ static const struct snd_soc_dapm_route audio_map[] = { {"Line Out", NULL, "RLOUT"}, /* Mic connected to (MIC3L | MIC3R) */ - {"MIC3L", NULL, "Mic Bias 2V"}, - {"MIC3R", NULL, "Mic Bias 2V"}, - {"Mic Bias 2V", NULL, "Mic Jack"}, + {"MIC3L", NULL, "Mic Bias"}, + {"MIC3R", NULL, "Mic Bias"}, + {"Mic Bias", NULL, "Mic Jack"}, /* Line In connected to (LINE1L | LINE2L), (LINE1R | LINE2R) */ {"LINE1L", NULL, "Line In"},