From patchwork Tue Nov 24 02:18:27 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zidan Wang X-Patchwork-Id: 7687231 Return-Path: X-Original-To: patchwork-alsa-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 711D99F4F5 for ; Tue, 24 Nov 2015 02:16:55 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 945352086F for ; Tue, 24 Nov 2015 02:16:54 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) by mail.kernel.org (Postfix) with ESMTP id 673792086D for ; Tue, 24 Nov 2015 02:16:53 +0000 (UTC) Received: by alsa0.perex.cz (Postfix, from userid 1000) id C85242659FB; Tue, 24 Nov 2015 03:16:50 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Spam-Status: No, score=-2.6 required=5.0 tests=BAD_ENC_HEADER,BAYES_00, NO_DNS_FOR_FROM,RCVD_IN_DNSWL_LOW,UNPARSEABLE_RELAY autolearn=ham version=3.3.1 Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id 5A7B4265850; Tue, 24 Nov 2015 03:16:43 +0100 (CET) X-Original-To: alsa-devel@alsa-project.org Delivered-To: alsa-devel@alsa-project.org Received: by alsa0.perex.cz (Postfix, from userid 1000) id BCE61265864; Tue, 24 Nov 2015 03:16:41 +0100 (CET) Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1bbn0103.outbound.protection.outlook.com [157.56.111.103]) by alsa0.perex.cz (Postfix) with ESMTP id 26EA426583F for ; Tue, 24 Nov 2015 03:16:34 +0100 (CET) Received: from BLUPR03CA001.namprd03.prod.outlook.com (10.255.124.18) by BY1PR0301MB1254.namprd03.prod.outlook.com (10.161.203.26) with Microsoft SMTP Server (TLS) id 15.1.331.20; Tue, 24 Nov 2015 02:16:31 +0000 Received: from BN1BFFO11FD050.protection.gbl (10.255.124.4) by BLUPR03CA001.outlook.office365.com (10.255.124.18) with Microsoft SMTP Server (TLS) id 15.1.331.20 via Frontend Transport; Tue, 24 Nov 2015 02:16:30 +0000 Authentication-Results: spf=permerror (sender IP is 192.88.168.50) smtp.mailfrom=freescale.com; freescale.mail.onmicrosoft.com; dkim=none (message not signed) header.d=none; freescale.mail.onmicrosoft.com; dmarc=none action=none header.from=freescale.com; Received-SPF: PermError (protection.outlook.com: domain of freescale.com used an invalid SPF mechanism) Received: from tx30smr01.am.freescale.net (192.88.168.50) by BN1BFFO11FD050.mail.protection.outlook.com (10.58.145.5) with Microsoft SMTP Server (TLS) id 15.1.331.11 via Frontend Transport; Tue, 24 Nov 2015 02:16:31 +0000 Received: from b50113.ap.freescale.net (b50113.ap.freescale.net [10.192.241.29]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id tAO2GQda026041; Mon, 23 Nov 2015 19:16:28 -0700 From: Zidan Wang To: Date: Tue, 24 Nov 2015 10:18:27 +0800 Message-ID: <09c04620e3394cb10fe3e170947c6f426d51f8be.1448331450.git.zidan.wang@freescale.com> X-Mailer: git-send-email 1.9.1 X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD050; 1:BEIxeRMFOOUcuRw4E827hVi0dSRIE/UyANzcQ9qcrDlY6Q/GxA4PkOUedPYaqkiMCUYWybKu3eRcBI0Uo9kwiYTVp2KkgLBnFRF6S6T/cXZMAgNivXcEieBE2KhkyISlQKwnT6iznKlfQOIMdzt6Wa/aQ2lPRW4yCq5/UGYx0oneLTIR1Rcr1YGHNhR7LUVTYImxFuOH1G9gLa4+NoHh8LqPbeR18MqR/Zsvb0T2Rozi38rCLz+R12NvTr5VFMSyfrRKQSzfvFgSKkFXAYfZS3oXuGTfvSGIOwbpKIVU/mMWOqADxwHcdNLjaoRp50TSu2AtenQZwutlRLboI8K23mN4qKHU/eYsgT57uy43VcUBvL0UKpnOQC8cPIFZ4G3QqaMPWZsE0OGcyz7g7wP5DeGq9qzGDHRnccb7LK96GDs= X-Forefront-Antispam-Report: CIP:192.88.168.50; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(448002)(199003)(189002)(6806005)(19580405001)(36756003)(50986999)(5007970100001)(5008740100001)(104016004)(5003940100001)(107886002)(110136002)(77096005)(4001430100002)(97736004)(5001960100002)(92566002)(81156007)(189998001)(48376002)(586003)(50226001)(2351001)(229853001)(47776003)(118296001)(87936001)(86362001)(50466002)(85326001)(33646002)(19580395003)(106466001)(7059030); DIR:OUT; SFP:1102; SCL:1; SRVR:BY1PR0301MB1254; H:tx30smr01.am.freescale.net; FPR:; SPF:PermError; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; MIME-Version: 1.0 X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB1254; 2:TerAQGmd1RVjN9Qy2OYz1jYX54VmqtslsqAxRLF+1wlghMWsVzq1tfoQB56dSUj1XimX+T0q7iXaUUcAsx+Tc5Ga/r5Rj9VWDSiN8xZ2k9UudWc6in1Kyi2XU2tuBgkovZDlAXPzArmwcIrAKrcCUA==; 3:6VN+T4a8Kk+W7z8a3L9r0254l0kOhZxyk+kmR36RIW27Jn6Zv6GWE4DsdMzyZDnV2i0L53dblXbHjgh80oTYRCrxFN59Ysi1qzR536UnCTPyTptl2GN7husFOPY/tduPS+Vdj34wTlpBEiUjEx/VwHZglt7jvvuFg0OhzjY6mVDGuTbDeczUj+zQDYJpV9BYUDpPoSy4K5duDg7LE/ZeP8jwy+GqTNS7h7lZ80/pobU=; 25:WCyIOHX+RAcfyv71LMChZMncAA5wb3PZcNl9FIQleds7sv+AoWlzl5HtRAP8PWkMgsgBcGcYLQ5zXaZgBu1VBiqPJevBoGgVON1vOCHZPrnS/V5zVJiXsvvjeqkoM9TcZi+sOV2ke4YitrmsRWFUfb49nCHo1BDulTnApcrQLTRuyQcYuMRwv0Ka+k1vbKmCwJFzhu3yuK56eIOLS4Fi79kglSAPuQj7YB5hneZZsgSjuESV5eyj4d44tGvH3qrXQ+GfqEgA/w6BSV89eTA6GA== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY1PR0301MB1254; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB1254; 20:evw5KRHOo/0VXQG1YsWZ3MTkC6pOWYZ1bTC+AMwZIia7PcTKdxF+K5Alh5D5XSKib5ArX/JCk1M2r7NSLhVQd2lkzabgiKYtOYuPHys7KxiszzQSQKTFX7VxmOe0wq6eZukvqTGZv7ZAcXTYj6LyuUGcH4HZQATsBdzZKRmcouUT4Yu0cgONYqm4OOC9UelxvzpYNODtaydBCOhM0nWP9llclY8B7bodtBHkzHYwGIy3l0cWH6b+L1ljj0a/AJNDj+ysvQyLl4szZ1caiOvVayL/dWPBwm0wFk+POsope2M0XUiQuh3xC8OfKBtLq9eTrEEaS6fjrQFsjaP14R9/4Nq8ZNaOIQc/2Bt72iMTtEU=; 4:zlbZVfJaENYW3lv3bOIembpyrvisCi0NAkZxXmHwAdwqiaUMIdv6M0F02ZDNjgPCP7z/QsWn1jR/+G1OQBsfOUt2vNMyUCceo/UeOFJBK/J7PyYD5XgoBV7J06hCXboQXGT7RnjIXBaH3QfD/VxnkFvFEAfhUGOemeKmpQZf6rD8Di8I1QbLNoiFv144nAlolmQZnPN1fiVP6l/mefqsY1I7+ZmHKZFURpzhtsf5uuT/6PJQEBUGEw2W0m+si8kqeJXVI/9DfrJRHQCQ8Gr6Q4ZPD/3Ewx3UjXa6k8nAdaufUyk/F4whnWaMqvBEzShjSgrB3AEY2iWj+wwLTAKZKE2I03awIVOlLN9rkavjkwaOCorGptMs/otmVajL+mWN/pNyGImwWf1uv4SOfK4wHP15jSzqziR5O3NUAVvZo3fEjmY7cVymMn7e6VICQb82 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(101931422205132); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(8121501046)(520078)(5005006)(3002001)(10201501046); SRVR:BY1PR0301MB1254; BCL:0; PCL:0; RULEID:; SRVR:BY1PR0301MB1254; X-Forefront-PRVS: 0770F75EA9 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY1PR0301MB1254; 23:6k02JuU94HmkrXIthBx5JeQSEqO8AlzyUKmjN6W?= =?us-ascii?Q?QNFlZ4W7b0uPjbhkSxBr8CJLDWrxWA82m9xMXf2MKhWUpc82Dq5nQS1GWd4n?= =?us-ascii?Q?B4OQTbJr4lp1VuWnFxYHf2gB+zTBJCL2ak/CWBAxLiyMadmJsufF32jjuQWw?= =?us-ascii?Q?koM5oG6p/Z1p/Jrh4HmiKbDuZJ50zHH7kzri21pIebAS2VeHMw1PHqwHiRiW?= =?us-ascii?Q?BkUTpeyeFRkxsCdC4Fp6lYPXI3S/OB2UB3BbwM8XPJEVTvx6aFhopbMcN38y?= =?us-ascii?Q?IZ2DKbvsyfgNJnYPHJnRmMX+qcNw9B82x2IEOoeBT0LQw8+n6Xd30ysbxfhQ?= =?us-ascii?Q?iEvJZYAPxspZWD0ks+PjLIQ9qTKmlfNx9Y8ptETkXe9ZAVLrR9rGT5Uz2u8b?= =?us-ascii?Q?nxgO2fcyMs8lrMt4i4LbFjr+vXkAPdbm7cFhbGpMuhW3MB+3P8mNLCoLJ+eo?= =?us-ascii?Q?EgYUv6LBl1p/xXZYlmxaAspWjCwq7iy3JelCe1jwKlCEYWHRcaR8ehg1egPb?= =?us-ascii?Q?AAehE/I8oiK6T8GRQO/q/Hv9gYqWDMpxunaAcPNHV2xNTEuMz6kZwvgd6qXv?= =?us-ascii?Q?eUJu5H8PGt9XbRHEwDUD7jNHbR1YgdxsfGWeMA9Q/bvhePN4bVbdofKEIKOg?= =?us-ascii?Q?zlLZGMb1Er/0RfNdnx2l8DRNeCY+PoJD7aDEQIukwmYMRFuxz/OHwBjYzxQy?= =?us-ascii?Q?x3hYGqEV2/fIWWQ6HT9lBcz79vZCvNNlT0bY9dY93XVnp9YSDkppIuOWiLZ6?= =?us-ascii?Q?GsALbK2VO7VnaiER1ICCilDFtgOKBtjPDB7jBjXgvCxLxu8dsJJ26uu+1bvR?= =?us-ascii?Q?5XzzxiCuhRdyGF2uXV9JpHMZnp2AkoD9nwLIWqycoUtSijm/gMImCtPOdnCH?= =?us-ascii?Q?34L81/aOF1xspHxzS2I3buTB+E8CqyVt54QR5XAAx+ISHhokJD/76+yOsoI9?= =?us-ascii?Q?jzAroXnS7sQ43+uwg8JdQxNLXsleXGQRO6m9yvh9eJzfaDJ5EhxolVQv0OLJ?= =?us-ascii?Q?WfnwJ/zJgnDs5j7QV93k5Ymja?= X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB1254; 5:T9dbpCjSwfv7kGSfnPL/6k+wI7RW9AF2yNHIsRJXT89ckKFuNz/KMd7CjfTLB5rLDoxqZoDeKkF+pJYqYl5qPaB515UJxUUzHSoue6tlGahFlnpBLjVUda9CYGeugbIuvLNAHMEgAk32vGItZJaPUA==; 24:TKGbRw7qsgJPI8antjV99N6MimSax4UbpbQSReMbcabSfMIM6e3Bs3xBcaSUtHYOE0vldjBVPU4+ORH1WhRsB2/LWddVkOxgH9Y+R6H6VmA= X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Nov 2015 02:16:31.2139 (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: BY1PR0301MB1254 Cc: Zidan Wang , alsa-devel@alsa-project.org, broonie@kernel.org, lgirdwood@gmail.com, Paul.Handrigan@cirrus.com Subject: [alsa-devel] [PATCH] ASoC: cs42xx8: fix the noise in the right dac channel when playback mono wav with record in background X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org X-Virus-Scanned: ClamAV using ClamSMTP When playback mono wav with record in background, there will be some nosie in the right dac channel. It seems that the ADC data has been routed to the dac channel. The cs42888 have 8 dac channels, it's appropriate to mute the unused dac channels, and the noise will disappear. Steps to reproduce this issue: arecord -D hw:0,0 -f S16_LE -r 48000 -c 1 a.wav & aplay -Dhw:0,0 audio48k16M.wav Signed-off-by: Zidan Wang --- sound/soc/codecs/cs42xx8.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/sound/soc/codecs/cs42xx8.c b/sound/soc/codecs/cs42xx8.c index d562e1b..1179101 100644 --- a/sound/soc/codecs/cs42xx8.c +++ b/sound/soc/codecs/cs42xx8.c @@ -44,6 +44,7 @@ struct cs42xx8_priv { bool slave_mode; unsigned long sysclk; + u32 tx_channels; }; /* -127.5dB to 0dB with step of 0.5dB */ @@ -257,6 +258,9 @@ static int cs42xx8_hw_params(struct snd_pcm_substream *substream, u32 ratio = cs42xx8->sysclk / params_rate(params); u32 i, fm, val, mask; + if (tx) + cs42xx8->tx_channels = params_channels(params); + for (i = 0; i < ARRAY_SIZE(cs42xx8_ratios); i++) { if (cs42xx8_ratios[i].ratio == ratio) break; @@ -283,9 +287,11 @@ static int cs42xx8_digital_mute(struct snd_soc_dai *dai, int mute) { struct snd_soc_codec *codec = dai->codec; struct cs42xx8_priv *cs42xx8 = snd_soc_codec_get_drvdata(codec); + u8 dac_unmute = cs42xx8->tx_channels ? + ~((0x1 << cs42xx8->tx_channels) - 1) : 0; - regmap_update_bits(cs42xx8->regmap, CS42XX8_DACMUTE, - CS42XX8_DACMUTE_ALL, mute ? CS42XX8_DACMUTE_ALL : 0); + regmap_write(cs42xx8->regmap, CS42XX8_DACMUTE, + mute ? CS42XX8_DACMUTE_ALL : dac_unmute); return 0; }