[3/4] ASoC: wm8960: add kcontrol to select ADC data output
diff mbox

Message ID e7e1d4817ea6d4a1140a31ed21c5860cbaaaad3c.1434020423.git.zidan.wang@freescale.com
State New
Headers show

Commit Message

Zidan Wang June 11, 2015, 11:14 a.m. UTC
add kcontrol to select ADC data output.

Signed-off-by: Zidan Wang <zidan.wang@freescale.com>
---
 sound/soc/codecs/wm8960.c | 9 +++++++++
 1 file changed, 9 insertions(+)

Comments

Charles Keepax June 12, 2015, 12:29 p.m. UTC | #1
On Thu, Jun 11, 2015 at 07:14:35PM +0800, Zidan Wang wrote:
> add kcontrol to select ADC data output.
> 
> Signed-off-by: Zidan Wang <zidan.wang@freescale.com>
> ---
>  sound/soc/codecs/wm8960.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c
> index c1be15c..62246f1 100644
> --- a/sound/soc/codecs/wm8960.c
> +++ b/sound/soc/codecs/wm8960.c
> @@ -141,6 +141,12 @@ static const char *wm8960_3d_upper_cutoff[] = {"High", "Low"};
>  static const char *wm8960_3d_lower_cutoff[] = {"Low", "High"};
>  static const char *wm8960_alcfunc[] = {"Off", "Right", "Left", "Stereo"};
>  static const char *wm8960_alcmode[] = {"ALC", "Limiter"};
> +static const char *wm8960_adc_data_sel[] = {
> +	"ldata = left ADC; rdata = right ADC",
> +	"ldata = left ADC; rdata = left ADC",
> +	"ldata = right ADC; rdata = right ADC",
> +	"ldata = right ADC; rdata = left ADC",
> +};

I see the datasheet lists this as one field but it would probably
look nicer as two controls, one to select the left channel source
and one for the right channel source.

Thanks,
Charles

Patch
diff mbox

diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c
index c1be15c..62246f1 100644
--- a/sound/soc/codecs/wm8960.c
+++ b/sound/soc/codecs/wm8960.c
@@ -141,6 +141,12 @@  static const char *wm8960_3d_upper_cutoff[] = {"High", "Low"};
 static const char *wm8960_3d_lower_cutoff[] = {"Low", "High"};
 static const char *wm8960_alcfunc[] = {"Off", "Right", "Left", "Stereo"};
 static const char *wm8960_alcmode[] = {"ALC", "Limiter"};
+static const char *wm8960_adc_data_sel[] = {
+	"ldata = left ADC; rdata = right ADC",
+	"ldata = left ADC; rdata = left ADC",
+	"ldata = right ADC; rdata = right ADC",
+	"ldata = right ADC; rdata = left ADC",
+};
 
 static const struct soc_enum wm8960_enum[] = {
 	SOC_ENUM_SINGLE(WM8960_DACCTL1, 5, 4, wm8960_polarity),
@@ -149,6 +155,7 @@  static const struct soc_enum wm8960_enum[] = {
 	SOC_ENUM_SINGLE(WM8960_3D, 5, 2, wm8960_3d_lower_cutoff),
 	SOC_ENUM_SINGLE(WM8960_ALC1, 7, 4, wm8960_alcfunc),
 	SOC_ENUM_SINGLE(WM8960_ALC3, 8, 2, wm8960_alcmode),
+	SOC_ENUM_SINGLE(WM8960_ADDCTL1, 2, 4, wm8960_adc_data_sel),
 };
 
 static const int deemph_settings[] = { 0, 32000, 44100, 48000 };
@@ -279,6 +286,8 @@  SOC_SINGLE_TLV("Right Output Mixer Boost Bypass Volume",
 	       WM8960_BYPASS2, 4, 7, 1, bypass_tlv),
 SOC_SINGLE_TLV("Right Output Mixer RINPUT3 Volume",
 	       WM8960_ROUTMIX, 4, 7, 1, bypass_tlv),
+
+SOC_ENUM("ADC Data Output Select", wm8960_enum[6]),
 };
 
 static const struct snd_kcontrol_new wm8960_lin_boost[] = {