From patchwork Mon Jan 29 03:55:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 10189023 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 7FDA060388 for ; Mon, 29 Jan 2018 04:29:11 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6BFF628783 for ; Mon, 29 Jan 2018 04:29:11 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 60B8228786; Mon, 29 Jan 2018 04:29:11 +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 2191028783 for ; Mon, 29 Jan 2018 04:29:10 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id 407032679A8; Mon, 29 Jan 2018 05:24:31 +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 D939B267995; Mon, 29 Jan 2018 05:24:27 +0100 (CET) Received: from relmlie2.idc.renesas.com (relmlor3.renesas.com [210.160.252.173]) by alsa0.perex.cz (Postfix) with ESMTP id F09A6267773 for ; Mon, 29 Jan 2018 04:56:00 +0100 (CET) Received: from unknown (HELO relmlir2.idc.renesas.com) ([10.200.68.152]) by relmlie2.idc.renesas.com with ESMTP; 29 Jan 2018 12:55:59 +0900 Received: from relmlii1.idc.renesas.com (relmlii1.idc.renesas.com [10.200.68.65]) by relmlir2.idc.renesas.com (Postfix) with ESMTP id 2B8AE771E0; Mon, 29 Jan 2018 12:55:59 +0900 (JST) X-IronPort-AV: E=Sophos;i="5.46,429,1511794800"; d="scan'208";a="269592709" Received: from mail-hk2apc01lp0209.outbound.protection.outlook.com (HELO APC01-HK2-obe.outbound.protection.outlook.com) ([65.55.88.209]) by relmlii1.idc.renesas.com with ESMTP/TLS/AES256-SHA256; 29 Jan 2018 12:55:58 +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=3jgCabWKfgAxDh2Ib1vdxKhAZVnDP1SDTfMZkmV3c4Y=; b=kcTTvZKP+vzjJRLXkrSVhiGlgHSanaf8hAmtIIPp0gLPWzuRqM4cpxjqKHo1ZgGUB1V794haS/cfqrG3LWp0ANqO5HNHxC0OF+bojj9soeefG9K4tTutJ8bSNqRxZRLpjn5CNDC0CQbVSMj0oJO8DFNIHXgzaEDTBI93PABYt3I= 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 SG2PR0601MB1887.apcprd06.prod.outlook.com (2603:1096:3:9::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.444.14; Mon, 29 Jan 2018 03:55:56 +0000 Message-ID: <87fu6p1frg.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: <87inbl5q6q.wl%kuninori.morimoto.gx@renesas.com> References: <87607l8k9i.wl%kuninori.morimoto.gx@renesas.com> <87inbl5q6q.wl%kuninori.morimoto.gx@renesas.com> MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Date: Mon, 29 Jan 2018 03:55:56 +0000 X-Originating-IP: [211.11.155.138] X-ClientProxiedBy: OSBPR01CA0003.jpnprd01.prod.outlook.com (2603:1096:603::15) To SG2PR0601MB1887.apcprd06.prod.outlook.com (2603:1096:3:9::20) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 934551cd-3afd-4892-33dc-08d566cc33b2 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:SG2PR0601MB1887; X-Microsoft-Exchange-Diagnostics: 1; SG2PR0601MB1887; 3:WzPOcCJEz7oaEiyy7QZ3/K0u9E6II5W5sn1DcQwjNsxxkfa4t2U4V3C/FSkBhX6Qa0YB+NIqswIjyJS98FSc00QLE7uhKam0vpx2lxouv58pHXHgRo1e5lxepUevNXC5p3UT/BrYinPRapCYRsaiol7UQSYnFDvDkRpcU/xBz6vnZx7QNhYxCOtyDdRVJW7hjqwY9f1BVe7RmSnCDeUTMF59+C2BmPBzGBmnW0lA6b+NSYpgYoE/yvcaJSU+grsA; 25:ZAZfaGEnptuLj1T+fnbDleuiQai76rJjO5OSLRAb/jsIo7hEHT4SEQv52PuMvmYA7GWmZ/fU9I0M1Vo7DXc4f9RYVXqkXpyXyXojK7eA8ImbfYuGZ1z/XEVkz3ouUsaZyycf1Vuz8RTabZwy4jcKoTPIQQrFPdkwt1N/CYqrIOH5eMTsLBbWhaAznMsZEuBUQaU8QcRLWoO/DLu4CPJlAoKD+nbtYAB2yX3Yn7FS2fwh/poY/egrKL4XzzfiwuFK9Ci+yzJGocWJFZT4fvQiavaxkXsfrMsQROzKUq7CrXRONr5Vedb6t+4rmlKaqaPDDasSv0pVv9B7RO4Psz7Tyw==; 31:3eBHumu+OES3xPiu7gJIZMToJiqnJXyX6M783109ANzxyU+82jWCCyy6y4eDuvHrQPJRlrDNZCGrzJu1wvTays7Wxz24sst6LC2tLoZegTbgQOWxZ9OhJlKov9KH2MkcSsIXGQ+4oLuoVPk6dNt7+M/lw78yHU8U6ylkREymlNJfZVf/JqgaY1pJcbaTwykIVlPSmPPtI2CcFr72HqGC4bpHuQMGY8+THTXZjropRkY= X-MS-TrafficTypeDiagnostic: SG2PR0601MB1887: X-Microsoft-Exchange-Diagnostics: 1; SG2PR0601MB1887; 20:nYPtO//jnkeJpGSpV9phhh+4C+qLXdxyAGPGiicl4vRY+rMCvvEc+nfIDsoD77/nFgZ5EAHLNdDbDT4WmMwZgSt5BfAszz85b9pLn/ZNOE5uX9CIFHml9NL9SVxGPx8e+YMqruCM1tF9SBZsGvtNQcbUNU+TgqYgNVIBELhAqU2v7XxrnUMh7grHNfJ2CUWI/3lAOXkgmuyo0iUXoEQEOCGfHK1RVQXSNJDkrQBvEyHFxOHeMf8maau8DYxCSPjnQGXn9ugIC+pmCCMbgRuDSurNINuPazVt3ZBwqTZNLKYZT9yR3RVyWGwSO3v/jKz+c5nVgbxeWzlDdHjXMjZ7reCKmFHvP5JaKk9tzJ71tAw0kHK0q29AFX7rzpzAr7gAUVLf78kVhiPhteE9AMSIjzvtLCG4EPipGrJ7RbF0preZrfFV7xYETb7lv4/H2PlNLCb81O2B56vNjuk4j/Yxsz+5wSbu4rsRZERHKqhn518vBLP6puKey4YXFl2UlCwy; 4:6xmIwbRGeOK9rduDmJGduduMV6Aohl97nwG/hWHMzI646qREtugNPmJ+9gXe2TqsYC0//e3H2i3EldOgn3W6QTUuUHh/jPVb4hDBnJVg++nlu13W0+8kF/5S1JXlNm+61ruhqwV2OMT9aSI04RnAKcexALc9VCe910Qm5UjR/Fn/jBmS7cvoRfegWHFuztz7Z1kbvJ/qR1Elbtog1MCtMFRLC16FGS8EVfrmp4l8Euo+LRBrQgZ6Sc8duFvri1/Eo5ic0tMGb3dhGl3WjNGaLlTvDE7e+lV50lmyLwjvZu5AOiEsdnWdsCNuc/0N39Jw X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(5005006)(8121501046)(3002001)(10201501046)(3231101)(944501161)(93006095)(93001095)(6055026)(6041288)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(20161123562045)(6072148)(201708071742011); SRVR:SG2PR0601MB1887; BCL:0; PCL:0; RULEID:; SRVR:SG2PR0601MB1887; X-Forefront-PRVS: 0567A15835 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(366004)(346002)(396003)(39380400002)(376002)(39860400002)(199004)(189003)(25786009)(81156014)(81166006)(478600001)(386003)(8676002)(2906002)(68736007)(59450400001)(52116002)(76176011)(6916009)(53936002)(53416004)(7696005)(2950100002)(5660300001)(186003)(4326008)(66066001)(16526019)(26005)(6486002)(47776003)(8936002)(36756003)(97736004)(58126008)(50466002)(69596002)(105586002)(305945005)(7736002)(86362001)(16586007)(106356001)(83506002)(316002)(3846002)(23726003)(6116002)(21314002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:SG2PR0601MB1887; 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; SG2PR0601MB1887; 23:akDovFdZblySrXHt2VY5C/hHRW5OsCEXBVUBe7X?= =?us-ascii?Q?seJ5QJz3YuQcqqSiwY/QggwFK02g0cDejomZAqPza2BWQ7Ye+8YsfhsjM56d?= =?us-ascii?Q?CzxUsWf85uB63mBNiF969aVQVXpEtLtCi6bb9O9a/1b723Jge048hlDGr4XG?= =?us-ascii?Q?7s9s5YmXC/BF3nb7oRQQ6CTwifvdjrprOIWDVjTAoAd94o/zzcx2k9nDhBTk?= =?us-ascii?Q?77cH7oGK5jJRAzvjI7yM/VeRlphrRa0iwvAmUzQNSEhVIcFx1ybM1aEiEaSC?= =?us-ascii?Q?Nxp70KfoebZexHZkrVZ5ojbH/2fqgq/jO8blVPHs8J85gwWRZQpo1T1YfohG?= =?us-ascii?Q?ykYu3gzl/tKAs9d3hsgJmSNYVbwGvNINeKG5l6+c/q3wYXQLUr+nC8S7Tzaz?= =?us-ascii?Q?iSpjf1doHnyz0TkQYfLE7OmTRsrdccswsZ+p1YoXr/ZFv5Gi8oQGSZlLAh/i?= =?us-ascii?Q?W44hT/iI+FyHLKDVP6kQUVcC0uuI0K65/ZC6cGLJRI0i4+VXR6fujmrDXYSR?= =?us-ascii?Q?TzYNUUWmOp58CJGb0skVGQO9hZXl9dQofnGAB+rG+45xvuEJjuMd3LPxFxRk?= =?us-ascii?Q?yIvT2L18TcDzZ2Z77VoDoJIdrFEz4WB295IK0YHaaF8F/feUVIU6VaQqERUy?= =?us-ascii?Q?DfT+4E3zqMfhJeWDWkXTuGzGzFn4+TQqCzp9eubr9rMtn498qzb5K/iJwhHR?= =?us-ascii?Q?X54adXCAOPywO9LVfbvDMeq4KYh8YCWhdP3FcdKEzX53IeDuUuRswZs7fwFC?= =?us-ascii?Q?nvlPtsRaMB4SJjGP6mat+jQpygzpy+0QQtSoI1uRoFxvBt98SGLE532zyVuL?= =?us-ascii?Q?GEKLIVC+j52AAXEbSck0VxZel7o86dv/BO8paCKI8NmsocZPpvt/ho7Qd/Xd?= =?us-ascii?Q?zKtzz/luLntuQ7gTV3GwNoLY8tE3mGiZpR4/bzt7J9wpH4nDTV2bLGT4TzGV?= =?us-ascii?Q?k4EShCt2WzE9tf7n0p+RDLzGZSwm6qCaXCvZ0YD0FhGa0yCgKbRFunnq0ciB?= =?us-ascii?Q?S7C2SpP2xC4/GwUiRkzqNxyJlBur2MSf0SOMvFPrbe8l6J32NOTnSf0dnaq2?= =?us-ascii?Q?zHsDF37OMxVvXwxGrXHUc41b0zbd0d/XNwB9QEz/rRNHsiUqRwAdVA0MjiT7?= =?us-ascii?Q?XQvNsbf/bZMM9ZlFa8tDr4w6TfoGLGRAWQHzk3JckNp0b2WF70MAJe6fm5mS?= =?us-ascii?Q?2kfmdHYNBoneplcw=3D?= X-Microsoft-Exchange-Diagnostics: 1; SG2PR0601MB1887; 6:u59f1SRM4bWKMeM4MydbBBM9WaolPh3cTQJtytY/0aM9Z8hccTLmf/xpLY1iI/aaacOIybkm/rrBnOkhhZxZh/sqebFcCfBgXZEYBj9rnoqFZRXgc5h8klrzcHv45YwGv9f+USYO0St8E0Uahz3BUZZhq7Sn84c4ZtIooytH0zvhfU+lU+m76tQTuSU7PY8URPVY1TOA5tsxC4447vIQExiSnaSm+s4pLS401cbLTUVMeMREnU1CbaTQILuJ7k0UaZNm3KCT20O1BPnsqKFdcljHlPThxir+CFbrZvYsrAED+QvY/AlMXW2dLZ9bte7VsZnojTXHIB8fspfw3Vyn2pwA2FBfJsM+U0jwZr8uyZU=; 5:ndV08V1fH65UKurQtK4lO/VzhlQku8IvVAqQLkIFw9RP4z7WI1XeskyDtHmK9audata4ndjamagDHz9AnRjhAWZ65sXMyMHSUQ2vAjfn2rtC4cpPQP/qv/feW5zbg/1KNRk4zu1F6jhpfJ3+EM+NASqg4Tffhyz+ZTBVXSSs+kE=; 24:JwW0gwVenSKl69STNLQ77CS7G9XISjGdfNeNWOTeEEoGPmY7UWvqm/GBbah+1CqXm/v0aexnZ4DRt8U/Po0p+nMVMbY+pQee4SrSmaS4pPE=; 7:MUlBUG818Jip46NwtZjD3YJrGiWZZ+xCYd68npY1zRKJTEb3Ysumd6A6kTphU5yM6hmDIN0eQeFQwPSB6h2pj9Z6rpwin8pc0RLiUWeNNnVpx2tK5DLhicasQu1rcAoWq0pUYwJtPGOk1EhwWmJLjw1s21AXwJ2utdgQ+8n2rLBleIaHKhrIgiftbfyCFg/5iPI44zz6fAg7zWhl7SYurr+vLRFPisTmc2JcHQnnJfHmniTiYrtPLvAyU0e1L9oz SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SG2PR0601MB1887; 20:RZcbr0BD6Ch/oEIyP+WdEDEOJjEUSGI/PSPJXR2ivSBrw+wNbssuqBcuwV3Ldxi/p7u7ujKqtYRyeA0D24hw2USVoJTm06vkpbpu7dQiDixeo+Nj7n5k3VXTwh92P5rNRWfL1wlggbUTWaTZrwghtDM0360ZFvM4bWtVbn5E8kM= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jan 2018 03:55:56.5721 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 934551cd-3afd-4892-33dc-08d566cc33b2 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-Transport-CrossTenantHeadersStamped: SG2PR0601MB1887 Cc: Linux-ALSA Subject: [alsa-devel] [PATCH v2 076/186] ASoC: cs35l35: 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 -> .use_pmdown_time = 1 - -> .endianness = 1 - -> .non_legacy_dai_naming = 1 Signed-off-by: Kuninori Morimoto --- sound/soc/codecs/cs35l35.c | 104 +++++++++++++++++++++------------------------ 1 file changed, 48 insertions(+), 56 deletions(-) diff --git a/sound/soc/codecs/cs35l35.c b/sound/soc/codecs/cs35l35.c index 129978d..a4a2cb1 100644 --- a/sound/soc/codecs/cs35l35.c +++ b/sound/soc/codecs/cs35l35.c @@ -194,8 +194,8 @@ static int cs35l35_wait_for_pdn(struct cs35l35_private *cs35l35) static int cs35l35_sdin_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 cs35l35_private *cs35l35 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); + struct cs35l35_private *cs35l35 = snd_soc_component_get_drvdata(component); int ret = 0; switch (event) { @@ -231,7 +231,7 @@ static int cs35l35_sdin_event(struct snd_soc_dapm_widget *w, 1 << CS35L35_AMP_DIGSFT_SHIFT); break; default: - dev_err(codec->dev, "Invalid event = 0x%x\n", event); + dev_err(component->dev, "Invalid event = 0x%x\n", event); ret = -EINVAL; } return ret; @@ -240,8 +240,8 @@ static int cs35l35_sdin_event(struct snd_soc_dapm_widget *w, static int cs35l35_main_amp_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 cs35l35_private *cs35l35 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); + struct cs35l35_private *cs35l35 = snd_soc_component_get_drvdata(component); unsigned int reg[4]; int i; @@ -301,7 +301,7 @@ static int cs35l35_main_amp_event(struct snd_soc_dapm_widget *w, break; default: - dev_err(codec->dev, "Invalid event = 0x%x\n", event); + dev_err(component->dev, "Invalid event = 0x%x\n", event); } return 0; } @@ -369,8 +369,8 @@ static int cs35l35_main_amp_event(struct snd_soc_dapm_widget *w, static int cs35l35_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) { - struct snd_soc_codec *codec = codec_dai->codec; - struct cs35l35_private *cs35l35 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = codec_dai->component; + struct cs35l35_private *cs35l35 = snd_soc_component_get_drvdata(component); switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { case SND_SOC_DAIFMT_CBM_CFM: @@ -470,8 +470,8 @@ static int cs35l35_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params, struct snd_soc_dai *dai) { - struct snd_soc_codec *codec = dai->codec; - struct cs35l35_private *cs35l35 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = dai->component; + struct cs35l35_private *cs35l35 = snd_soc_component_get_drvdata(component); struct classh_cfg *classh = &cs35l35->pdata.classh_algo; int srate = params_rate(params); int ret = 0; @@ -482,7 +482,7 @@ static int cs35l35_hw_params(struct snd_pcm_substream *substream, int clk_ctl = cs35l35_get_clk_config(cs35l35->sysclk, srate); if (clk_ctl < 0) { - dev_err(codec->dev, "Invalid CLK:Rate %d:%d\n", + dev_err(component->dev, "Invalid CLK:Rate %d:%d\n", cs35l35->sysclk, srate); return -EINVAL; } @@ -490,7 +490,7 @@ static int cs35l35_hw_params(struct snd_pcm_substream *substream, ret = regmap_update_bits(cs35l35->regmap, CS35L35_CLK_CTL2, CS35L35_CLK_CTL2_MASK, clk_ctl); if (ret != 0) { - dev_err(codec->dev, "Failed to set port config %d\n", ret); + dev_err(component->dev, "Failed to set port config %d\n", ret); return ret; } @@ -509,7 +509,7 @@ static int cs35l35_hw_params(struct snd_pcm_substream *substream, CS35L35_CH_WKFET_DEL_MASK, 0 << CS35L35_CH_WKFET_DEL_SHIFT); if (ret != 0) { - dev_err(codec->dev, "Failed to set fet config %d\n", + dev_err(component->dev, "Failed to set fet config %d\n", ret); return ret; } @@ -531,7 +531,7 @@ static int cs35l35_hw_params(struct snd_pcm_substream *substream, audin_format = CS35L35_SDIN_DEPTH_24; break; default: - dev_err(codec->dev, "Unsupported Width %d\n", + dev_err(component->dev, "Unsupported Width %d\n", params_width(params)); return -EINVAL; } @@ -554,7 +554,7 @@ static int cs35l35_hw_params(struct snd_pcm_substream *substream, * to configure the CLOCK_CTL3 register correctly */ if ((cs35l35->sclk / srate) % 4) { - dev_err(codec->dev, "Unsupported sclk/fs ratio %d:%d\n", + dev_err(component->dev, "Unsupported sclk/fs ratio %d:%d\n", cs35l35->sclk, srate); return -EINVAL; } @@ -568,7 +568,7 @@ static int cs35l35_hw_params(struct snd_pcm_substream *substream, case CS35L35_SP_SCLKS_64FS: break; default: - dev_err(codec->dev, "ratio not supported\n"); + dev_err(component->dev, "ratio not supported\n"); return -EINVAL; } } else { @@ -578,7 +578,7 @@ static int cs35l35_hw_params(struct snd_pcm_substream *substream, case CS35L35_SP_SCLKS_64FS: break; default: - dev_err(codec->dev, "ratio not supported\n"); + dev_err(component->dev, "ratio not supported\n"); return -EINVAL; } } @@ -587,7 +587,7 @@ static int cs35l35_hw_params(struct snd_pcm_substream *substream, CS35L35_SP_SCLKS_MASK, sp_sclks << CS35L35_SP_SCLKS_SHIFT); if (ret != 0) { - dev_err(codec->dev, "Failed to set fsclk %d\n", ret); + dev_err(component->dev, "Failed to set fsclk %d\n", ret); return ret; } } @@ -607,8 +607,8 @@ static int cs35l35_hw_params(struct snd_pcm_substream *substream, static int cs35l35_pcm_startup(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) { - struct snd_soc_codec *codec = dai->codec; - struct cs35l35_private *cs35l35 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = dai->component; + struct cs35l35_private *cs35l35 = snd_soc_component_get_drvdata(component); if (!substream->runtime) return 0; @@ -635,8 +635,8 @@ static int cs35l35_pcm_startup(struct snd_pcm_substream *substream, static int cs35l35_pdm_startup(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) { - struct snd_soc_codec *codec = dai->codec; - struct cs35l35_private *cs35l35 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = dai->component; + struct cs35l35_private *cs35l35 = snd_soc_component_get_drvdata(component); if (!substream->runtime) return 0; @@ -655,8 +655,8 @@ static int cs35l35_pdm_startup(struct snd_pcm_substream *substream, static int cs35l35_dai_set_sysclk(struct snd_soc_dai *dai, int clk_id, unsigned int freq, int dir) { - struct snd_soc_codec *codec = dai->codec; - struct cs35l35_private *cs35l35 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = dai->component; + struct cs35l35_private *cs35l35 = snd_soc_component_get_drvdata(component); /* Need the SCLK Frequency regardless of sysclk source for I2S */ cs35l35->sclk = freq; @@ -712,11 +712,11 @@ static int cs35l35_dai_set_sysclk(struct snd_soc_dai *dai, }, }; -static int cs35l35_codec_set_sysclk(struct snd_soc_codec *codec, +static int cs35l35_component_set_sysclk(struct snd_soc_component *component, int clk_id, int source, unsigned int freq, int dir) { - struct cs35l35_private *cs35l35 = snd_soc_codec_get_drvdata(codec); + struct cs35l35_private *cs35l35 = snd_soc_component_get_drvdata(component); int clksrc; int ret = 0; @@ -731,7 +731,7 @@ static int cs35l35_codec_set_sysclk(struct snd_soc_codec *codec, clksrc = CS35L35_CLK_SOURCE_PDM; break; default: - dev_err(codec->dev, "Invalid CLK Source\n"); + dev_err(component->dev, "Invalid CLK Source\n"); return -EINVAL; } @@ -749,7 +749,7 @@ static int cs35l35_codec_set_sysclk(struct snd_soc_codec *codec, cs35l35->sysclk = freq; break; default: - dev_err(codec->dev, "Invalid CLK Frequency Input : %d\n", freq); + dev_err(component->dev, "Invalid CLK Frequency Input : %d\n", freq); return -EINVAL; } @@ -757,7 +757,7 @@ static int cs35l35_codec_set_sysclk(struct snd_soc_codec *codec, CS35L35_CLK_SOURCE_MASK, clksrc << CS35L35_CLK_SOURCE_SHIFT); if (ret != 0) { - dev_err(codec->dev, "Failed to set sysclk %d\n", ret); + dev_err(component->dev, "Failed to set sysclk %d\n", ret); return ret; } @@ -834,9 +834,9 @@ static int cs35l35_boost_inductor(struct cs35l35_private *cs35l35, return 0; } -static int cs35l35_codec_probe(struct snd_soc_codec *codec) +static int cs35l35_component_probe(struct snd_soc_component *component) { - struct cs35l35_private *cs35l35 = snd_soc_codec_get_drvdata(codec); + struct cs35l35_private *cs35l35 = snd_soc_component_get_drvdata(component); struct classh_cfg *classh = &cs35l35->pdata.classh_algo; struct monitor_cfg *monitor_config = &cs35l35->pdata.mon_cfg; int ret; @@ -880,7 +880,7 @@ static int cs35l35_codec_probe(struct snd_soc_codec *codec) regmap_update_bits(cs35l35->regmap, CS35L35_CLASS_H_CTL, CS35L35_CH_STEREO_MASK, 1 << CS35L35_CH_STEREO_SHIFT); - ret = snd_soc_add_codec_controls(codec, cs35l35_adv_controls, + ret = snd_soc_add_component_controls(component, cs35l35_adv_controls, ARRAY_SIZE(cs35l35_adv_controls)); if (ret) return ret; @@ -1079,20 +1079,19 @@ static int cs35l35_codec_probe(struct snd_soc_codec *codec) return 0; } -static const struct snd_soc_codec_driver soc_codec_dev_cs35l35 = { - .probe = cs35l35_codec_probe, - .set_sysclk = cs35l35_codec_set_sysclk, - .component_driver = { - .dapm_widgets = cs35l35_dapm_widgets, - .num_dapm_widgets = ARRAY_SIZE(cs35l35_dapm_widgets), - - .dapm_routes = cs35l35_audio_map, - .num_dapm_routes = ARRAY_SIZE(cs35l35_audio_map), - - .controls = cs35l35_aud_controls, - .num_controls = ARRAY_SIZE(cs35l35_aud_controls), - }, - +static const struct snd_soc_component_driver soc_component_dev_cs35l35 = { + .probe = cs35l35_component_probe, + .set_sysclk = cs35l35_component_set_sysclk, + .dapm_widgets = cs35l35_dapm_widgets, + .num_dapm_widgets = ARRAY_SIZE(cs35l35_dapm_widgets), + .dapm_routes = cs35l35_audio_map, + .num_dapm_routes = ARRAY_SIZE(cs35l35_audio_map), + .controls = cs35l35_aud_controls, + .num_controls = ARRAY_SIZE(cs35l35_aud_controls), + .idle_bias_on = 1, + .use_pmdown_time = 1, + .endianness = 1, + .non_legacy_dai_naming = 1, }; static struct regmap_config cs35l35_regmap = { @@ -1617,10 +1616,10 @@ static int cs35l35_i2c_probe(struct i2c_client *i2c_client, regmap_update_bits(cs35l35->regmap, CS35L35_PROTECT_CTL, CS35L35_AMP_MUTE_MASK, 1 << CS35L35_AMP_MUTE_SHIFT); - ret = snd_soc_register_codec(dev, &soc_codec_dev_cs35l35, cs35l35_dai, - ARRAY_SIZE(cs35l35_dai)); + ret = devm_snd_soc_register_component(dev, &soc_component_dev_cs35l35, + cs35l35_dai, ARRAY_SIZE(cs35l35_dai)); if (ret < 0) { - dev_err(dev, "Failed to register codec: %d\n", ret); + dev_err(dev, "Failed to register component: %d\n", ret); goto err; } @@ -1634,12 +1633,6 @@ static int cs35l35_i2c_probe(struct i2c_client *i2c_client, return ret; } -static int cs35l35_i2c_remove(struct i2c_client *client) -{ - snd_soc_unregister_codec(&client->dev); - return 0; -} - static const struct of_device_id cs35l35_of_match[] = { {.compatible = "cirrus,cs35l35"}, {}, @@ -1660,7 +1653,6 @@ static int cs35l35_i2c_remove(struct i2c_client *client) }, .id_table = cs35l35_id, .probe = cs35l35_i2c_probe, - .remove = cs35l35_i2c_remove, }; module_i2c_driver(cs35l35_i2c_driver);