[alsa-devel] [PATCH] ASoC: cs4265: Add a MIC pre. switch
This patch adds a MIC preamp enable switch as a SOC_SINGLE.
Signed-off-by: Matt Flax flatmax@flatmax.org --- sound/soc/codecs/cs4265.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/sound/soc/codecs/cs4265.c b/sound/soc/codecs/cs4265.c index d9eebf6a..03476f93 100644 --- a/sound/soc/codecs/cs4265.c +++ b/sound/soc/codecs/cs4265.c @@ -161,6 +161,7 @@ static const struct snd_kcontrol_new cs4265_snd_controls[] = { SOC_SINGLE("MMTLR Data Switch", CS4265_SPDIF_CTL2, 0, 1, 0), SOC_ENUM("Mono Channel Select", spdif_mono_select_enum), SND_SOC_BYTES("C Data Buffer", CS4265_C_DATA_BUFF, 24), + SOC_SINGLE("MIC Preamp", CS4265_PWRCTL, 3, 1, 1), };
static const struct snd_soc_dapm_widget cs4265_dapm_widgets[] = {
On Fri, Sep 07, 2018 at 01:27:29PM +1000, Matt Flax wrote:
This patch adds a MIC preamp enable switch as a SOC_SINGLE.
Signed-off-by: Matt Flax flatmax@flatmax.org
sound/soc/codecs/cs4265.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/sound/soc/codecs/cs4265.c b/sound/soc/codecs/cs4265.c index d9eebf6a..03476f93 100644 --- a/sound/soc/codecs/cs4265.c +++ b/sound/soc/codecs/cs4265.c @@ -161,6 +161,7 @@ static const struct snd_kcontrol_new cs4265_snd_controls[] = { SOC_SINGLE("MMTLR Data Switch", CS4265_SPDIF_CTL2, 0, 1, 0), SOC_ENUM("Mono Channel Select", spdif_mono_select_enum), SND_SOC_BYTES("C Data Buffer", CS4265_C_DATA_BUFF, 24),
- SOC_SINGLE("MIC Preamp", CS4265_PWRCTL, 3, 1, 1),
};
Is this the correct way to control this bit? There is already a SND_SOC_DAPM_PGA widget called "Pre-amp MIC" that controls the bit, it looks like this widget is not connected to the rest of the DAPM graph. Should we just be hooking that widget up instead? The datasheet isn't abundantly clear but it looks like the bit needs to be set whenever the mic is in use:
"The microphone preamplifier block will enter a low-power state whenever this bit is set."
Which would really make DAPM a better fit, unless there are valid use-cases for using the mic with the preamp powered down?
Thanks, Charles
On 07/09/18 18:26, Charles Keepax wrote:
On Fri, Sep 07, 2018 at 01:27:29PM +1000, Matt Flax wrote:
This patch adds a MIC preamp enable switch as a SOC_SINGLE.
Signed-off-by: Matt Flax flatmax@flatmax.org
sound/soc/codecs/cs4265.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/sound/soc/codecs/cs4265.c b/sound/soc/codecs/cs4265.c index d9eebf6a..03476f93 100644 --- a/sound/soc/codecs/cs4265.c +++ b/sound/soc/codecs/cs4265.c @@ -161,6 +161,7 @@ static const struct snd_kcontrol_new cs4265_snd_controls[] = { SOC_SINGLE("MMTLR Data Switch", CS4265_SPDIF_CTL2, 0, 1, 0), SOC_ENUM("Mono Channel Select", spdif_mono_select_enum), SND_SOC_BYTES("C Data Buffer", CS4265_C_DATA_BUFF, 24),
- SOC_SINGLE("MIC Preamp", CS4265_PWRCTL, 3, 1, 1), };
Is this the correct way to control this bit? There is already a SND_SOC_DAPM_PGA widget called "Pre-amp MIC" that controls the bit, it looks like this widget is not connected to the rest of the DAPM graph. Should we just be hooking that widget up instead? The datasheet isn't abundantly clear but it looks like the bit needs to be set whenever the mic is in use:
"The microphone preamplifier block will enter a low-power state whenever this bit is set."
Which would really make DAPM a better fit, unless there are valid use-cases for using the mic with the preamp powered down?
Agreed, when you switch to the MIC rather then LINEIN it should be turned on.
This is the DAPM_MUX : https://github.com/torvalds/linux/blob/master/sound/soc/codecs/cs4265.c#L178 This is the ENUM_SINGLE : https://github.com/torvalds/linux/blob/master/sound/soc/codecs/cs4265.c#L98
What is the best way to do this ?
Matt
On Fri, Sep 07, 2018 at 08:18:05PM +1000, Matt Flax wrote:
On 07/09/18 18:26, Charles Keepax wrote:
On Fri, Sep 07, 2018 at 01:27:29PM +1000, Matt Flax wrote: Which would really make DAPM a better fit, unless there are valid use-cases for using the mic with the preamp powered down?
Agreed, when you switch to the MIC rather then LINEIN it should be turned on.
This is the DAPM_MUX : https://github.com/torvalds/linux/blob/master/sound/soc/codecs/cs4265.c#L178 This is the ENUM_SINGLE : https://github.com/torvalds/linux/blob/master/sound/soc/codecs/cs4265.c#L98
What is the best way to do this ?
Apologies not sure I entirely follow, don't you just want to update the routes such that the existing "Pre-amp MIC" widget is between the MICL,R and the ADC Mux. Something like:
{ "Pre-amp MIC", NULL, "MICL" }, { "Pre-amp MIC", NULL, "MICR" }, { "ADC Mux", "MIC", "Pre-amp MIC" },
Thanks, Charles
On 07/09/18 20:55, Charles Keepax wrote:
On Fri, Sep 07, 2018 at 08:18:05PM +1000, Matt Flax wrote:
On 07/09/18 18:26, Charles Keepax wrote:
On Fri, Sep 07, 2018 at 01:27:29PM +1000, Matt Flax wrote: Which would really make DAPM a better fit, unless there are valid use-cases for using the mic with the preamp powered down?
Agreed, when you switch to the MIC rather then LINEIN it should be turned on.
This is the DAPM_MUX : https://github.com/torvalds/linux/blob/master/sound/soc/codecs/cs4265.c#L178 This is the ENUM_SINGLE : https://github.com/torvalds/linux/blob/master/sound/soc/codecs/cs4265.c#L98
What is the best way to do this ?
Apologies not sure I entirely follow, don't you just want to update the routes such that the existing "Pre-amp MIC" widget is between the MICL,R and the ADC Mux. Something like:
{ "Pre-amp MIC", NULL, "MICL" }, { "Pre-amp MIC", NULL, "MICR" }, { "ADC Mux", "MIC", "Pre-amp MIC" },
ok - will do.
Matt
participants (2)
-
Charles Keepax
-
Matt Flax