From patchwork Fri Jan 12 01:52:16 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 10159487 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 7D7956029B for ; Fri, 12 Jan 2018 02:48:36 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 66E872893F for ; Fri, 12 Jan 2018 02:48:36 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5B5D328975; Fri, 12 Jan 2018 02:48:36 +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 07D5B2893F for ; Fri, 12 Jan 2018 02:48:35 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id 6DD2F2683C7; Fri, 12 Jan 2018 03:38:02 +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 7F1422683C2; Fri, 12 Jan 2018 03:38:01 +0100 (CET) Received: from relmlie1.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by alsa0.perex.cz (Postfix) with ESMTP id 054B7267DC1 for ; Fri, 12 Jan 2018 02:52:20 +0100 (CET) Received: from unknown (HELO relmlir1.idc.renesas.com) ([10.200.68.151]) by relmlie1.idc.renesas.com with ESMTP; 12 Jan 2018 10:52:19 +0900 Received: from relmlii2.idc.renesas.com (relmlii2.idc.renesas.com [10.200.68.66]) by relmlir1.idc.renesas.com (Postfix) with ESMTP id 51FD06D643; Fri, 12 Jan 2018 10:52:19 +0900 (JST) X-IronPort-AV: E=Sophos;i="5.46,346,1511794800"; d="scan'208";a="269312639" Received: from mail-sg2apc01lp0244.outbound.protection.outlook.com (HELO APC01-SG2-obe.outbound.protection.outlook.com) ([65.55.88.244]) by relmlii2.idc.renesas.com with ESMTP/TLS/AES256-SHA256; 12 Jan 2018 10:52:18 +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=h7kkOH5VR29O4mbJz5R2IbKbWLBvc4jDRH83y+8mTUw=; b=NU39KOEgnrhb79hwiX5XUPxAkZvhZg7jbl6KMjf7Hq1gw1mjYpNHS6fcwczvUt7vItNRPv1zjrDoXHucigdPcoWo5FbRFgGsYvAIyvhtNuMojTqimN95gVCJzRKsEBshWPG/ZAk3u90GbrX5wXsNirSlfiDcWqT6cV5S6j27v5E= Received: from morimoto-PC.renesas.com (211.11.155.138) by KL1PR0601MB1877.apcprd06.prod.outlook.com (2603:1096:802:7::22) 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:52:16 +0000 Message-ID: <8760876e0j.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:52:16 +0000 X-Originating-IP: [211.11.155.138] X-ClientProxiedBy: TYXPR01CA0023.jpnprd01.prod.outlook.com (2603:1096:401::33) To KL1PR0601MB1877.apcprd06.prod.outlook.com (2603:1096:802:7::22) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 625dbcaf-32a1-4cab-e2eb-08d5595f1c07 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020074)(4652020)(5600026)(4604075)(48565401081)(2017052603307)(7153060)(7193020); SRVR:KL1PR0601MB1877; X-Microsoft-Exchange-Diagnostics: 1; KL1PR0601MB1877; 3:psY1yyKnnyedDXzrWJaccKrJ8+IbXAIso84/xNODJdXXkJubPWqchZnUBEdx7ZYP3YkD8ItBJ9rdT6IEV7DGNB9VuPBmJyPTDOrRGuoVVvctQr9D82JDBLUTmGdBqviOqqK9A5LeHN2o3qjJFYlx8Iyq/AU98fJOmfwHJOTkj9g0zdqmFXEZHOD4AZxLnzCGhsQMygLIcrj0jIdR9UPfCgmtpdlIewdRnLNu5/yjbCL7HvowbH7ERxYeTOfXfDGP; 25:SDv/7Yq6lGQ1c77d598WCMUHhTokwi1Hu5zIYNe4Hg+P52eET3uG/X9UPjb07fFMCdn3p5mZBa2dG04fsHNnSQNxOIGQGgwY3JEEM/HbzS/d/qD1YqywnsRNhtJzgZDw4BgrP1IVjjOXYqZC2J7vYvdHjmODVt1l7ghaYkExsgwy5DDfrVeinyBDOHJlD4EAijWJsDZSb0hjTF8qJLzQ8c2Uv2jxZfslhEm/9UMJUZ/3ljev0cofucd9U/s04S0hcdHk+otct5HstONC67cz5dCWSGsBNfqKI7xLtA9XLEU5USIg3vho83J83vJsGwIq4MbR8ZrKCubFYC6aTeK9qA==; 31:EHIgK/QOss4gZpKfRhbWjbx2lQO2Ui99JRgJR7QRhVwMRkS7lg6JGM+KYJEMmDtegt3nZNE6ElbWrwc8GWj2VJutYES6Lv4vsHOO+zoZrSqcHax+uB2tahJ1GKHAwhnCeF+KFFsWTCDHkNP7e3srNx09P4RE/xZVvvTbD9KeMJ0+6SBCycsQXlD/2zvFTcmoYjVG2keDaxGpU4P4QqOkk1ap6gib+OaRrcDXe3wC3VY= X-MS-TrafficTypeDiagnostic: KL1PR0601MB1877: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=kuninori.morimoto.gx@renesas.com; X-Microsoft-Exchange-Diagnostics: 1; KL1PR0601MB1877; 20:urr8IBWeaCja1yeHNs9cCaBFxHAZ+w+R/7qY8sg1k72zM3WwIIkkv7ucz5+bA7VKeRZvuZdsG+IC+XCG56Yc8xRhZTVqrlpwZL7s34DabcoNfT4TRqK9YvJB7wSWSYM1X66N75NKdYwqcfFTpyW+R3troDOd6Z2HvJH2x6L6vDehZ6TFMneyr9wQDDy8+hR84WUFjApDwVkmd6RFm6uV/iUIioW/AooCKVcRe0UGmEBLqxfJ4+V0go5OHMSDPLsAJI+b0fBnNNSsqlW+erVtou0eZTRMH1uLxSaDNxGqU+LThL3c0xgzZ6car6Vo4bDrjs58NbOJKGtw2ddTmhoSZrCdna0K27yQaeDsFj+3q38r7ks3N56zYpuCLpUzQ4Ar4RjZNV7zWQVP5vqKcn37pSzscYd9CIqiq39/4KRje0U2sDmbDOAihXbyoKFzKi6PKMfvVlKmb1UmvY+1qHJyzfGnbLEgxWQhs7n4Eme8w7gsobi2KykakJ79/Ne27XA+; 4:/XUKNB1DlzRrY1hKfEEU0rrxm1KkkDEmKznTiVk63uEYUEO0dsmWsHqABUqr2GLlwZgR2Vu3FC1wjZsTs9I9ycT0sSgegRKGM6npyxEfFdCISrhET0SvfzhTyuceAknaN0ZuApnwzpd8w0O1sSPmEz8BGtLAhoKoVFt/G0ET04CT2ibOBvgGHwSNMz9bslYyC1XSwn4Pjp5o/B4FeU/Dgo8RejoT7o0Tw6V63IANGe7qT2eo/eRas5NfK+dG54fZ2Lnb8MYaLOIMoEAiVgDywax10EYHojEoLdQT3R868nRFCIIOIS6UKUKGnspneuDq 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)(10201501046)(3231023)(944501138)(93006095)(93001095)(3002001)(6055026)(6041268)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123564045)(6072148)(201708071742011); SRVR:KL1PR0601MB1877; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:KL1PR0601MB1877; X-Forefront-PRVS: 0550778858 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(396003)(376002)(39860400002)(346002)(39380400002)(366004)(189003)(199004)(8936002)(36756003)(66066001)(575784001)(2950100002)(8676002)(69596002)(47776003)(25786009)(81166006)(478600001)(68736007)(6916009)(53936002)(106356001)(4326008)(81156014)(53416004)(5660300001)(105586002)(7696005)(6116002)(52116002)(316002)(305945005)(83506002)(16526018)(86362001)(2906002)(16586007)(6486002)(59450400001)(386003)(97736004)(23726003)(50466002)(58126008)(76176011)(3846002)(54906003)(7736002)(21314002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:KL1PR0601MB1877; H:morimoto-PC.renesas.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; KL1PR0601MB1877; 23:x4hqKe68P4gjdSVe47ZeHj99p7znlvzDfzw7Ojd?= =?us-ascii?Q?srRXjXfZxCsxWd5ws9vA528JeCquOS2hfKIVSwqpfXHmZ6jUz//Gx8miVrCC?= =?us-ascii?Q?NwrNCD+PYKE0cbu+T51B+g0J6gDsfk6/7jdLmxN1rQiHVPUBvV7YDG+JULEY?= =?us-ascii?Q?lqZL2yHxllOkkNLp933R65/3HVzhDYaTIQbXR/qBqiikhof9NcAgSxUp0jd8?= =?us-ascii?Q?nMSwQaceVB1Wn8RYQyg/+QrxPT8wZ2uLr3+ePLX40Y3JC1/So9e/9Nycgdxf?= =?us-ascii?Q?X6o4Pavfs8LwkucpuHiwL5Iw6DI8luwaaJZXVnj6mObdIFt1Jjz5YiZuz8jS?= =?us-ascii?Q?K+fAPP9GqnXri/osMBTdKmOIfDPfvsVJV1dS5CbuMxYwAUUnsXx6A3eUdOCI?= =?us-ascii?Q?c+dZ1TtDJr+ik7Y7isD4240kxKTH6f8CtS0nET3j/qPehOiORIatTVJHEjUi?= =?us-ascii?Q?1I6+JHo/CdmgyqqMi92529Vt5VlMN4i5/WMDez4Zlfa6kdCm9zNRebDlhJQG?= =?us-ascii?Q?UTPKaaksIEY3oHYFeIod+W7I04jWFEhjOGwQln7SEH4SABWinPi2OASYtuhr?= =?us-ascii?Q?Nqgn7Aee7tLc8yqHy18Db3LUBdBxJlpBsKQmJBHT0qK5Q/7i8248wo/1rH5Q?= =?us-ascii?Q?o6zPpxvFHQxN76e3viu8tWqo2skOvsmeTqLKMo+U4jMRrhe7TBq5ZFr10b+o?= =?us-ascii?Q?/CYaJQyLZFziV96oYCceOZYCoceq/br3nZsiIso9uaApo9kP8/IRzn0KL4Hk?= =?us-ascii?Q?kaM1tc58Mk31hYsKaD+U7jF03Ving0kGtXJ9VFLzq17LUBi4Iamq3DnRgTYt?= =?us-ascii?Q?JFkq1eBQypHz3nJmwNoezmFC/B318OHE1gfbsgXvgCPvQx/dRBm9Jk5SrYIg?= =?us-ascii?Q?YaGDhYjZ6WAl3SgLsDhiGGV1EGRUH97DCjM1KmWHVFq1ygQWbwAVR2ZXIEak?= =?us-ascii?Q?KSAhPAPJWe0zx0IQiNnbp5Fd1PSPm+rUKFt5qIT9yscupBU4vuIyyCFoPz1r?= =?us-ascii?Q?dLeUglPkEjo7lEnCL1EX902GDUxsy3sQwrTRCTZrbYkuUx4ks5jyyAP2ZeBh?= =?us-ascii?Q?2lrDuNLO2tBXXoa7l6o7Q3KkGZkKT1Qj+B/TKvO+tHTcYFNJEwoVgAmm6SMn?= =?us-ascii?Q?qSUiRXJ+Jve+GWS0CUuVmaP8PVMvotLs66XcLXbH9Y9+YkQcLSPwURPmd5q8?= =?us-ascii?Q?681zMBuUohwByx9HCE/sGP7b5I1z3AieDanr3?= X-Microsoft-Exchange-Diagnostics: 1; KL1PR0601MB1877; 6:mhw2cX9TzISnPofzIqAJIOLJYVL8ZbHFUzWvGn2pr4xus1ergl0mjsXKgYfIrrs8SHDKXKPSkvr2hPVjaOFMzePOQ1Ljrf34kJk0NxXgBehGG5rGxYltsBS3FrRbTWMaEsMkUi+ApBYpdK3t3Lpf2POn9F3uxoWuP+9Dh35flrfdaQLjUHTut8b6dfD5n/mFTcvj/swoPoh/2XbrSemr+v80ClWpKX66/zbtnTV99k7Zt24guir5C6iyQRnXEcI0NhOq+Xq/aYuO1owf0Smaa+LS7NeiJV1esZFgGTuL0Oo+PX8g1QUPNx7H14nW58uEOIsjq1lBJWJIXJp0f3WZvkEF1dpLg7q6s488mZMFJlc=; 5:ZynpdU2nnn03Oq9jDFV+vb92/QrrAAL6jO2KL+DCbW7XZ+cpAVbaTvrO41dh6mar6qmP1Mc45b+9sneH8Y5g7Cl+wtThm+AjBKon9AVmY8bidUkqen+k7EJ9CFxBKyyg+pSke4B+Se30Dg3PsZ76/9S7hBtfmZxLcejs300r8iw=; 24:7HcnZ9nakCBkssbpgr+zyGejmCq4GQmYYfN1dcN9KSYd6zbDcWNIyNZrsxugiAXtvE8OFCTK+zKzuULhfaaBQ+Scg9EwXAK+Ta9K0oDk2r8=; 7:9u+lR8/84iIrp5qg25iyKCgr3OmSCAzgn9xUYRB/TV7Ctv50QlyGWdAu2vXY1LSZ5PYQvg5cFppwfqfPpid6vIWtI7ZOH2S8acdLT+rbrP1EswK6YM2RX8hJIxLO+qCao4LV5xJ54caQMQnD9R+G3tHCyqDz3YeRJxZjvcivU9MRp+tgQwJWDIxzj0gsN0ddkGrhJkJtSgzB2zrTr0kyu3jH/mysOHNI0FAtrdYKv0sZiXKJo50R+SEAIGA5a+Ya SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; KL1PR0601MB1877; 20:y3znTtWAUpB7PU3cy3yqxYOdLn55Ea+KD7vvyreqCKq/PgeRSSBf2GTkfHX4VRwWXTpRhlYe9YXjyJMXam6y5+FnDi5kCUxiNC9U3qzA5gWa74O+7L7uE9UdNDidLLCgoGghYBC2nqw7G9SmfucCPQ4F8uBV1x6pyo9LRIW3Quo= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2018 01:52:16.5149 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 625dbcaf-32a1-4cab-e2eb-08d5595f1c07 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR0601MB1877 Cc: Linux-ALSA , Simon Subject: [alsa-devel] [PATCH 154/187] ASoC: alc5623: 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/alc5623.c | 147 ++++++++++++++++++++++----------------------- 1 file changed, 72 insertions(+), 75 deletions(-) diff --git a/sound/soc/codecs/alc5623.c b/sound/soc/codecs/alc5623.c index 1db965a..354dcd2 100644 --- a/sound/soc/codecs/alc5623.c +++ b/sound/soc/codecs/alc5623.c @@ -47,28 +47,28 @@ struct alc5623_priv { unsigned int jack_det_ctrl; }; -static inline int alc5623_reset(struct snd_soc_codec *codec) +static inline int alc5623_reset(struct snd_soc_component *component) { - return snd_soc_write(codec, ALC5623_RESET, 0); + return snd_soc_component_write(component, ALC5623_RESET, 0); } static int amp_mixer_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); /* to power-on/off class-d amp generators/speaker */ /* need to write to 'index-46h' register : */ /* so write index num (here 0x46) to reg 0x6a */ /* and then 0xffff/0 to reg 0x6c */ - snd_soc_write(codec, ALC5623_HID_CTRL_INDEX, 0x46); + snd_soc_component_write(component, ALC5623_HID_CTRL_INDEX, 0x46); switch (event) { case SND_SOC_DAPM_PRE_PMU: - snd_soc_write(codec, ALC5623_HID_CTRL_DATA, 0xFFFF); + snd_soc_component_write(component, ALC5623_HID_CTRL_DATA, 0xFFFF); break; case SND_SOC_DAPM_POST_PMD: - snd_soc_write(codec, ALC5623_HID_CTRL_DATA, 0); + snd_soc_component_write(component, ALC5623_HID_CTRL_DATA, 0); break; } @@ -526,7 +526,7 @@ static int alc5623_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id, int source, unsigned int freq_in, unsigned int freq_out) { int i; - struct snd_soc_codec *codec = codec_dai->codec; + struct snd_soc_component *component = codec_dai->component; int gbl_clk = 0, pll_div = 0; u16 reg; @@ -534,12 +534,12 @@ static int alc5623_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id, return -ENODEV; /* Disable PLL power */ - snd_soc_update_bits(codec, ALC5623_PWR_MANAG_ADD2, + snd_soc_component_update_bits(component, ALC5623_PWR_MANAG_ADD2, ALC5623_PWR_ADD2_PLL, 0); /* pll is not used in slave mode */ - reg = snd_soc_read(codec, ALC5623_DAI_CONTROL); + reg = snd_soc_component_read32(component, ALC5623_DAI_CONTROL); if (reg & ALC5623_DAI_SDP_SLAVE_MODE) return 0; @@ -575,13 +575,13 @@ static int alc5623_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id, if (!pll_div) return -EINVAL; - snd_soc_write(codec, ALC5623_GLOBAL_CLK_CTRL_REG, gbl_clk); - snd_soc_write(codec, ALC5623_PLL_CTRL, pll_div); - snd_soc_update_bits(codec, ALC5623_PWR_MANAG_ADD2, + snd_soc_component_write(component, ALC5623_GLOBAL_CLK_CTRL_REG, gbl_clk); + snd_soc_component_write(component, ALC5623_PLL_CTRL, pll_div); + snd_soc_component_update_bits(component, ALC5623_PWR_MANAG_ADD2, ALC5623_PWR_ADD2_PLL, ALC5623_PWR_ADD2_PLL); gbl_clk |= ALC5623_GBL_CLK_SYS_SOUR_SEL_PLL; - snd_soc_write(codec, ALC5623_GLOBAL_CLK_CTRL_REG, gbl_clk); + snd_soc_component_write(component, ALC5623_GLOBAL_CLK_CTRL_REG, gbl_clk); return 0; } @@ -604,9 +604,9 @@ struct _coeff_div { {384*1, 0x0c6b}, }; -static int get_coeff(struct snd_soc_codec *codec, int rate) +static int get_coeff(struct snd_soc_component *component, int rate) { - struct alc5623_priv *alc5623 = snd_soc_codec_get_drvdata(codec); + struct alc5623_priv *alc5623 = snd_soc_component_get_drvdata(component); int i; for (i = 0; i < ARRAY_SIZE(coeff_div); i++) { @@ -622,8 +622,8 @@ static int get_coeff(struct snd_soc_codec *codec, int rate) static int alc5623_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 alc5623_priv *alc5623 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = codec_dai->component; + struct alc5623_priv *alc5623 = snd_soc_component_get_drvdata(component); switch (freq) { case 8192000: @@ -643,7 +643,7 @@ static int alc5623_set_dai_sysclk(struct snd_soc_dai *codec_dai, static int alc5623_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; u16 iface = 0; /* set master/slave audio interface */ @@ -695,18 +695,18 @@ static int alc5623_set_dai_fmt(struct snd_soc_dai *codec_dai, return -EINVAL; } - return snd_soc_write(codec, ALC5623_DAI_CONTROL, iface); + return snd_soc_component_write(component, ALC5623_DAI_CONTROL, iface); } static int alc5623_pcm_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 alc5623_priv *alc5623 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = dai->component; + struct alc5623_priv *alc5623 = snd_soc_component_get_drvdata(component); int coeff, rate; u16 iface; - iface = snd_soc_read(codec, ALC5623_DAI_CONTROL); + iface = snd_soc_component_read32(component, ALC5623_DAI_CONTROL); iface &= ~ALC5623_DAI_I2S_DL_MASK; /* bit size */ @@ -728,30 +728,30 @@ static int alc5623_pcm_hw_params(struct snd_pcm_substream *substream, } /* set iface & srate */ - snd_soc_write(codec, ALC5623_DAI_CONTROL, iface); + snd_soc_component_write(component, ALC5623_DAI_CONTROL, iface); rate = params_rate(params); - coeff = get_coeff(codec, rate); + coeff = get_coeff(component, rate); if (coeff < 0) return -EINVAL; coeff = coeff_div[coeff].regvalue; - dev_dbg(codec->dev, "%s: sysclk=%d,rate=%d,coeff=0x%04x\n", + dev_dbg(component->dev, "%s: sysclk=%d,rate=%d,coeff=0x%04x\n", __func__, alc5623->sysclk, rate, coeff); - snd_soc_write(codec, ALC5623_STEREO_AD_DA_CLK_CTRL, coeff); + snd_soc_component_write(component, ALC5623_STEREO_AD_DA_CLK_CTRL, coeff); return 0; } static int alc5623_mute(struct snd_soc_dai *dai, int mute) { - struct snd_soc_codec *codec = dai->codec; + struct snd_soc_component *component = dai->component; u16 hp_mute = ALC5623_MISC_M_DAC_L_INPUT | ALC5623_MISC_M_DAC_R_INPUT; - u16 mute_reg = snd_soc_read(codec, ALC5623_MISC_CTRL) & ~hp_mute; + u16 mute_reg = snd_soc_component_read32(component, ALC5623_MISC_CTRL) & ~hp_mute; if (mute) mute_reg |= hp_mute; - return snd_soc_write(codec, ALC5623_MISC_CTRL, mute_reg); + return snd_soc_component_write(component, ALC5623_MISC_CTRL, mute_reg); } #define ALC5623_ADD2_POWER_EN (ALC5623_PWR_ADD2_VREF \ @@ -769,60 +769,60 @@ static int alc5623_mute(struct snd_soc_dai *dai, int mute) (ALC5623_PWR_ADD1_SHORT_CURR_DET_EN \ | ALC5623_PWR_ADD1_HP_OUT_AMP) -static void enable_power_depop(struct snd_soc_codec *codec) +static void enable_power_depop(struct snd_soc_component *component) { - struct alc5623_priv *alc5623 = snd_soc_codec_get_drvdata(codec); + struct alc5623_priv *alc5623 = snd_soc_component_get_drvdata(component); - snd_soc_update_bits(codec, ALC5623_PWR_MANAG_ADD1, + snd_soc_component_update_bits(component, ALC5623_PWR_MANAG_ADD1, ALC5623_PWR_ADD1_SOFTGEN_EN, ALC5623_PWR_ADD1_SOFTGEN_EN); - snd_soc_write(codec, ALC5623_PWR_MANAG_ADD3, ALC5623_ADD3_POWER_EN); + snd_soc_component_write(component, ALC5623_PWR_MANAG_ADD3, ALC5623_ADD3_POWER_EN); - snd_soc_update_bits(codec, ALC5623_MISC_CTRL, + snd_soc_component_update_bits(component, ALC5623_MISC_CTRL, ALC5623_MISC_HP_DEPOP_MODE2_EN, ALC5623_MISC_HP_DEPOP_MODE2_EN); msleep(500); - snd_soc_write(codec, ALC5623_PWR_MANAG_ADD2, ALC5623_ADD2_POWER_EN); + snd_soc_component_write(component, ALC5623_PWR_MANAG_ADD2, ALC5623_ADD2_POWER_EN); /* avoid writing '1' into 5622 reserved bits */ if (alc5623->id == 0x22) - snd_soc_write(codec, ALC5623_PWR_MANAG_ADD1, + snd_soc_component_write(component, ALC5623_PWR_MANAG_ADD1, ALC5623_ADD1_POWER_EN_5622); else - snd_soc_write(codec, ALC5623_PWR_MANAG_ADD1, + snd_soc_component_write(component, ALC5623_PWR_MANAG_ADD1, ALC5623_ADD1_POWER_EN); /* disable HP Depop2 */ - snd_soc_update_bits(codec, ALC5623_MISC_CTRL, + snd_soc_component_update_bits(component, ALC5623_MISC_CTRL, ALC5623_MISC_HP_DEPOP_MODE2_EN, 0); } -static int alc5623_set_bias_level(struct snd_soc_codec *codec, +static int alc5623_set_bias_level(struct snd_soc_component *component, enum snd_soc_bias_level level) { switch (level) { case SND_SOC_BIAS_ON: - enable_power_depop(codec); + enable_power_depop(component); break; case SND_SOC_BIAS_PREPARE: break; case SND_SOC_BIAS_STANDBY: /* everything off except vref/vmid, */ - snd_soc_write(codec, ALC5623_PWR_MANAG_ADD2, + snd_soc_component_write(component, ALC5623_PWR_MANAG_ADD2, ALC5623_PWR_ADD2_VREF); - snd_soc_write(codec, ALC5623_PWR_MANAG_ADD3, + snd_soc_component_write(component, ALC5623_PWR_MANAG_ADD3, ALC5623_PWR_ADD3_MAIN_BIAS); break; case SND_SOC_BIAS_OFF: /* everything off, dac mute, inactive */ - snd_soc_write(codec, ALC5623_PWR_MANAG_ADD2, 0); - snd_soc_write(codec, ALC5623_PWR_MANAG_ADD3, 0); - snd_soc_write(codec, ALC5623_PWR_MANAG_ADD1, 0); + snd_soc_component_write(component, ALC5623_PWR_MANAG_ADD2, 0); + snd_soc_component_write(component, ALC5623_PWR_MANAG_ADD3, 0); + snd_soc_component_write(component, ALC5623_PWR_MANAG_ADD1, 0); break; } return 0; @@ -862,25 +862,25 @@ static int alc5623_set_bias_level(struct snd_soc_codec *codec, .ops = &alc5623_dai_ops, }; -static int alc5623_suspend(struct snd_soc_codec *codec) +static int alc5623_suspend(struct snd_soc_component *component) { - struct alc5623_priv *alc5623 = snd_soc_codec_get_drvdata(codec); + struct alc5623_priv *alc5623 = snd_soc_component_get_drvdata(component); regcache_cache_only(alc5623->regmap, true); return 0; } -static int alc5623_resume(struct snd_soc_codec *codec) +static int alc5623_resume(struct snd_soc_component *component) { - struct alc5623_priv *alc5623 = snd_soc_codec_get_drvdata(codec); + struct alc5623_priv *alc5623 = snd_soc_component_get_drvdata(component); int ret; /* Sync reg_cache with the hardware */ regcache_cache_only(alc5623->regmap, false); ret = regcache_sync(alc5623->regmap); if (ret != 0) { - dev_err(codec->dev, "Failed to sync register cache: %d\n", + dev_err(component->dev, "Failed to sync register cache: %d\n", ret); regcache_cache_only(alc5623->regmap, true); return ret; @@ -889,41 +889,41 @@ static int alc5623_resume(struct snd_soc_codec *codec) return 0; } -static int alc5623_probe(struct snd_soc_codec *codec) +static int alc5623_probe(struct snd_soc_component *component) { - struct alc5623_priv *alc5623 = snd_soc_codec_get_drvdata(codec); - struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec); + struct alc5623_priv *alc5623 = snd_soc_component_get_drvdata(component); + struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component); - alc5623_reset(codec); + alc5623_reset(component); if (alc5623->add_ctrl) { - snd_soc_write(codec, ALC5623_ADD_CTRL_REG, + snd_soc_component_write(component, ALC5623_ADD_CTRL_REG, alc5623->add_ctrl); } if (alc5623->jack_det_ctrl) { - snd_soc_write(codec, ALC5623_JACK_DET_CTRL, + snd_soc_component_write(component, ALC5623_JACK_DET_CTRL, alc5623->jack_det_ctrl); } switch (alc5623->id) { case 0x21: - snd_soc_add_codec_controls(codec, alc5621_vol_snd_controls, + snd_soc_add_component_controls(component, alc5621_vol_snd_controls, ARRAY_SIZE(alc5621_vol_snd_controls)); break; case 0x22: - snd_soc_add_codec_controls(codec, alc5622_vol_snd_controls, + snd_soc_add_component_controls(component, alc5622_vol_snd_controls, ARRAY_SIZE(alc5622_vol_snd_controls)); break; case 0x23: - snd_soc_add_codec_controls(codec, alc5623_vol_snd_controls, + snd_soc_add_component_controls(component, alc5623_vol_snd_controls, ARRAY_SIZE(alc5623_vol_snd_controls)); break; default: return -EINVAL; } - snd_soc_add_codec_controls(codec, alc5623_snd_controls, + snd_soc_add_component_controls(component, alc5623_snd_controls, ARRAY_SIZE(alc5623_snd_controls)); snd_soc_dapm_new_controls(dapm, alc5623_dapm_widgets, @@ -951,12 +951,16 @@ static int alc5623_probe(struct snd_soc_codec *codec) return 0; } -static const struct snd_soc_codec_driver soc_codec_device_alc5623 = { - .probe = alc5623_probe, - .suspend = alc5623_suspend, - .resume = alc5623_resume, - .set_bias_level = alc5623_set_bias_level, - .suspend_bias_off = true, +static const struct snd_soc_component_driver soc_component_device_alc5623 = { + .probe = alc5623_probe, + .suspend = alc5623_suspend, + .resume = alc5623_resume, + .set_bias_level = alc5623_set_bias_level, + .suspend_bias_off = 1, + .idle_bias_on = 1, + .pmdown_time = 1, + .endianness = 1, + .non_legacy_dai_naming = 1, }; static const struct regmap_config alc5623_regmap = { @@ -1052,20 +1056,14 @@ static int alc5623_i2c_probe(struct i2c_client *client, i2c_set_clientdata(client, alc5623); - ret = snd_soc_register_codec(&client->dev, - &soc_codec_device_alc5623, &alc5623_dai, 1); + ret = devm_snd_soc_register_component(&client->dev, + &soc_component_device_alc5623, &alc5623_dai, 1); if (ret != 0) dev_err(&client->dev, "Failed to register codec: %d\n", ret); return ret; } -static int alc5623_i2c_remove(struct i2c_client *client) -{ - snd_soc_unregister_codec(&client->dev); - return 0; -} - static const struct i2c_device_id alc5623_i2c_table[] = { {"alc5621", 0x21}, {"alc5622", 0x22}, @@ -1087,7 +1085,6 @@ static int alc5623_i2c_remove(struct i2c_client *client) .of_match_table = of_match_ptr(alc5623_of_match), }, .probe = alc5623_i2c_probe, - .remove = alc5623_i2c_remove, .id_table = alc5623_i2c_table, };