[alsa-devel] [PATCH] ASoC: mc13783: add mixer controls
Steffen Trumtrar
s.trumtrar at pengutronix.de
Wed Oct 9 17:01:44 CEST 2013
Add more kcontrols for the alsa mixer infrastructure.
Signed-off-by: Steffen Trumtrar <s.trumtrar at pengutronix.de>
---
sound/soc/codecs/mc13783.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/sound/soc/codecs/mc13783.c b/sound/soc/codecs/mc13783.c
index eedbf05..fafe999 100644
--- a/sound/soc/codecs/mc13783.c
+++ b/sound/soc/codecs/mc13783.c
@@ -534,6 +534,30 @@ static struct snd_soc_dapm_route mc13783_routes[] = {
static const char * const mc13783_3d_mixer[] = {"Stereo", "Phase Mix",
"Mono", "Mono Mix"};
+static const char * const mc13783_alsp[] = {"Off", "Codec", "Right"};
+
+static const char * const mc13783_ahs[] = {"Codec", "Mixer"};
+
+static const struct soc_enum mc13783_enum_asp =
+ SOC_ENUM_SINGLE(MC13783_AUDIO_RX0, 4, ARRAY_SIZE(mc13783_alsp),
+ mc13783_alsp);
+
+static const struct soc_enum mc13783_enum_alsp =
+ SOC_ENUM_SINGLE(MC13783_AUDIO_RX0, 7, ARRAY_SIZE(mc13783_alsp),
+ mc13783_alsp);
+
+static const struct soc_enum mc13783_enum_ahs =
+ SOC_ENUM_SINGLE(MC13783_AUDIO_RX0, 11, ARRAY_SIZE(mc13783_ahs),
+ mc13783_ahs);
+
+static const struct soc_enum mc13783_enum_arxout =
+ SOC_ENUM_SINGLE(MC13783_AUDIO_RX0, 17, ARRAY_SIZE(mc13783_ahs),
+ mc13783_ahs);
+
+static const struct soc_enum mc13783_enum_codec =
+ SOC_ENUM_SINGLE(MC13783_AUDIO_RX1, 4, ARRAY_SIZE(mc13783_alsp),
+ mc13783_alsp);
+
static const struct soc_enum mc13783_enum_3d_mixer =
SOC_ENUM_SINGLE(MC13783_AUDIO_RX1, 16, ARRAY_SIZE(mc13783_3d_mixer),
mc13783_3d_mixer);
@@ -541,8 +565,32 @@ static const struct soc_enum mc13783_enum_3d_mixer =
static struct snd_kcontrol_new mc13783_control_list[] = {
SOC_SINGLE("Loudspeaker enable", MC13783_AUDIO_RX0, 5, 1, 0),
SOC_SINGLE("PCM Playback Volume", MC13783_AUDIO_RX1, 6, 15, 0),
+ SOC_SINGLE("PCM Playback Switch", MC13783_AUDIO_RX1, 5, 1, 0),
SOC_DOUBLE("PCM Capture Volume", MC13783_AUDIO_TX, 19, 14, 31, 0),
SOC_ENUM("3D Control", mc13783_enum_3d_mixer),
+ SOC_ENUM("Earpiece Switch", mc13783_enum_asp),
+ SOC_ENUM("Loudspeaker Switch", mc13783_enum_alsp),
+
+ SOC_ENUM("Headset Switch", mc13783_enum_ahs),
+ SOC_SINGLE("Headset Amp Right Switch", MC13783_AUDIO_RX0, 9, 1, 0),
+ SOC_SINGLE("Headset Amp Left Switch", MC13783_AUDIO_RX0, 10, 1, 0),
+
+ SOC_ENUM("Line out Amp Switch", mc13783_enum_arxout),
+ SOC_SINGLE("Line out Amp Right Switch", MC13783_AUDIO_RX0, 15, 1, 0),
+ SOC_SINGLE("Line out Amp Left Switch", MC13783_AUDIO_RX0, 16, 1, 0),
+
+ SOC_SINGLE("Codec Capture Mix Switch", MC13783_AUDIO_RX0, 21, 1, 0),
+ SOC_SINGLE("PCM Capture Mix Switch", MC13783_AUDIO_RX0, 22, 1, 0),
+ SOC_SINGLE("Line in Capture Mix Switch", MC13783_AUDIO_RX0, 23, 1, 0),
+
+ SOC_SINGLE("Codec Capture Volume", MC13783_AUDIO_RX1, 1, 15, 0),
+ SOC_SINGLE("Codec Capture Switch", MC13783_AUDIO_RX1, 0, 1, 0),
+
+ SOC_SINGLE("PGA Capture Volume", MC13783_AUDIO_RX1, 12, 15, 0),
+ SOC_SINGLE("PGA Capture Switch", MC13783_AUDIO_RX1, 10, 1, 0),
+
+ SOC_SINGLE("MC1 Capture Bias Switch", MC13783_AUDIO_TX, 0, 1, 0),
+ SOC_SINGLE("MC2 Capture Bias Switch", MC13783_AUDIO_TX, 1, 1, 0),
};
static int mc13783_probe(struct snd_soc_codec *codec)
--
1.8.4.rc3
More information about the Alsa-devel
mailing list