[alsa-devel] [PATCH] ASoC mc13783 codec: Add 'loudspeaker amp' and 'lineout amp'
Lambrecht Jürgen
J.Lambrecht at TELEVIC.com
Fri Nov 29 11:27:42 CET 2013
Add Alsp (loudspeaker amp) and Arxout (lineout amp) in the same way as Asp (speaker amp) and Ahs (headphone amp)
- Remove "LSPL": all output controls are added now; this one doesn't exist
- Fix: "LSP" is loudspeaker amp; they indeed share the same mux according to the datasheet figure but they have separate registers. And testing shows the Asp and Alsp muxes are separated.
- Add "CODEC Capture Switch" control and move "CODEC Capture Mixin Switch" to its correct place
Signed-off-by: Jürgen Lambrecht <J.Lambrecht at televic.com>
---
sound/soc/codecs/mc13783.c | 29 ++++++++++++++++++++++++-----
1 file changed, 24 insertions(+), 5 deletions(-)
diff --git a/sound/soc/codecs/mc13783.c b/sound/soc/codecs/mc13783.c
index af7bc55..08fb022 100644
--- a/sound/soc/codecs/mc13783.c
+++ b/sound/soc/codecs/mc13783.c
@@ -437,6 +437,10 @@ static const SOC_ENUM_SINGLE_DECL(speaker_amp_source, MC13783_AUDIO_RX0, 4,
speaker_amp_source_text);
static const struct snd_kcontrol_new speaker_amp_source_mux =
SOC_DAPM_ENUM("Speaker Amp Source MUX", speaker_amp_source);
+static const SOC_ENUM_SINGLE_DECL(loudspeaker_amp_source, MC13783_AUDIO_RX0, 7,
+ speaker_amp_source_text);
+static const struct snd_kcontrol_new loudspeaker_amp_source_mux =
+ SOC_DAPM_ENUM("Loudspeaker Amp Source MUX", loudspeaker_amp_source);
static const char * const headset_amp_source_text[] = {
"CODEC", "Mixer"
@@ -447,6 +451,11 @@ static const SOC_ENUM_SINGLE_DECL(headset_amp_source, MC13783_AUDIO_RX0, 11,
static const struct snd_kcontrol_new headset_amp_source_mux =
SOC_DAPM_ENUM("Headset Amp Source MUX", headset_amp_source);
+static const SOC_ENUM_SINGLE_DECL(lineout_amp_source, MC13783_AUDIO_RX0, 17,
+ headset_amp_source_text);
+static const struct snd_kcontrol_new lineout_amp_source_mux =
+ SOC_DAPM_ENUM("Lineout Amp Source MUX", lineout_amp_source);
+
static const struct snd_kcontrol_new cdcout_ctl =
SOC_DAPM_SINGLE("Switch", MC13783_AUDIO_RX0, 18, 1, 0);
@@ -493,10 +502,15 @@ static const struct snd_soc_dapm_widget mc13783_dapm_widgets[] = {
SND_SOC_DAPM_MUX("Speaker Amp Source MUX", SND_SOC_NOPM, 0, 0,
&speaker_amp_source_mux),
+ SND_SOC_DAPM_MUX("Loudspeaker Amp Source MUX", SND_SOC_NOPM, 0, 0,
+ &loudspeaker_amp_source_mux),
SND_SOC_DAPM_MUX("Headset Amp Source MUX", SND_SOC_NOPM, 0, 0,
&headset_amp_source_mux),
+ SND_SOC_DAPM_MUX("Lineout Amp Source MUX", SND_SOC_NOPM, 0, 0,
+ &lineout_amp_source_mux),
+
SND_SOC_DAPM_PGA("PGA Left Input", SND_SOC_NOPM, 0, 0, NULL, 0),
SND_SOC_DAPM_PGA("PGA Right Input", SND_SOC_NOPM, 0, 0, NULL, 0),
@@ -514,7 +528,6 @@ static const struct snd_soc_dapm_widget mc13783_dapm_widgets[] = {
SND_SOC_DAPM_OUTPUT("RXOUTR"),
SND_SOC_DAPM_OUTPUT("HSL"),
SND_SOC_DAPM_OUTPUT("HSR"),
- SND_SOC_DAPM_OUTPUT("LSPL"),
SND_SOC_DAPM_OUTPUT("LSP"),
SND_SOC_DAPM_OUTPUT("SP"),
SND_SOC_DAPM_OUTPUT("CDCOUT"),
@@ -563,21 +576,26 @@ static struct snd_soc_dapm_route mc13783_routes[] = {
{ "Speaker Amp Source MUX", "CODEC", "Voice CODEC PGA"},
{ "Speaker Amp Source MUX", "Right", "DAC PGA"},
+ { "Loudspeaker Amp Source MUX", "CODEC", "Voice CODEC PGA"},
+ { "Loudspeaker Amp Source MUX", "Right", "DAC PGA"},
{ "Headset Amp Source MUX", "CODEC", "Voice CODEC PGA"},
{ "Headset Amp Source MUX", "Mixer", "DAC PGA"},
+ { "Lineout Amp Source MUX", "CODEC", "Voice CODEC PGA"},
+ { "Lineout Amp Source MUX", "Mixer", "DAC PGA"},
+
/* Output */
{ "HSL", NULL, "Headset Amp Left" },
{ "HSR", NULL, "Headset Amp Right"},
{ "RXOUTL", NULL, "Line out Amp Left"},
{ "RXOUTR", NULL, "Line out Amp Right"},
{ "SP", "Speaker Amp Switch", "Speaker Amp Source MUX"},
- { "LSP", "Loudspeaker Amp", "Speaker Amp Source MUX"},
+ { "LSP", "Loudspeaker Amp", "Loudspeaker Amp Source MUX"},
{ "HSL", "Headset Amp Left", "Headset Amp Source MUX"},
{ "HSR", "Headset Amp Right", "Headset Amp Source MUX"},
- { "Line out Amp Left", NULL, "DAC PGA"},
- { "Line out Amp Right", NULL, "DAC PGA"},
+ { "RXOUTL", "Line out Amp Left", "Lineout Amp Source MUX"},
+ { "RXOUTR", "Line out Amp Right", "Lineout Amp Source MUX"},
{ "DAC PGA", NULL, "DAC"},
{ "DAC", NULL, "DAC_E"},
{ "CDCOUT", "CDCOUT Switch", "Voice CODEC PGA"},
@@ -602,11 +620,12 @@ static struct snd_kcontrol_new mc13783_control_list[] = {
SOC_DOUBLE("Headset Amp Switch", MC13783_AUDIO_RX0, 10, 9, 1, 0),
SOC_DOUBLE("Line out Amp Switch", MC13783_AUDIO_RX0, 16, 15, 1, 0),
+ SOC_SINGLE("CODEC Capture Mixin Switch", MC13783_AUDIO_RX0, 21, 1, 0),
SOC_SINGLE("PCM Capture Mixin Switch", MC13783_AUDIO_RX0, 22, 1, 0),
SOC_SINGLE("Line in Capture Mixin Switch", MC13783_AUDIO_RX0, 23, 1, 0),
SOC_SINGLE("CODEC Capture Volume", MC13783_AUDIO_RX1, 1, 15, 0),
- SOC_SINGLE("CODEC Capture Mixin Switch", MC13783_AUDIO_RX0, 21, 1, 0),
+ SOC_SINGLE("CODEC Capture Switch", MC13783_AUDIO_RX1, 0, 1, 0),
SOC_SINGLE("Line in Capture Volume", MC13783_AUDIO_RX1, 12, 15, 0),
SOC_SINGLE("Line in Capture Switch", MC13783_AUDIO_RX1, 10, 1, 0),
--
1.7.10.4
More information about the Alsa-devel
mailing list