From patchwork Fri Jan 12 01:41:36 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 10159397 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 069E1601A1 for ; Fri, 12 Jan 2018 02:38:09 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E236228709 for ; Fri, 12 Jan 2018 02:38:08 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D63ED28848; Fri, 12 Jan 2018 02:38:08 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.8 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED, RCVD_IN_DNSWL_NONE, T_DKIM_INVALID autolearn=no version=3.3.1 Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2019E28709 for ; Fri, 12 Jan 2018 02:38:07 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id 2290D26826F; Fri, 12 Jan 2018 03:37:04 +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 1226826812B; Fri, 12 Jan 2018 03:37:01 +0100 (CET) Received: from relmlie3.idc.renesas.com (relmlor4.renesas.com [210.160.252.174]) by alsa0.perex.cz (Postfix) with ESMTP id CDD75267DB3 for ; Fri, 12 Jan 2018 02:41:40 +0100 (CET) Received: from unknown (HELO relmlir2.idc.renesas.com) ([10.200.68.152]) by relmlie3.idc.renesas.com with ESMTP; 12 Jan 2018 10:41:39 +0900 Received: from relmlii1.idc.renesas.com (relmlii1.idc.renesas.com [10.200.68.65]) by relmlir2.idc.renesas.com (Postfix) with ESMTP id 1D2166DF1B; Fri, 12 Jan 2018 10:41:39 +0900 (JST) X-IronPort-AV: E=Sophos;i="5.46,346,1511794800"; d="scan'208";a="268010372" Received: from mail-pu1apc01lp0023.outbound.protection.outlook.com (HELO APC01-PU1-obe.outbound.protection.outlook.com) ([65.55.88.23]) by relmlii1.idc.renesas.com with ESMTP/TLS/AES256-GCM-SHA384; 12 Jan 2018 10:41:38 +0900 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesasgroup.onmicrosoft.com; s=selector1-renesas-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=0mu1hBBsiiY7u+f9dbGI8P47vdTHZFasTYQueE82E0k=; b=pXxPxD45nhtxtu5gEn5CkJQ8COBeKvm3XDHFBrgT0fFOrcFdtS6uxbLRzcYm/Ii3BJ8Qh0cXg+dOFj5MVTczUdE5/auNR0dsJ94htxVzKDGbGTPOY9NT++87eiqw97krCcIY5L0vabMrDCiVMciqYM9RN/0gcSGOfCJHhf/aBPI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=kuninori.morimoto.gx@renesas.com; Received: from morimoto-PC.renesas.com (211.11.155.138) by KL1PR0601MB1878.apcprd06.prod.outlook.com (2603:1096:802:7::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Fri, 12 Jan 2018 01:41:36 +0000 Message-ID: <87r2qv7t2r.wl%kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto User-Agent: Wanderlust/2.15.9 Emacs/24.3 Mule/6.0 To: Mark Brown In-Reply-To: <87bmhzevk9.wl%kuninori.morimoto.gx@renesas.com> References: <87bmhzevk9.wl%kuninori.morimoto.gx@renesas.com> MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Date: Fri, 12 Jan 2018 01:41:36 +0000 X-Originating-IP: [211.11.155.138] X-ClientProxiedBy: TY1PR01CA0147.jpnprd01.prod.outlook.com (2603:1096:402:1::23) To KL1PR0601MB1878.apcprd06.prod.outlook.com (2603:1096:802:7::23) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 91df6a2b-775c-4012-b1dd-08d5595d9e76 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020074)(4652020)(5600026)(4604075)(48565401081)(2017052603307)(7153060)(7193020); SRVR:KL1PR0601MB1878; X-Microsoft-Exchange-Diagnostics: 1; KL1PR0601MB1878; 3:E2QLb/rLQRYbaOqe/1aJn6gtGb4/JZKj3JL3wq/5fX4OsRMPm0AxqX3TMRv9ze2xHGzViW5Oddlw8Mm+FmSZuTOqMHV4xKHIB9kR/OmpFDVnWb3m2moF6x6Sq9t/2utrfadZ/OSFJZkmEeR2XQKNomMy7GMFXxlMpTgsI8MQhj7OXaWO6jMRA3UjG1nZZ9NAJnUhbo37oi6l5JNknMJR6lniRDNqmKNE85+Pt+gcxXTeyy/XHHh57tdi7nP7UwTY; 25:CbnyaviPj1akfATw2iKjm3EVWDgJ0N0W5SiBTUrrNI/ovPQ74PtNimBGhqG02VunBwBmWPNWrVMlrz9dHdmWoORn13p/scvpYoPu30Mv4RVQfrljimkozvthcGNAeX8v5CBv/MWrEzLQ8uRWxGyAi/RNCEadm7hwSq4swR8n6Vs1MQKMaUhSwTMKQ0qKjzLbMMYTXWO/s+S2L8qVWi/ZYBLYPFRi/Kq9lhCoVdD63wlLb+ftnAfQijot+1KgWrVwdbE9l4a67q4JF9CpfQqVqvKQVBbv2qM4NW46WC6I0V9n6bpcvjiMOLvN+/bx1dZ0M3QeKtuJ1HfzPJ0YJCcAtw==; 31:14BRGQQYrVScX3LJxKI9XcvMHLTZckdi8SqgA5c5q4vnvFpOZWAO6iH1Qo4ceFWSUCsnBc+2b0g19hN3i6YLThLPBPtE0sKEyW9pZNpfHKCXivSyoM/djqLB1XxASVNrf0JdNw/uzqvVJ8kuUy/MS8yDlQmk29vXKWhz6lUdhqMhwYdppFKcxB5/rZchjXv/HTD+3giuDD//ZX5+BfTb3oSV252zCOuGZk/2EzlKyds= X-MS-TrafficTypeDiagnostic: KL1PR0601MB1878: X-Microsoft-Exchange-Diagnostics: 1; KL1PR0601MB1878; 20:6XfwmIlxuc81D0RKleOaMrirZJvgT9Ijr9xp4VnXMbSH3U6LPHTuW7QwGjY1RLDcz3MkZvplHQMwc37nDU13YitWlj/n6dUeopJOvBo1ZIv7t8hSWJJqO1i4DFLq8wvd0BBMBIehUUy6aBztfw6AKNbcSSjmaWCo+7ml5VS2U5q+5PO1SjaJKt29LokOmmB/Sdm6CQWSW/MbgVg3fhZ2opgI8V4jqxNmrclXblLw8SyygMY7tsxgDJ//aj4IBEOmOQ2kkkMfsXCgC+x0GjgZXAR14zsDekQDssxrExmsDAriEzFlfDcMbV6dSTzQEeUa258G9tJv9KKNwPS9rjnXBq6tQG2UBDlIibIrD8ZgITobBYtiohfaaxYlo2et1EoPhRcugyMaLR5gyo+oys8QDV8sdDcHr1JmuVfeltkrVPSyWirK5EuvdYM7uiScz0Z5ZlFuzIsOkMFKCxmiS7kYqXm+0gAHAvfRELhFpJNRZZNFNuCyWY46Ie6bX3BZrHCf; 4:kvOg85DvvrCKFurDrjSbHtcGQ+mC0OAkLKDYwVeR4qAfbgFuVwQrB30Z+/rdLNnhWn4dC62JVphuBmHBjqkw4zAJvsO/jQCilqwO7LZWnsS8vdna5dYD8gwZm7eRLjTY7QZ9RXTpZXUHJLtkzLK/LkeJKA+CqXcYFiBcfj3ug+mOYCSABYrP5e7KmHP1hXSe2GnSMfnRThQ+A0OGM0FSJh8XkIWpPOhapQpx1Nf1rt1ai5Ut4u5Sl3XJLCmJ7MTbK2EoZpZVp502yHhbya56JFRV1ViK58jv7wy09g97reOUXDW+RVH3bJItxHBBvfP4 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(3002001)(10201501046)(93006095)(93001095)(3231023)(944501138)(6055026)(6041268)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(6072148)(201708071742011); SRVR:KL1PR0601MB1878; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:KL1PR0601MB1878; X-Forefront-PRVS: 0550778858 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(346002)(366004)(39380400002)(39860400002)(396003)(376002)(199004)(189003)(8676002)(81166006)(50466002)(68736007)(6486002)(25786009)(81156014)(316002)(478600001)(86362001)(8936002)(83506002)(54906003)(16586007)(53936002)(58126008)(4326008)(97736004)(16526018)(76176011)(7696005)(386003)(2950100002)(52116002)(6916009)(36756003)(7736002)(5660300001)(69596002)(6116002)(23726003)(53416004)(2906002)(105586002)(47776003)(305945005)(66066001)(59450400001)(106356001)(3846002)(21314002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:KL1PR0601MB1878; H:morimoto-PC.renesas.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: renesas.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; KL1PR0601MB1878; 23:IWfYedKf8amHytjTm8mK5xfB0zNdv2nXCIKYvV/?= =?us-ascii?Q?Bq8dghD6GSjk/L7nrT5nfhXdcAnn0Gl+vAgfp7J26HseeIClwg8dLvUOClfk?= =?us-ascii?Q?bTtqyNwGHeXpd3Cnp1Su4N2cZ9x7KWzTJ5b4dQ9kKEZ9jqqs3SdgYuUVv7kV?= =?us-ascii?Q?4jUcGLJiGgtmCuy3lYs3huPFJn1YSGdm+zbdfeY4mCcIaTKaMKuQBeS2Xy2I?= =?us-ascii?Q?u0JUcMXa7Vy8xWobbXrUjIM+2RWZYV51WQ+ZisbBtfbF2vIHk5khbSqkwofn?= =?us-ascii?Q?fj1P9bHQY2ZDhWnT86nphE6lpBkwp3AJ1c6ujhHHTKtIJOe/srbpUjWNTq4p?= =?us-ascii?Q?i8j5nLo0tiNYHhy4uPSu9Gc9dh/J8EMK4fLRDHs3zMl1clXNG5jGDW1/WseT?= =?us-ascii?Q?NPWrFAWNj7Jn2qTlBvAhUDxYSu2crRn++x+3gYECiwmNxPE0aj+Q2L1o3Y6E?= =?us-ascii?Q?2NO7S8PgY81ocNTsX7giXpFb4KmrNnIjmSIJViHbZWEkVuYtXnF5Ts7H+mpk?= =?us-ascii?Q?vlzrvX2oANKwKZ8nUa9yZdoNB4sgPcLwGSGMbDdAJkjRZWqDcLQAVGkDxzJe?= =?us-ascii?Q?YhpYiZwIrMdnBszbMHVNYglwKyPoz3zxi6tIKkqr7Y5dxH1PG9MKtz5jQYiZ?= =?us-ascii?Q?6q8F/87BUtcWzgZsHLwHeqlCN0crHIEAJ+YDiraSet3Jb+eE9NVUoB0LnR5d?= =?us-ascii?Q?eqU7XaUiTQUsrPKiHMHa9Vs8bM2NtALmM9RSTcmaXEH/KLJ5FZr5o3QaL+Pe?= =?us-ascii?Q?Rzq+l6tPBwdoMPigaM/0zrwi5Ds8HP4PjeiRLD+Lw+5hXNk6Zt7F8EX+cETt?= =?us-ascii?Q?PWmLgLOWsHAOZtMBkCNbcLC+wsVNxfEsTxft8OxDRpsjHxcoimN9xvw+qi7h?= =?us-ascii?Q?7SdxnRNKC0thOzJRzOy+ufvWYsPYsdo76qvtZyZ8S2oTOLJRJgz5uuN3VUud?= =?us-ascii?Q?7T8vSbryfYrUPli5EVuWp4jYWKhNg2NCAeT38YIgekfnVk0/Rr25mmNoUejM?= =?us-ascii?Q?HD1DOaphk2SPJFW+JZM/RFS6rNdtnFaJScuPdU3HmdFkqjw4OFNj/aOzfx09?= =?us-ascii?Q?qq70J7dZW3Pe4mbrms5JplY4glaSJsU4u22dOGLQ+z1Vob0g+WcMPp1p6T6N?= =?us-ascii?Q?3notjTlfvL2ktsp3AiAVNuG53M+2T93BlfHD3s5XO9RkgI/hllnMyHQ=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; KL1PR0601MB1878; 6:03ntiPXlz38DVt2w/av1QQ59W12TOgUJRSymm9gKZfcm+2mBlGh3TCQQTA+X74qGTUvzcrPoNkWXQVc2FDwi+U5XiePWIS5HVKTlJvZlOx7vy+pfFI8x5o7aYNouQ4hlvAh5ulH/RdagjYHHW1lgqlvu696lSukcyIoBVgS7GYxuPvWyebbhrKRMbA9+fAYMJzqC2Oom7Lkkz+97CJs2RRLNcYr2aklMiWix+cqEPtnOfNt8tfcsJpvdki3Wc2e8vtDSbuItPw29hPdJoqdUTFqaYhGmC5pelXuRz5TO0jp8lrajwJN2T1K0XyaElA0VEG4UMblE5dbw+munY0cG8pmjW2irz/35kkbmP1yYSIs=; 5:Ad9Dh/OHj0wjHSMRHEByfJIb/ZZ3oWyvrjgvTsWCKQz4kxZVno3HTOpyoxFq0XzVJCZbuyZNA0KF+0I3CXOr1ZbEst3HTeDf+xnC9zu5fKZNxb3LZyjhxLUT+NXrnzUCa3AhKYJ898xJ4p4PVtCbXzud8JQmzKRc5VXizM5TJQw=; 24:2DuD7R6fs4tl1eEysAcqWPM6T8/nSQkibYhQVncdbAbL8Xohrj/YrbViQjbPS4ie5grsPjWMqaOl/J1wTU8bZcpjckJ/BAhdoolxrpU/reM=; 7:C4lWsSkH0gdHx4mkxiRIALeFxTjiLZw2SgoJsITlL4ssjw/afAQk7dKU6/f1uSe/wL8S3aa6pSMR+gv3JkpBbMCuRcFm6HBTQSjx5q6oUIhESF+gYzmzA883hyzd3ISqKXiZZTQwiVc1HnzQ9h7JZyYApFaQjO/YNmqReUSENXjY0hYRKrG4KhZwbuSc/xifFmAmX9r6WsnYajQtLhrEzokQhvXrglOq62Y0Ac+C7raC+MJZQMrnVSrisF7k3KHS SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; KL1PR0601MB1878; 20:t7V8svvtxhaPWrUoeb5PRPWuVELyOg7q+xa6H+zfeBCtfjQaopJjQqknT5liAF9Spi4CzIdVZsHbh1pJEuAOLiT1KI7SjKa9pnit1sc9LAp0QNNwrrjjbwZu8Wts5eoYmnw49EzC1k4pt9GciJuluNf0YiskyzEUIP5nRan//N8= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2018 01:41:36.3358 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 91df6a2b-775c-4012-b1dd-08d5595d9e76 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR0601MB1878 Cc: Linux-ALSA , Simon Subject: [alsa-devel] [PATCH 114/187] ASoC: tscs42xx: replace codec to component 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 From: Kuninori Morimoto Now we can replace Codec to Component. Let's do it. Note: xxx_codec_xxx() -> xxx_component_xxx() .idle_bias_off = 0 -> .idle_bias_on = 1 .ignore_pmdown_time = 0 -> .pmdown_time = 1 - -> .endianness = 1 - -> .non_legacy_dai_naming = 1 Signed-off-by: Kuninori Morimoto --- sound/soc/codecs/tscs42xx.c | 222 +++++++++++++++++++++----------------------- 1 file changed, 108 insertions(+), 114 deletions(-) diff --git a/sound/soc/codecs/tscs42xx.c b/sound/soc/codecs/tscs42xx.c index eedd600..d76844d 100644 --- a/sound/soc/codecs/tscs42xx.c +++ b/sound/soc/codecs/tscs42xx.c @@ -91,15 +91,15 @@ static bool tscs42xx_precious(struct device *dev, unsigned int reg) }; #define MAX_PLL_LOCK_20MS_WAITS 1 -static bool plls_locked(struct snd_soc_codec *codec) +static bool plls_locked(struct snd_soc_component *component) { int ret; int count = MAX_PLL_LOCK_20MS_WAITS; do { - ret = snd_soc_read(codec, R_PLLCTL0); + ret = snd_soc_component_read32(component, R_PLLCTL0); if (ret < 0) { - dev_err(codec->dev, + dev_err(component->dev, "Failed to read PLL lock status (%d)\n", ret); return false; } else if (ret > 0) { @@ -131,10 +131,10 @@ static int sample_rate_to_pll_freq_out(int sample_rate) } #define DACCRSTAT_MAX_TRYS 10 -static int write_coeff_ram(struct snd_soc_codec *codec, u8 *coeff_ram, +static int write_coeff_ram(struct snd_soc_component *component, u8 *coeff_ram, unsigned int addr, unsigned int coeff_cnt) { - struct tscs42xx *tscs42xx = snd_soc_codec_get_drvdata(codec); + struct tscs42xx *tscs42xx = snd_soc_component_get_drvdata(component); int cnt; int trys; int ret; @@ -142,9 +142,9 @@ static int write_coeff_ram(struct snd_soc_codec *codec, u8 *coeff_ram, for (cnt = 0; cnt < coeff_cnt; cnt++, addr++) { for (trys = 0; trys < DACCRSTAT_MAX_TRYS; trys++) { - ret = snd_soc_read(codec, R_DACCRSTAT); + ret = snd_soc_component_read32(component, R_DACCRSTAT); if (ret < 0) { - dev_err(codec->dev, + dev_err(component->dev, "Failed to read stat (%d)\n", ret); return ret; } @@ -154,14 +154,14 @@ static int write_coeff_ram(struct snd_soc_codec *codec, u8 *coeff_ram, if (trys == DACCRSTAT_MAX_TRYS) { ret = -EIO; - dev_err(codec->dev, + dev_err(component->dev, "dac coefficient write error (%d)\n", ret); return ret; } ret = regmap_write(tscs42xx->regmap, R_DACCRADDR, addr); if (ret < 0) { - dev_err(codec->dev, + dev_err(component->dev, "Failed to write dac ram address (%d)\n", ret); return ret; } @@ -170,7 +170,7 @@ static int write_coeff_ram(struct snd_soc_codec *codec, u8 *coeff_ram, &coeff_ram[addr * COEFF_SIZE], COEFF_SIZE); if (ret < 0) { - dev_err(codec->dev, + dev_err(component->dev, "Failed to write dac ram (%d)\n", ret); return ret; } @@ -179,9 +179,9 @@ static int write_coeff_ram(struct snd_soc_codec *codec, u8 *coeff_ram, return 0; } -static int power_up_audio_plls(struct snd_soc_codec *codec) +static int power_up_audio_plls(struct snd_soc_component *component) { - struct tscs42xx *tscs42xx = snd_soc_codec_get_drvdata(codec); + struct tscs42xx *tscs42xx = snd_soc_component_get_drvdata(component); int freq_out; int ret; unsigned int mask; @@ -199,20 +199,20 @@ static int power_up_audio_plls(struct snd_soc_codec *codec) break; default: ret = -EINVAL; - dev_err(codec->dev, "Unrecognized PLL output freq (%d)\n", ret); + dev_err(component->dev, "Unrecognized PLL output freq (%d)\n", ret); return ret; } mutex_lock(&tscs42xx->pll_lock); - ret = snd_soc_update_bits(codec, R_PLLCTL1C, mask, val); + ret = snd_soc_component_update_bits(component, R_PLLCTL1C, mask, val); if (ret < 0) { - dev_err(codec->dev, "Failed to turn PLL on (%d)\n", ret); + dev_err(component->dev, "Failed to turn PLL on (%d)\n", ret); goto exit; } - if (!plls_locked(codec)) { - dev_err(codec->dev, "Failed to lock plls\n"); + if (!plls_locked(component)) { + dev_err(component->dev, "Failed to lock plls\n"); ret = -ENOMSG; goto exit; } @@ -224,25 +224,25 @@ static int power_up_audio_plls(struct snd_soc_codec *codec) return ret; } -static int power_down_audio_plls(struct snd_soc_codec *codec) +static int power_down_audio_plls(struct snd_soc_component *component) { - struct tscs42xx *tscs42xx = snd_soc_codec_get_drvdata(codec); + struct tscs42xx *tscs42xx = snd_soc_component_get_drvdata(component); int ret; mutex_lock(&tscs42xx->pll_lock); - ret = snd_soc_update_bits(codec, R_PLLCTL1C, + ret = snd_soc_component_update_bits(component, R_PLLCTL1C, RM_PLLCTL1C_PDB_PLL1, RV_PLLCTL1C_PDB_PLL1_DISABLE); if (ret < 0) { - dev_err(codec->dev, "Failed to turn PLL off (%d)\n", ret); + dev_err(component->dev, "Failed to turn PLL off (%d)\n", ret); goto exit; } - ret = snd_soc_update_bits(codec, R_PLLCTL1C, + ret = snd_soc_component_update_bits(component, R_PLLCTL1C, RM_PLLCTL1C_PDB_PLL2, RV_PLLCTL1C_PDB_PLL2_DISABLE); if (ret < 0) { - dev_err(codec->dev, "Failed to turn PLL off (%d)\n", ret); + dev_err(component->dev, "Failed to turn PLL off (%d)\n", ret); goto exit; } @@ -256,8 +256,8 @@ static int power_down_audio_plls(struct snd_soc_codec *codec) static int coeff_ram_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { - struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); - struct tscs42xx *tscs42xx = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol); + struct tscs42xx *tscs42xx = snd_soc_component_get_drvdata(component); struct coeff_ram_ctl *ctl = (struct coeff_ram_ctl *)kcontrol->private_value; struct soc_bytes_ext *params = &ctl->bytes_ext; @@ -275,8 +275,8 @@ static int coeff_ram_get(struct snd_kcontrol *kcontrol, static int coeff_ram_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { - struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); - struct tscs42xx *tscs42xx = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol); + struct tscs42xx *tscs42xx = snd_soc_component_get_drvdata(component); struct coeff_ram_ctl *ctl = (struct coeff_ram_ctl *)kcontrol->private_value; struct soc_bytes_ext *params = &ctl->bytes_ext; @@ -292,11 +292,11 @@ static int coeff_ram_put(struct snd_kcontrol *kcontrol, mutex_lock(&tscs42xx->pll_lock); - if (plls_locked(codec)) { - ret = write_coeff_ram(codec, tscs42xx->coeff_ram, + if (plls_locked(component)) { + ret = write_coeff_ram(component, tscs42xx->coeff_ram, ctl->addr, coeff_cnt); if (ret < 0) { - dev_err(codec->dev, + dev_err(component->dev, "Failed to flush coeff ram cache (%d)\n", ret); goto exit; } @@ -358,13 +358,13 @@ static int dapm_micb_event(struct snd_soc_dapm_widget *w, int pll_event(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol, int event) { - struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); + struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); int ret; if (SND_SOC_DAPM_EVENT_ON(event)) - ret = power_up_audio_plls(codec); + ret = power_up_audio_plls(component); else - ret = power_down_audio_plls(codec); + ret = power_down_audio_plls(component); return ret; } @@ -372,14 +372,14 @@ int pll_event(struct snd_soc_dapm_widget *w, int dac_event(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol, int event) { - struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); - struct tscs42xx *tscs42xx = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); + struct tscs42xx *tscs42xx = snd_soc_component_get_drvdata(component); int ret; mutex_lock(&tscs42xx->coeff_ram_lock); if (tscs42xx->coeff_ram_synced == false) { - ret = write_coeff_ram(codec, tscs42xx->coeff_ram, 0x00, + ret = write_coeff_ram(component, tscs42xx->coeff_ram, 0x00, COEFF_RAM_COEFF_COUNT); if (ret < 0) goto exit; @@ -790,7 +790,7 @@ static int bytes_info_ext(struct snd_kcontrol *kcontrol, R_DACMBCREL3L, 2), }; -static int setup_sample_format(struct snd_soc_codec *codec, +static int setup_sample_format(struct snd_soc_component *component, snd_pcm_format_t format) { unsigned int width; @@ -811,21 +811,21 @@ static int setup_sample_format(struct snd_soc_codec *codec, break; default: ret = -EINVAL; - dev_err(codec->dev, "Unsupported format width (%d)\n", ret); + dev_err(component->dev, "Unsupported format width (%d)\n", ret); return ret; } - ret = snd_soc_update_bits(codec, R_AIC1, RM_AIC1_WL, width); + ret = snd_soc_component_update_bits(component, R_AIC1, RM_AIC1_WL, width); if (ret < 0) { - dev_err(codec->dev, "Failed to set sample width (%d)\n", ret); + dev_err(component->dev, "Failed to set sample width (%d)\n", ret); return ret; } return 0; } -static int setup_sample_rate(struct snd_soc_codec *codec, unsigned int rate) +static int setup_sample_rate(struct snd_soc_component *component, unsigned int rate) { - struct tscs42xx *tscs42xx = snd_soc_codec_get_drvdata(codec); + struct tscs42xx *tscs42xx = snd_soc_component_get_drvdata(component); unsigned int br, bm; int ret; @@ -871,29 +871,29 @@ static int setup_sample_rate(struct snd_soc_codec *codec, unsigned int rate) bm = RV_DACSR_DBM_2; break; default: - dev_err(codec->dev, "Unsupported sample rate %d\n", rate); + dev_err(component->dev, "Unsupported sample rate %d\n", rate); return -EINVAL; } /* DAC and ADC share bit and frame clock */ - ret = snd_soc_update_bits(codec, R_DACSR, RM_DACSR_DBR, br); + ret = snd_soc_component_update_bits(component, R_DACSR, RM_DACSR_DBR, br); if (ret < 0) { - dev_err(codec->dev, "Failed to update register (%d)\n", ret); + dev_err(component->dev, "Failed to update register (%d)\n", ret); return ret; } - ret = snd_soc_update_bits(codec, R_DACSR, RM_DACSR_DBM, bm); + ret = snd_soc_component_update_bits(component, R_DACSR, RM_DACSR_DBM, bm); if (ret < 0) { - dev_err(codec->dev, "Failed to update register (%d)\n", ret); + dev_err(component->dev, "Failed to update register (%d)\n", ret); return ret; } - ret = snd_soc_update_bits(codec, R_ADCSR, RM_DACSR_DBR, br); + ret = snd_soc_component_update_bits(component, R_ADCSR, RM_DACSR_DBR, br); if (ret < 0) { - dev_err(codec->dev, "Failed to update register (%d)\n", ret); + dev_err(component->dev, "Failed to update register (%d)\n", ret); return ret; } - ret = snd_soc_update_bits(codec, R_ADCSR, RM_DACSR_DBM, bm); + ret = snd_soc_component_update_bits(component, R_ADCSR, RM_DACSR_DBM, bm); if (ret < 0) { - dev_err(codec->dev, "Failed to update register (%d)\n", ret); + dev_err(component->dev, "Failed to update register (%d)\n", ret); return ret; } @@ -1025,7 +1025,7 @@ static const struct pll_ctl *get_pll_ctl(int input_freq) return pll_ctl; } -static int set_pll_ctl_from_input_freq(struct snd_soc_codec *codec, +static int set_pll_ctl_from_input_freq(struct snd_soc_component *component, const int input_freq) { int ret; @@ -1035,18 +1035,18 @@ static int set_pll_ctl_from_input_freq(struct snd_soc_codec *codec, pll_ctl = get_pll_ctl(input_freq); if (!pll_ctl) { ret = -EINVAL; - dev_err(codec->dev, "No PLL input entry for %d (%d)\n", + dev_err(component->dev, "No PLL input entry for %d (%d)\n", input_freq, ret); return ret; } for (i = 0; i < PLL_REG_SETTINGS_COUNT; ++i) { - ret = snd_soc_update_bits(codec, + ret = snd_soc_component_update_bits(component, pll_ctl->settings[i].addr, pll_ctl->settings[i].mask, pll_ctl->settings[i].val); if (ret < 0) { - dev_err(codec->dev, "Failed to set pll ctl (%d)\n", + dev_err(component->dev, "Failed to set pll ctl (%d)\n", ret); return ret; } @@ -1059,33 +1059,33 @@ static int tscs42xx_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params, struct snd_soc_dai *codec_dai) { - struct snd_soc_codec *codec = codec_dai->codec; + struct snd_soc_component *component = codec_dai->component; int ret; - ret = setup_sample_format(codec, params_format(params)); + ret = setup_sample_format(component, params_format(params)); if (ret < 0) { - dev_err(codec->dev, "Failed to setup sample format (%d)\n", + dev_err(component->dev, "Failed to setup sample format (%d)\n", ret); return ret; } - ret = setup_sample_rate(codec, params_rate(params)); + ret = setup_sample_rate(component, params_rate(params)); if (ret < 0) { - dev_err(codec->dev, "Failed to setup sample rate (%d)\n", ret); + dev_err(component->dev, "Failed to setup sample rate (%d)\n", ret); return ret; } return 0; } -static inline int dac_mute(struct snd_soc_codec *codec) +static inline int dac_mute(struct snd_soc_component *component) { int ret; - ret = snd_soc_update_bits(codec, R_CNVRTR1, RM_CNVRTR1_DACMU, + ret = snd_soc_component_update_bits(component, R_CNVRTR1, RM_CNVRTR1_DACMU, RV_CNVRTR1_DACMU_ENABLE); if (ret < 0) { - dev_err(codec->dev, "Failed to mute DAC (%d)\n", + dev_err(component->dev, "Failed to mute DAC (%d)\n", ret); return ret; } @@ -1093,14 +1093,14 @@ static inline int dac_mute(struct snd_soc_codec *codec) return 0; } -static inline int dac_unmute(struct snd_soc_codec *codec) +static inline int dac_unmute(struct snd_soc_component *component) { int ret; - ret = snd_soc_update_bits(codec, R_CNVRTR1, RM_CNVRTR1_DACMU, + ret = snd_soc_component_update_bits(component, R_CNVRTR1, RM_CNVRTR1_DACMU, RV_CNVRTR1_DACMU_DISABLE); if (ret < 0) { - dev_err(codec->dev, "Failed to unmute DAC (%d)\n", + dev_err(component->dev, "Failed to unmute DAC (%d)\n", ret); return ret; } @@ -1108,14 +1108,14 @@ static inline int dac_unmute(struct snd_soc_codec *codec) return 0; } -static inline int adc_mute(struct snd_soc_codec *codec) +static inline int adc_mute(struct snd_soc_component *component) { int ret; - ret = snd_soc_update_bits(codec, R_CNVRTR0, RM_CNVRTR0_ADCMU, + ret = snd_soc_component_update_bits(component, R_CNVRTR0, RM_CNVRTR0_ADCMU, RV_CNVRTR0_ADCMU_ENABLE); if (ret < 0) { - dev_err(codec->dev, "Failed to mute ADC (%d)\n", + dev_err(component->dev, "Failed to mute ADC (%d)\n", ret); return ret; } @@ -1123,14 +1123,14 @@ static inline int adc_mute(struct snd_soc_codec *codec) return 0; } -static inline int adc_unmute(struct snd_soc_codec *codec) +static inline int adc_unmute(struct snd_soc_component *component) { int ret; - ret = snd_soc_update_bits(codec, R_CNVRTR0, RM_CNVRTR0_ADCMU, + ret = snd_soc_component_update_bits(component, R_CNVRTR0, RM_CNVRTR0_ADCMU, RV_CNVRTR0_ADCMU_DISABLE); if (ret < 0) { - dev_err(codec->dev, "Failed to unmute ADC (%d)\n", + dev_err(component->dev, "Failed to unmute ADC (%d)\n", ret); return ret; } @@ -1140,19 +1140,19 @@ static inline int adc_unmute(struct snd_soc_codec *codec) static int tscs42xx_mute_stream(struct snd_soc_dai *dai, int mute, int stream) { - struct snd_soc_codec *codec = dai->codec; + struct snd_soc_component *component = dai->component; int ret; if (mute) if (stream == SNDRV_PCM_STREAM_PLAYBACK) - ret = dac_mute(codec); + ret = dac_mute(component); else - ret = adc_mute(codec); + ret = adc_mute(component); else if (stream == SNDRV_PCM_STREAM_PLAYBACK) - ret = dac_unmute(codec); + ret = dac_unmute(component); else - ret = adc_unmute(codec); + ret = adc_unmute(component); return ret; } @@ -1160,23 +1160,23 @@ static int tscs42xx_mute_stream(struct snd_soc_dai *dai, int mute, int stream) static int tscs42xx_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) { - struct snd_soc_codec *codec = codec_dai->codec; + struct snd_soc_component *component = codec_dai->component; int ret; /* Slave mode not supported since it needs always-on frame clock */ switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { case SND_SOC_DAIFMT_CBM_CFM: - ret = snd_soc_update_bits(codec, R_AIC1, RM_AIC1_MS, + ret = snd_soc_component_update_bits(component, R_AIC1, RM_AIC1_MS, RV_AIC1_MS_MASTER); if (ret < 0) { - dev_err(codec->dev, + dev_err(component->dev, "Failed to set codec DAI master (%d)\n", ret); return ret; } break; default: ret = -EINVAL; - dev_err(codec->dev, "Unsupported format (%d)\n", ret); + dev_err(component->dev, "Unsupported format (%d)\n", ret); return ret; } @@ -1186,8 +1186,8 @@ static int tscs42xx_set_dai_fmt(struct snd_soc_dai *codec_dai, static int tscs42xx_set_dai_bclk_ratio(struct snd_soc_dai *codec_dai, unsigned int ratio) { - struct snd_soc_codec *codec = codec_dai->codec; - struct tscs42xx *tscs42xx = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = codec_dai->component; + struct tscs42xx *tscs42xx = snd_soc_component_get_drvdata(component); unsigned int value; int ret = 0; @@ -1202,18 +1202,18 @@ static int tscs42xx_set_dai_bclk_ratio(struct snd_soc_dai *codec_dai, value = RV_DACSR_DBCM_64; break; default: - dev_err(codec->dev, "Unsupported bclk ratio (%d)\n", ret); + dev_err(component->dev, "Unsupported bclk ratio (%d)\n", ret); return -EINVAL; } - ret = snd_soc_update_bits(codec, R_DACSR, RM_DACSR_DBCM, value); + ret = snd_soc_component_update_bits(component, R_DACSR, RM_DACSR_DBCM, value); if (ret < 0) { - dev_err(codec->dev, "Failed to set DAC BCLK ratio (%d)\n", ret); + dev_err(component->dev, "Failed to set DAC BCLK ratio (%d)\n", ret); return ret; } - ret = snd_soc_update_bits(codec, R_ADCSR, RM_ADCSR_ABCM, value); + ret = snd_soc_component_update_bits(component, R_ADCSR, RM_ADCSR_ABCM, value); if (ret < 0) { - dev_err(codec->dev, "Failed to set ADC BCLK ratio (%d)\n", ret); + dev_err(component->dev, "Failed to set ADC BCLK ratio (%d)\n", ret); return ret; } @@ -1229,40 +1229,40 @@ static int tscs42xx_set_dai_bclk_ratio(struct snd_soc_dai *codec_dai, static int tscs42xx_set_dai_sysclk(struct snd_soc_dai *codec_dai, int clk_id, unsigned int freq, int dir) { - struct snd_soc_codec *codec = codec_dai->codec; + struct snd_soc_component *component = codec_dai->component; int ret; switch (clk_id) { case TSCS42XX_PLL_SRC_XTAL: case TSCS42XX_PLL_SRC_MCLK1: - ret = snd_soc_write(codec, R_PLLREFSEL, + ret = snd_soc_component_write(component, R_PLLREFSEL, RV_PLLREFSEL_PLL1_REF_SEL_XTAL_MCLK1 | RV_PLLREFSEL_PLL2_REF_SEL_XTAL_MCLK1); if (ret < 0) { - dev_err(codec->dev, + dev_err(component->dev, "Failed to set pll reference input (%d)\n", ret); return ret; } break; case TSCS42XX_PLL_SRC_MCLK2: - ret = snd_soc_write(codec, R_PLLREFSEL, + ret = snd_soc_component_write(component, R_PLLREFSEL, RV_PLLREFSEL_PLL1_REF_SEL_MCLK2 | RV_PLLREFSEL_PLL2_REF_SEL_MCLK2); if (ret < 0) { - dev_err(codec->dev, + dev_err(component->dev, "Failed to set PLL reference (%d)\n", ret); return ret; } break; default: - dev_err(codec->dev, "pll src is unsupported\n"); + dev_err(component->dev, "pll src is unsupported\n"); return -EINVAL; } - ret = set_pll_ctl_from_input_freq(codec, freq); + ret = set_pll_ctl_from_input_freq(component, freq); if (ret < 0) { - dev_err(codec->dev, + dev_err(component->dev, "Failed to setup PLL input freq (%d)\n", ret); return ret; } @@ -1304,15 +1304,17 @@ static int part_is_valid(struct tscs42xx *tscs42xx) }; } -static struct snd_soc_codec_driver soc_codec_dev_tscs42xx = { - .component_driver = { - .dapm_widgets = tscs42xx_dapm_widgets, - .num_dapm_widgets = ARRAY_SIZE(tscs42xx_dapm_widgets), - .dapm_routes = tscs42xx_intercon, - .num_dapm_routes = ARRAY_SIZE(tscs42xx_intercon), - .controls = tscs42xx_snd_controls, - .num_controls = ARRAY_SIZE(tscs42xx_snd_controls), - }, +static struct snd_soc_component_driver soc_codec_dev_tscs42xx = { + .dapm_widgets = tscs42xx_dapm_widgets, + .num_dapm_widgets = ARRAY_SIZE(tscs42xx_dapm_widgets), + .dapm_routes = tscs42xx_intercon, + .num_dapm_routes = ARRAY_SIZE(tscs42xx_intercon), + .controls = tscs42xx_snd_controls, + .num_controls = ARRAY_SIZE(tscs42xx_snd_controls), + .idle_bias_on = 1, + .pmdown_time = 1, + .endianness = 1, + .non_legacy_dai_naming = 1, }; static inline void init_coeff_ram_cache(struct tscs42xx *tscs42xx) @@ -1407,7 +1409,7 @@ static int tscs42xx_i2c_probe(struct i2c_client *i2c, mutex_init(&tscs42xx->coeff_ram_lock); mutex_init(&tscs42xx->pll_lock); - ret = snd_soc_register_codec(tscs42xx->dev, &soc_codec_dev_tscs42xx, + ret = devm_snd_soc_register_component(tscs42xx->dev, &soc_codec_dev_tscs42xx, &tscs42xx_dai, 1); if (ret) { dev_err(tscs42xx->dev, "Failed to register codec (%d)\n", ret); @@ -1417,13 +1419,6 @@ static int tscs42xx_i2c_probe(struct i2c_client *i2c, return 0; } -static int tscs42xx_i2c_remove(struct i2c_client *client) -{ - snd_soc_unregister_codec(&client->dev); - - return 0; -} - static const struct i2c_device_id tscs42xx_i2c_id[] = { { "tscs42A1", 0 }, { "tscs42A2", 0 }, @@ -1445,7 +1440,6 @@ static int tscs42xx_i2c_remove(struct i2c_client *client) .of_match_table = tscs42xx_of_match, }, .probe = tscs42xx_i2c_probe, - .remove = tscs42xx_i2c_remove, .id_table = tscs42xx_i2c_id, };