diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2010-08-31 14:39:48 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2010-09-01 07:14:44 -0400 |
commit | f554885f9214060911cd007b05ba562b5f2af6aa (patch) | |
tree | cdc422c2c0155c3fefaa213c26531a271f84981c /sound/soc/codecs/wm8994.c | |
parent | 1d6be338c11ddc1e58915ab85e19b0f6cbc10782 (diff) |
ASoC: Implement WM8994 DAC data source muxes
Allow selection of the channel used for input to the AIFnDAC signals.
This isn't integrated into DAPM since we treat the data as a single
mono channel until just beyond this selection so it ends up having
no visible effect on the routing.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Diffstat (limited to 'sound/soc/codecs/wm8994.c')
-rw-r--r-- | sound/soc/codecs/wm8994.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c index e03072cade7b..c45ab0030294 100644 --- a/sound/soc/codecs/wm8994.c +++ b/sound/soc/codecs/wm8994.c | |||
@@ -2072,6 +2072,22 @@ static int wm8994_get_retune_mobile_enum(struct snd_kcontrol *kcontrol, | |||
2072 | return 0; | 2072 | return 0; |
2073 | } | 2073 | } |
2074 | 2074 | ||
2075 | static const char *aifdac_src_text[] = { | ||
2076 | "Left", "Right" | ||
2077 | }; | ||
2078 | |||
2079 | static const struct soc_enum aif1dacl_src = | ||
2080 | SOC_ENUM_SINGLE(WM8994_AIF1_CONTROL_2, 15, 2, aifdac_src_text); | ||
2081 | |||
2082 | static const struct soc_enum aif1dacr_src = | ||
2083 | SOC_ENUM_SINGLE(WM8994_AIF1_CONTROL_2, 14, 2, aifdac_src_text); | ||
2084 | |||
2085 | static const struct soc_enum aif2dacl_src = | ||
2086 | SOC_ENUM_SINGLE(WM8994_AIF2_CONTROL_2, 15, 2, aifdac_src_text); | ||
2087 | |||
2088 | static const struct soc_enum aif2dacr_src = | ||
2089 | SOC_ENUM_SINGLE(WM8994_AIF2_CONTROL_2, 14, 2, aifdac_src_text); | ||
2090 | |||
2075 | static const struct snd_kcontrol_new wm8994_snd_controls[] = { | 2091 | static const struct snd_kcontrol_new wm8994_snd_controls[] = { |
2076 | SOC_DOUBLE_R_TLV("AIF1ADC1 Volume", WM8994_AIF1_ADC1_LEFT_VOLUME, | 2092 | SOC_DOUBLE_R_TLV("AIF1ADC1 Volume", WM8994_AIF1_ADC1_LEFT_VOLUME, |
2077 | WM8994_AIF1_ADC1_RIGHT_VOLUME, | 2093 | WM8994_AIF1_ADC1_RIGHT_VOLUME, |
@@ -2083,6 +2099,11 @@ SOC_DOUBLE_R_TLV("AIF2ADC Volume", WM8994_AIF2_ADC_LEFT_VOLUME, | |||
2083 | WM8994_AIF2_ADC_RIGHT_VOLUME, | 2099 | WM8994_AIF2_ADC_RIGHT_VOLUME, |
2084 | 1, 119, 0, digital_tlv), | 2100 | 1, 119, 0, digital_tlv), |
2085 | 2101 | ||
2102 | SOC_ENUM("AIF1DACL Source", aif1dacl_src), | ||
2103 | SOC_ENUM("AIF1DACR Source", aif1dacr_src), | ||
2104 | SOC_ENUM("AIF2DACL Source", aif1dacl_src), | ||
2105 | SOC_ENUM("AIF2DACR Source", aif1dacr_src), | ||
2106 | |||
2086 | SOC_DOUBLE_R_TLV("AIF1DAC1 Volume", WM8994_AIF1_DAC1_LEFT_VOLUME, | 2107 | SOC_DOUBLE_R_TLV("AIF1DAC1 Volume", WM8994_AIF1_DAC1_LEFT_VOLUME, |
2087 | WM8994_AIF1_DAC1_RIGHT_VOLUME, 1, 96, 0, digital_tlv), | 2108 | WM8994_AIF1_DAC1_RIGHT_VOLUME, 1, 96, 0, digital_tlv), |
2088 | SOC_DOUBLE_R_TLV("AIF1DAC2 Volume", WM8994_AIF1_DAC2_LEFT_VOLUME, | 2109 | SOC_DOUBLE_R_TLV("AIF1DAC2 Volume", WM8994_AIF1_DAC2_LEFT_VOLUME, |