From patchwork Fri Dec 18 08:58:18 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zidan Wang X-Patchwork-Id: 7880841 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 C6DBD9F1AF for ; Fri, 18 Dec 2015 08:56:32 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id DC211204A9 for ; Fri, 18 Dec 2015 08:56:31 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) by mail.kernel.org (Postfix) with ESMTP id ACADF2049D for ; Fri, 18 Dec 2015 08:56:30 +0000 (UTC) Received: by alsa0.perex.cz (Postfix, from userid 1000) id 5C2992657ED; Fri, 18 Dec 2015 09:56:29 +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, RCVD_IN_DNSWL_LOW, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id 4CF58265191; Fri, 18 Dec 2015 09:56:21 +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 39C1126525F; Fri, 18 Dec 2015 09:56:20 +0100 (CET) Received: from na01-bl2-obe.outbound.protection.outlook.com (mail-bl2on0142.outbound.protection.outlook.com [65.55.169.142]) by alsa0.perex.cz (Postfix) with ESMTP id 850B22650D1 for ; Fri, 18 Dec 2015 09:56:12 +0100 (CET) Received: from BLUPR03CA010.namprd03.prod.outlook.com (10.255.124.27) by BY1PR0301MB1253.namprd03.prod.outlook.com (10.161.203.25) with Microsoft SMTP Server (TLS) id 15.1.361.13; Fri, 18 Dec 2015 08:56:09 +0000 Received: from BL2FFO11OLC006.protection.gbl (10.255.124.4) by BLUPR03CA010.outlook.office365.com (10.255.124.27) with Microsoft SMTP Server (TLS) id 15.1.361.13 via Frontend Transport; Fri, 18 Dec 2015 08:56:08 +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 BL2FFO11OLC006.mail.protection.outlook.com (10.173.160.95) with Microsoft SMTP Server (TLS) id 15.1.355.15 via Frontend Transport; Fri, 18 Dec 2015 08:56:06 +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 tBI8u1o9031971; Fri, 18 Dec 2015 01:56:03 -0700 From: Zidan Wang To: Date: Fri, 18 Dec 2015 16:58:18 +0800 Message-ID: <66fa43839fccc9aba8ebfc1330afc22747f05f0d.1450428914.git.zidan.wang@freescale.com> X-Mailer: git-send-email 1.9.1 X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11OLC006; 1:O+LQcVcuk+XYb+gAx/h0uA+drL2bIT2MpXsmttWGeON7zDW8oucxCGiidIObGMaXeMkIn/o5nRyFwx1QzxRMjRaS8dj+BMxZVrQjbt3qpCWlgrzBxyTw5NuvzTWsKnnf/nYr/YrmejkauRKWeju4UF9EvdXQtEiRLKtmp8jpJYW3ck0E/wFXNXXRdCl8dtIRwfZ3JEJnmpddKacfCQJHuhdEhMxW0ryZad5Qc8bVBaNTXrKe/Im9eNo+3AWVPgyvV5b2VNFbBNyzdRXVpSC0wXioFrfxhVJDXdcBRt8BKH9crAWUt35B+n6ZHT9Ef+yrJwHzV6LlpcHe5XUn2av1DLIt8RsUE1YqChVGZMd0afSveOfXh2VvzHFqbLmJugFyfEp/6QfrxrItO2B9m4le43TdTSG7iM+s6BtYzbi5OeBmm/3HuWTh47tOxInffzKF X-Forefront-Antispam-Report: CIP:192.88.168.50; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(448002)(3190300001)(199003)(189002)(6806005)(77096005)(189998001)(229853001)(5008740100001)(107886002)(5001960100002)(586003)(1220700001)(110136002)(97736004)(106466001)(92566002)(33646002)(81156007)(4001430100002)(36756003)(2351001)(1096002)(104016004)(50986999)(48376002)(19580395003)(5003940100001)(50466002)(47776003)(50226001)(85326001)(118296001)(86362001)(87936001)(19580405001); DIR:OUT; SFP:1102; SCL:1; SRVR:BY1PR0301MB1253; 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; BY1PR0301MB1253; 2:o1TVl2Zx8KfPfD/KQJCc/qlfds7HBO+Mmz+VT7M26le6yBE17X39kggsqpyxizeQE+oA08eQphc2LkcpFznUsel0XZHTOMk+S/tz84n2SpUWNN308T6FGXnE5RIjnKSh+DQGMu4Hf6Sa/vQIqs609A==; 3:tl+HNbF45Peee7CpTh3E5tdTSipTt1dWFv6zXgya2e9/meqYrvBjhJhm4vhf9C5QANPGiWhg7liXHsa9IAuJIHS0vV08aCsxE5VQwkhZXeW380cHD5xrDYbQsnRK+gqbcky26mVBE9PJ5bdExMQOzmmFi2RxcCe9VO3HB+lEzauwnEcdwcy1IXdbtDfTeJRD9WplH3x5MaUtWxzdrYINHzEnhnhxLULix7ZENAN1hO4=; 25:aL6iFpM2hTEJV28Ylw6aE6k4K4SzNnMOC49qWAH0yWzbNy778wK1lYV0qGy/3aiGi/SxZ0CyV82OUeE3GlGmxm28MvAYolYuaNgbFLUafGLtSVKsH1INDBliEhHICvICcFq+Z1/gFmDWNHhjjgbG6rCmGHROGC3TRaT1FUGgKbRb7Vrze6314jqtvAX6SmGX87f5fz/KMYLN5zY71Fk3LIUSEeS67/7di7PfkuMvyF4ZjbHubedtpIgxxgmMSzY2e6iGeeAc5Jq0i0kEBmilJg== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY1PR0301MB1253; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB1253; 20:4DV7CHlr+9pBmMSeJgoHa1NxWayc8M5cvNmXqis0G2HHksIRJqUYfw1/ZpH0V1QC5duM9fV9k1GjtyIsRhYa/j9PGE1dM7WfgTqZbFOJn3d4HoKUZxZAh6uTDKEB+o588V3e8LQX5WBmlgH1Gv15Sk0X8vKtvPEg2bLg2d4ppIVX7UKwLFH6jsdg/8iagQ12hKpx7vGbyAiNBwsGf4BRpah5I/e0DSAE4ALZwUZjgbS2GITqbjW4DBAd7weTkqRdRYd1mpQFaxPlSVtn1UA1SQGJNlFnAG4Hf0Dxd9Wg7Luh+wpy1XEvO17lk/nqosklu/fm7gs1YD4/l2iHsuPfyPFG/GoaGtvVND9xr+S1HZM=; 4:mbkoVQGHdwcwM7N1rlf1ccIcDdjRTiKPyiTKfMu77fMdgctIHTGj9u+Xn2b0JDeiNhSm13+tM3M8FjJ21L9cWn3aUFGznk1J2BHxjgk1rkrnEOw0mkyZ4+SNDpY4MmNzCeT6akGNLiyNbfREJU/mb+8WCwv84pWYo3hrMAB7aNSnt2hl42yWsexQvgXyW+JExa8EMyleohCbV0urEhkkNxzCDcPYji3BCKD89Vdpr71cOPUWiS8L0uw+5QQncS9zekMVQrM6lo6+Gkx7Rwl0xX0f9Rq+Twz+vpGdQjYLwiYyZYXk0jmjL7yagA+RmQ3jfkLNJJTEto+KdpeBWol9mmMZ7PzyX7vk4wh/Ory7Ew4xjg3kx2UCeuR32c33170ZUNxzCKZtsviUogvPUMmhQH2dejoxkzjnlkhk07tyeyjzhbcVk7bMx/Cy9PxeoUp2 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(101931422205132); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(520078)(5005006)(8121501046)(3002001)(10201501046); SRVR:BY1PR0301MB1253; BCL:0; PCL:0; RULEID:; SRVR:BY1PR0301MB1253; X-Forefront-PRVS: 07943272E1 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY1PR0301MB1253; 23:0bQ9yhFPdzm0VrmkUjmRQrIcBJl07YKcktg6Blp?= =?us-ascii?Q?15NUbUlvq1j79YDSo0xgJCPOZLtIs7vw/O4+aZB7CHgL774n+KPL9YHlhLO/?= =?us-ascii?Q?OFyIlI/UdDAmaWKtiHfBWQQ1RmsPf6O4rQ/uVd93QmhlbD0ljzO6FfpDmX36?= =?us-ascii?Q?PTlVY4o770YQqEjrWpfZH8zOfRQXswCBMjtrbxjj8Vq8ufRCa0W4By+QAv9w?= =?us-ascii?Q?UrOa2dJ+8cYyH7g489uzclulmrbiYXILdLnG5OJ4OBS9znV132RJBOc6H9ZB?= =?us-ascii?Q?NWfJHCtbXc0jQF04zr0GStP4r3V3tjYnHB7iH2EbB9rVIIn6W/TqltNFqEmt?= =?us-ascii?Q?2Uoi/jWsMfXar2UDGoPzazGuK/DYLLtOyIuczvk4RZ9lf7qp4JtTW6b4oBGv?= =?us-ascii?Q?HaVG7BA+3xp1K3SRPIzLThiw1hRtMzBM3jbtUcahSmZ9DJ3g0pYKkdzZYMhx?= =?us-ascii?Q?2nR9GP9wrsQK+q8mfBCEunPqUcKNZzk0fs6x0d/J2vJDlfXROjzYZ7LI9B0B?= =?us-ascii?Q?tLzuVsmUvMIH2LOy5puCJbsfxRB2Y3s1mjZTcAU0BFFHtaFQLmb2znFomw5r?= =?us-ascii?Q?+Y4vgOLsNnjxOrCHKqwygassMG28XBZBvJDVjybi30sOU/mRb1yJD5ZK3v2t?= =?us-ascii?Q?Skq+Ge8+WEVViVpuXzHM15u8jOl4qojUw9D4NNvK9cWpV+nQQ27iY2W8N4AC?= =?us-ascii?Q?P9Gdotgf3LSElqyBBpr+j+vxNSlxggOw1l4U2OhKfO5nrp0fprWoLdvTK+Ya?= =?us-ascii?Q?7bq85UJuJ16dyLmk+zWCerXyEfyUzDFxDiRDr2PTEPKfcSGolfwLJhL1Z8NB?= =?us-ascii?Q?vi/VE1MA5kw1cB7kXYRK86HW7pUlKlO3w6HZpY3gP6QDRnyh3ZP1VOHUh87k?= =?us-ascii?Q?QhBq/B2caE/f1hrv2RQI37aFUo5Prnu1jM/EFByGe8wa4OMqBY0i55dsZdlY?= =?us-ascii?Q?qNivPMpOETOoQ6KjIWpTwXiSV694GbW8r0LzP1E3Q4nqY8DDKsPf17yTyaqR?= =?us-ascii?Q?9L7DmNHiCWvLPBt3/FEuPlHee?= X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB1253; 5:LS36Iz5x/n7MDFqNUXtzfxC1vB0gbQFNlbcX8X7rjxpNUwYqwOYEGIAKnKnqS3rpgJ++j/9aaeVj8pF5vBYbTWasl0/jo66bCz02hHJpt7HovAPMNSkIOBO/V4qjI+ZLo8Ya1O2QmavnkdW1Fznf2Q==; 24:iM0gD+J0txt4RZ1Cx0Xl3u7L7Wwuq/Tm7acuOMgNY/KvVRDvlLZdktI/YYAQy+LVkycAoVm8T27usZa37k8EpP34krf9rohjpBgnu0tb2mo= X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Dec 2015 08:56:06.0641 (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: BY1PR0301MB1253 Cc: alsa-devel@alsa-project.org, Zidan Wang , Xiubo.Lee@gmail.com, tiwai@suse.com, nicoleotsuka@gmail.com Subject: [alsa-devel] [PATCH v2] ASoC: fsl_asrc: sound is wrong after suspend/resume 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 The register ASRCFG is volatile, but some bits need to be recovered after suspend/resume. Signed-off-by: Zidan Wang --- v1->v2: 1. fix indentation issue. 2. add a macro for the magic number. sound/soc/fsl/fsl_asrc.c | 7 +++++++ sound/soc/fsl/fsl_asrc.h | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/sound/soc/fsl/fsl_asrc.c b/sound/soc/fsl/fsl_asrc.c index 484e46ca..d964016 100644 --- a/sound/soc/fsl/fsl_asrc.c +++ b/sound/soc/fsl/fsl_asrc.c @@ -990,6 +990,9 @@ static int fsl_asrc_suspend(struct device *dev) { struct fsl_asrc *asrc_priv = dev_get_drvdata(dev); + regmap_read(asrc_priv->regmap, REG_ASRCFG, + &asrc_priv->regcache_cfg); + regcache_cache_only(asrc_priv->regmap, true); regcache_mark_dirty(asrc_priv->regmap); @@ -1010,6 +1013,10 @@ static int fsl_asrc_resume(struct device *dev) regcache_cache_only(asrc_priv->regmap, false); regcache_sync(asrc_priv->regmap); + regmap_update_bits(asrc_priv->regmap, REG_ASRCFG, + ASRCFG_NDPRi_ALL_MASK | ASRCFG_POSTMODi_ALL_MASK | + ASRCFG_PREMODi_ALL_MASK, asrc_priv->regcache_cfg); + /* Restart enabled pairs */ regmap_update_bits(asrc_priv->regmap, REG_ASRCTR, ASRCTR_ASRCEi_ALL_MASK, asrctr); diff --git a/sound/soc/fsl/fsl_asrc.h b/sound/soc/fsl/fsl_asrc.h index 68802cd..c119cb0 100644 --- a/sound/soc/fsl/fsl_asrc.h +++ b/sound/soc/fsl/fsl_asrc.h @@ -132,10 +132,13 @@ #define ASRCFG_INIRQi (1 << ASRCFG_INIRQi_SHIFT(i)) #define ASRCFG_NDPRi_SHIFT(i) (18 + i) #define ASRCFG_NDPRi_MASK(i) (1 << ASRCFG_NDPRi_SHIFT(i)) +#define ASRCFG_NDPRi_ALL_SHIFT 18 +#define ASRCFG_NDPRi_ALL_MASK (7 << ASRCFG_NDPRi_ALL_SHIFT) #define ASRCFG_NDPRi (1 << ASRCFG_NDPRi_SHIFT(i)) #define ASRCFG_POSTMODi_SHIFT(i) (8 + (i << 2)) #define ASRCFG_POSTMODi_WIDTH 2 #define ASRCFG_POSTMODi_MASK(i) (((1 << ASRCFG_POSTMODi_WIDTH) - 1) << ASRCFG_POSTMODi_SHIFT(i)) +#define ASRCFG_POSTMODi_ALL_MASK (ASRCFG_POSTMODi_MASK(0) | ASRCFG_POSTMODi_MASK(1) | ASRCFG_POSTMODi_MASK(2)) #define ASRCFG_POSTMOD(i, v) ((v) << ASRCFG_POSTMODi_SHIFT(i)) #define ASRCFG_POSTMODi_UP(i) (0 << ASRCFG_POSTMODi_SHIFT(i)) #define ASRCFG_POSTMODi_DCON(i) (1 << ASRCFG_POSTMODi_SHIFT(i)) @@ -143,6 +146,7 @@ #define ASRCFG_PREMODi_SHIFT(i) (6 + (i << 2)) #define ASRCFG_PREMODi_WIDTH 2 #define ASRCFG_PREMODi_MASK(i) (((1 << ASRCFG_PREMODi_WIDTH) - 1) << ASRCFG_PREMODi_SHIFT(i)) +#define ASRCFG_PREMODi_ALL_MASK (ASRCFG_PREMODi_MASK(0) | ASRCFG_PREMODi_MASK(1) | ASRCFG_PREMODi_MASK(2)) #define ASRCFG_PREMOD(i, v) ((v) << ASRCFG_PREMODi_SHIFT(i)) #define ASRCFG_PREMODi_UP(i) (0 << ASRCFG_PREMODi_SHIFT(i)) #define ASRCFG_PREMODi_DCON(i) (1 << ASRCFG_PREMODi_SHIFT(i)) @@ -453,6 +457,8 @@ struct fsl_asrc { int asrc_rate; int asrc_width; + + u32 regcache_cfg; }; extern struct snd_soc_platform_driver fsl_asrc_platform;