From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754828AbbFQJAt (ORCPT ); Wed, 17 Jun 2015 05:00:49 -0400 Received: from mail-bl2on0106.outbound.protection.outlook.com ([65.55.169.106]:9680 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750818AbbFQJAn (ORCPT ); Wed, 17 Jun 2015 05:00:43 -0400 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=freescale.com; vger.kernel.org; dkim=none (message not signed) header.d=none; Date: Wed, 17 Jun 2015 16:58:30 +0800 From: Zidan Wang To: Charles Keepax CC: , , , , , , , Subject: Re: [alsa-devel][PATCH v2] ASoC: wm8960: add dapm kcontrols to select left/right ADC input source Message-ID: <20150617085828.GA17972@shlinux2> References: <1434435799-26829-1-git-send-email-zidan.wang@freescale.com> <20150616121839.GM32730@opensource.wolfsonmicro.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20150616121839.GM32730@opensource.wolfsonmicro.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11FD010;1:cjSOcoTs3WVNAeHg6+NI1yL0Y48/lAaZTllgEZX26Ogdyw1TxdavgxNZLs5oD3E2SD9jZCiaHzRWA/Pn46EbzfrK40fgMQEuqwstg3dewMtnoEFy5WuA9GTnrccQX2TTtiFfgD0xfndR3GjdJwSBuE+q4hcdVRnAe0sYbKFMrJtpgTZlz9eQnaDZ393q5uC5gotF/g8Ajl/yS645BBxOGr0LlBWAQC7REJwoZSPzZouTnkU+c7CA42pWDVdGM1UPMYj1uDZwiOK0wpb68qjJTteFbEu1+RF401UYubCsWt2nEN7akJVGFA6gJTYLlNYjo1E4iPt39aos8XG/Q9S1Lg== X-Forefront-Antispam-Report: CIP:192.88.168.50;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(339900001)(199003)(189002)(24454002)(164054003)(51704005)(105606002)(76176999)(54356999)(50986999)(33716001)(46102003)(92566002)(4001350100001)(2950100001)(77096005)(46406003)(47776003)(33656002)(97756001)(189998001)(19580395003)(6806004)(19580405001)(87936001)(106466001)(50466002)(83506001)(110136002)(5001960100002)(86362001)(23726002)(85426001)(5001920100001)(62966003)(77156002)(104016003);DIR:OUT;SFP:1102;SCL:1;SRVR:BL2PR03MB274;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;MLV:ovrnspm;A:1;MX:1;PTR:InfoDomainNonexistent;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BL2PR03MB274;2:yOq0L+Rnw0PhVHO7kfxup8O1rKbGKzHLLsMp/Kd9eGIq44hBjmPdMn2pG21TC/t8;3:pOwKO57qPHgoNHq+2lJrY9mCHuJoHKaogP8xatkSHTZ513v8LEX2gNtIvu2jF/NhE/9+SpeuobOMCyfUuatyPacFAZ9U59T/rUy76EKKyntDzSlwSpRxqGYGhUbF6pIZ8iII6Kf14ygimR7dIle9lUbPJP/BJGWULAs7lKbyGEywxyYvLi2J9EOjZC3SlB0ttLTjmfQRXATM/zdCoJHBeN9j2IodXTyGywmADXqEWXc=;20:noB+3hdaGs+4LWlthhjNFq77vqktYZBHXJZGv6yIaeV7h2IV3xoyNOqMBNPeEF2t33rmj5ii4LMgrCPU55jvWK1pwaiY2KTUFaqSYgS8zGusX8A1HvNPLCUJXROHdLx5FSj+zAhBVwoa+YcqE2OGyonEcCOoDu3K6VV7Ffr4bN6nEX2Zru/KQTV5brVZcu9S6G+aGSBQKny7HjoiPVK83re33ECLBuQttlMrh7CU3UAQuaB2PIUCS7ryE7WneR2txf9OXkGiCl0Et2tR/QIsdgRLwudCFMHCEt+xYwi8C+krL1n8qXvHTXNm0f70TqMXc1axiU+lSfgrRNY0yV0sxn2b8gHpPyMsVtHAaURrADw=;4:FfFk7hOtYu89+6WvmvDoewJg8NUSO/gaFwBqWN07jfRnbXRUEOfIkcfEh46lybfOZsO9n7ReIqr2AG58nmaI2vXzjs5tc4Kj8SEQ8cWDv9hxF+fnwXY/28FXYYra+mfi8vr66H3y0yN0GkprCeL5R/CRKjWS1xwwbTR6bR1ueaLbVudAYFAoN8jbamyxIHO1p05q5A06On2qOlM4WaEqzakLI9E92szUauXFXm2ovCWPJI/nfmPLYc8FXTy2ZuBRlHmjVa6nqvbLwNCUSiflqQXdeKpDjrsv+I3/fYWI2OI= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BL2PR03MB274; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5005006)(3002001);SRVR:BL2PR03MB274;BCL:0;PCL:0;RULEID:;SRVR:BL2PR03MB274; X-Forefront-PRVS: 0610D16BBE X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BL2PR03MB274;23:RlCmkQrIWktRag4fJFoHf8we/eId69iS7B36sbTSmO?= =?us-ascii?Q?JGI/syUBWDwbSgZ95CO0E/oPgpLcFrupjW+d+VDVYv98+aLwNIdxKy0qrR3S?= =?us-ascii?Q?+yhrR0oxYVNa2yJPMDX5waS6pQcE9Jr5Aq6AlwuhHDuWBd+38jlXFxJtJGGw?= =?us-ascii?Q?UGLo228Yn4IOGHqkcPmdi+xKASsR570VKNCAZzKWs4wZQAcYeWMoXS0/RhnA?= =?us-ascii?Q?kAGoY8/Z+Hr+dNokYwm7LqQQwGu/Ozs9SKlmh0JbaazisVNHLx0CVrOLLT20?= =?us-ascii?Q?iTfi4jYx1wCgmySndN4ECcotZk+pJYtKV43/CgVPb39VcElsIO4g221nXLtL?= =?us-ascii?Q?J07cQ2XJyvrkdAdwSfXC3cL9cbaWgEkixofiUnjmwJiZkrHLepy4C6bAOMWT?= =?us-ascii?Q?TxUE5IGXL1my4HWz2HhTe8pty03GtQgtY5LEEvfhAO0HpMtgfqyvL+K/1zKI?= =?us-ascii?Q?n4ASci/4jVLUgdUmYg6jl0vnt4DAD2sFE28Y4Pp7wiNzmtxsL8xNGBPDFXfV?= =?us-ascii?Q?oyGuUxNgGZwQARU6Ul1CmKhCDSzBX7R8hhHJScE0U1BZzXiuOiXAlN5dYKwU?= =?us-ascii?Q?46q1TcVl1+zXGDgVtL4xdHA+ykCn4JIweZ3UHvK8/r5LMz22v0aNd3GE+V0F?= =?us-ascii?Q?BbXgi5/BN9fahvsx4XgazmSl878E5nIjAaq1H0BcOvn4U+JkWodugcEoUO0a?= =?us-ascii?Q?1nz0qNrPYDluOT1d2jMPCJ+aFtFC5CnA8mJOLf103QljiCWDiG+HIeEsMi7i?= =?us-ascii?Q?7j6wLTJZbKLtdMh0z4TEr5tIZnHQxUCYiQ5Lk8jthElIYl8zV1k2oQvcr7fM?= =?us-ascii?Q?EtiBdY7Kxq/gQVQncq+ZxYO+nzLlv8q1CNqzQXFvVJI3j8ieP+TsaurR1En8?= =?us-ascii?Q?JYk0Pu5Y9fDts6wbZcPbPbgkQ2MBOQnl0eY5nxqTAqmB0+vDZ1OE2uHL69FY?= =?us-ascii?Q?K3Z1Z+6O4EXAXb8wdN03Uo6W8LVFMtsf+GfVIwGf7Oo7FA1STdjo/hvHtYwP?= =?us-ascii?Q?JcafqgTXUuSP0rDAu5awLXnNJbCpk8yRtM2Svgm8xSDw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;BL2PR03MB274;5:XDHIGVOs0+y6wZK+n41AtrJc9v8loH6OCiFX3WnfaHuc+F3K6N3s3wpa2hAH61zArDXO7QMsf9JGM9Ypa8PkSVVSSWFJeLQWf1aHOK3r5M17Xp2Nu7+s74yDioJhVysMW2m4vQ5zTZdMYL/Pdxz+lA==;24:uKGsafpPPMCKPrd7fZpxE5Bx3Upg3Ds28hp4LboKa6Lii8tL6V4tf/ZrItrDzEMBM1xg3Y/XTcw4kpAh14Cz9dWVBNrVXM7uKCIrVjRTTTo=;20:LlGZdY2cIvMxCUA1M8QGJ84nwDTxEzyC4G+uHKiD3ZsVkXl8cVS2OaXinyGxhhc3mcjTXcHvRH3Q6DLhVa0EYQ== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jun 2015 09:00:40.8524 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d;Ip=[192.88.168.50];Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2PR03MB274 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jun 16, 2015 at 01:18:39PM +0100, Charles Keepax wrote: > On Tue, Jun 16, 2015 at 02:23:19PM +0800, Zidan Wang wrote: > > Add dapm kcontrols to select left/right ADC input source, one to select > > the left ADC input source and one for the right ADC input source. > > > > In default, the left ADC will select the left input, and the right ADC will > > select the right input. When the left(right) ADC select the right(left) input, > > the left(right) input path will be powered down. > > > > Signed-off-by: Zidan Wang > > --- > > sound/soc/codecs/wm8960.c | 24 ++++++++++++++++++++++-- > > 1 file changed, 22 insertions(+), 2 deletions(-) > > > > diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c > > index 023e898..3ea12b7 100644 > > --- a/sound/soc/codecs/wm8960.c > > +++ b/sound/soc/codecs/wm8960.c > > @@ -141,6 +141,8 @@ 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_adcl_src_text[] = {"Left", "Right"}; > > +static const char *wm8960_adcr_src_text[] = {"Right", "Left"}; > > > > static const struct soc_enum wm8960_enum[] = { > > SOC_ENUM_SINGLE(WM8960_DACCTL1, 5, 4, wm8960_polarity), > > @@ -150,6 +152,10 @@ static const struct soc_enum wm8960_enum[] = { > > SOC_ENUM_SINGLE(WM8960_ALC1, 7, 4, wm8960_alcfunc), > > SOC_ENUM_SINGLE(WM8960_ALC3, 8, 2, wm8960_alcmode), > > }; > > +static SOC_ENUM_SINGLE_DECL(wm8960_adcl_src_enum, > > + WM8960_ADDCTL1, 3, wm8960_adcl_src_text); > > +static SOC_ENUM_SINGLE_DECL(wm8960_adcr_src_enum, > > + WM8960_ADDCTL1, 2, wm8960_adcr_src_text); > > > > static const int deemph_settings[] = { 0, 32000, 44100, 48000 }; > > > > @@ -281,6 +287,11 @@ SOC_SINGLE_TLV("Right Output Mixer RINPUT3 Volume", > > WM8960_ROUTMIX, 4, 7, 1, bypass_tlv), > > }; > > > > +static const struct snd_kcontrol_new wm8960_adcl_mux = > > + SOC_DAPM_ENUM("ADCL Source", wm8960_adcl_src_enum); > > +static const struct snd_kcontrol_new wm8960_adcr_mux = > > + SOC_DAPM_ENUM("ADCR Source", wm8960_adcr_src_enum); > > + > > static const struct snd_kcontrol_new wm8960_lin_boost[] = { > > SOC_DAPM_SINGLE("LINPUT2 Switch", WM8960_LINPATH, 6, 1, 0), > > SOC_DAPM_SINGLE("LINPUT3 Switch", WM8960_LINPATH, 7, 1, 0), > > @@ -344,6 +355,9 @@ SND_SOC_DAPM_ADC("Right ADC", "Capture", WM8960_POWER1, 2, 0), > > SND_SOC_DAPM_DAC("Left DAC", "Playback", WM8960_POWER2, 8, 0), > > SND_SOC_DAPM_DAC("Right DAC", "Playback", WM8960_POWER2, 7, 0), > > > > +SND_SOC_DAPM_MUX("ADCL Source", SND_SOC_NOPM, 0, 0, &wm8960_adcl_mux), > > +SND_SOC_DAPM_MUX("ADCR Source", SND_SOC_NOPM, 0, 0, &wm8960_adcr_mux), > > + > > SND_SOC_DAPM_MIXER("Left Output Mixer", WM8960_POWER3, 3, 0, > > &wm8960_loutput_mixer[0], > > ARRAY_SIZE(wm8960_loutput_mixer)), > > @@ -399,8 +413,14 @@ static const struct snd_soc_dapm_route audio_paths[] = { > > { "Right Input Mixer", NULL, "RINPUT2" }, > > { "Right Input Mixer", NULL, "RINPUT3" }, > > > > - { "Left ADC", NULL, "Left Input Mixer" }, > > - { "Right ADC", NULL, "Right Input Mixer" }, > > + { "ADCL Source", "Left", "Left Input Mixer" }, > > + { "ADCL Source", "Right", "Right Input Mixer" }, > > + > > + { "ADCR Source", "Left", "Left Input Mixer" }, > > + { "ADCR Source", "Right", "Right Input Mixer" }, > > + > > + { "Left ADC", NULL, "ADCL Source" }, > > + { "Right ADC", NULL, "ADCR Source" }, > > Are you sure this is correct? My reading is that those bits don't > affect routing at all, they mearly determine how the channel is > sent out on the AIF. > I have tested on my board, it can works, but it has something wrong. If set "ADCR Source" to "Left", RINPUT1(RINPUT2 and RINPUT3)->"Right Input Mixer" will be powered down, but "Right ADC" is still powered up. Do you have some best method to set the audio route? Thanks, Zidan Wang > Thanks, > Charles