From patchwork Mon Jan 29 04:21:38 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 10189129 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 9FC536020C for ; Mon, 29 Jan 2018 04:47:17 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8B4B51FE82 for ; Mon, 29 Jan 2018 04:47:17 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7ED482876F; Mon, 29 Jan 2018 04:47:17 +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 F146A1FE82 for ; Mon, 29 Jan 2018 04:47:15 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id 3D02E267CA8; Mon, 29 Jan 2018 05:27:12 +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 37514267CA8; Mon, 29 Jan 2018 05:27:11 +0100 (CET) Received: from relmlie3.idc.renesas.com (relmlor4.renesas.com [210.160.252.174]) by alsa0.perex.cz (Postfix) with ESMTP id DD96026735F for ; Mon, 29 Jan 2018 05:21:46 +0100 (CET) Received: from unknown (HELO relmlir1.idc.renesas.com) ([10.200.68.151]) by relmlie3.idc.renesas.com with ESMTP; 29 Jan 2018 13:21:45 +0900 Received: from relmlii1.idc.renesas.com (relmlii1.idc.renesas.com [10.200.68.65]) by relmlir1.idc.renesas.com (Postfix) with ESMTP id F1D3664ABD; Mon, 29 Jan 2018 13:21:41 +0900 (JST) X-IronPort-AV: E=Sophos;i="5.46,429,1511794800"; d="scan'208";a="269595723" Received: from mail-sg2apc01lp0245.outbound.protection.outlook.com (HELO APC01-SG2-obe.outbound.protection.outlook.com) ([65.55.88.245]) by relmlii1.idc.renesas.com with ESMTP/TLS/AES256-GCM-SHA384; 29 Jan 2018 13:21:41 +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=DEpzCC+xyx5d0qIPFDProwtgrdg6jAjxor3tbZ1RCaE=; b=hLMDIGc45datDBnn1VGbcurlFA6x5jtQesMGg2SXdWPzhCCus97nbuWGpL/bwFdbWURWYkVLEZoHwSLtCPH3Xnm5JSj7a0ktRIh1yaG20nb+YVczuXyix8kYvfpuno56BMc5NbqeGks5TqyaeVx16MBg819HzURunHkM01Jt/j8= Received: from morimoto-PC.renesas.com (211.11.155.138) by PS1PR0601MB1881.apcprd06.prod.outlook.com (2603:1096:803:8::19) 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 04:21:38 +0000 Message-ID: <87h8r5xpms.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 04:21:38 +0000 X-Originating-IP: [211.11.155.138] X-ClientProxiedBy: OS2PR01CA0137.jpnprd01.prod.outlook.com (2603:1096:602::31) To PS1PR0601MB1881.apcprd06.prod.outlook.com (2603:1096:803:8::19) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: d53467db-5dfb-4982-55fc-08d566cfcad5 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:PS1PR0601MB1881; X-Microsoft-Exchange-Diagnostics: 1; PS1PR0601MB1881; 3:ZjHBcZsm/5Z/fNORd1bIHRsAct+xkUVYo6GMdfmFSp+Mdzo490MLx2YO25crlQJI5130ex3nLYdnIkvbrvdH5xz9QiVQHAtZ1n4M6LHoVK97HkpcW88A5OocnRojjEYSxRr/UYsmFKJUuHafOipVg/Nbnx3+PVEk2gle+oiAZ13N2sAKBTb7U3xRU8+WesilTxz0POFy59vyZQ5aVJMwuWaW5KWW1qDtmuon+JQuk6uR/7LCDzdg7pymdmjrMr/C; 25:x57KGJSE7vUMfN4ZXrf/UT7e8ZOQeZqas8FkQPe8YhnmQCrnYnNbhqoiWcMu00ZtDI/mKQs2NXLy42+YjKT7QmdXFSTUPMNdX4OvMUMxTVBQzUsGRbtBQpEFUDuShfBcmGy29Ujf1ZNQjCqpVn7tg2GVS1TeCuVxzOUITserz0cQZCC9+QjvYzfjFQODr/YLWrSMcloSTTFDkajaPqrcmFHY3y1ipuiPL2BTyzhTv0Djw05ITlQfBK9/I9QLyRRKKosnnWe23XNBu4K36PP5QfG+SZ48O+3FukFQe3dhFjlSCleecJbtKFBJoM0anJqeAuTnlOX+8/1To0519qYGbg==; 31:5IajYCXiCri4ZvYDiRqcBDRbb8mTPecd9g4yE9PtGwlaK7ZBD85wI7gvx9TNrxLTZ6AisEB4cFDC8DPXTdcCPYg9TUBL/Ipqt0mjDsX94vSZU7+7GBBHmus+E17zHwSDRnlQ3LMDpmqHjczE8f0cFID5AI+kNESaku69SJm7/ZtoD8ISjH4BNqZtdb3Z9Rmv+MCnZCK4TMKvsmcKhG5NphKc5W0xAc1kIDrt19tdw0c= X-MS-TrafficTypeDiagnostic: PS1PR0601MB1881: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=kuninori.morimoto.gx@renesas.com; X-Microsoft-Exchange-Diagnostics: 1; PS1PR0601MB1881; 20:vM1avNfeU9QnyTFhCMQdHcE5LJY+zm3+VnhUQnhG/wsv/KbZHDn9Bq5Pj/s44VHZqsfC17vhrhqzaTPcLOKa2nkAWcuOtYevR8UnEAx7qftSq68AOiDJk6IfF/kF6EIIgLWU+GnFjzNlylMZmmXwGXWjCrKxOXUICIujUtsP3TYQpq1s+YeJtm5792mNC4cOLtrDQq4URHFwogd98b8lqOpBjjNxs8e9Bf85rRk9inrTMEZSZx8iqP7o1V5PeRAItKC37yetQOAiZZ0xQl4gzorWme+ysbf8GnGA8uK1x/uhmkKzFLJTwnfl7VhX3C9NvmRYuEFVVuyIhGscNfQEam39+INwQmDuC6ZEad4NThjLd1SyTr67mKl4x1HAt9eJlKtWf+nR/HKwuVaI8MAZSJlPu2Jc40v45Ae+P7iGE6SLUCVlN+br7wwYjBfaE/QMtyoH+Iiz8uW+CzuC+HzH5/k0sJgTZktu+Vvw8MPEwau3Y6+pm+ycbP8t9sDbXfp8; 4:RIBb5w1lNADj5lNGpZIyffKzePjP/zPynqOYqNzMQWp12dD81cC9/2MQZwTBwzb0jHPrA3/DTFn/hKaahcuAa7AimbsN0RMOFPC3t0WaDb5xVoPXmTESNl1mKvZ8UGfBzk5XD/JJcEL1ovqtUBUAUwnq1VIlz/+dNz8MCLOs3mA3hMohzNWoGrvfAcWmbPVDhDEODpOxLqCBqCFYVt1thDp3rJ/9WA4CLnPaCWCqClEZpx0oE37xO9K2wXMf9pS21m4hMsroOwkKzk8CRSsnVh4txT2CEjvCAgVcsN7bLDnuC6+2GEegjhze2034gOYd X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(8121501046)(5005006)(93006095)(93001095)(3231101)(944501161)(10201501046)(3002001)(6055026)(6041288)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(20161123562045)(6072148)(201708071742011); SRVR:PS1PR0601MB1881; BCL:0; PCL:0; RULEID:; SRVR:PS1PR0601MB1881; X-Forefront-PRVS: 0567A15835 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(39860400002)(376002)(39380400002)(396003)(366004)(346002)(189003)(199004)(69596002)(105586002)(66066001)(8676002)(16586007)(58126008)(8936002)(81166006)(81156014)(5660300001)(478600001)(316002)(97736004)(53936002)(76176011)(36756003)(2950100002)(7736002)(305945005)(59450400001)(7696005)(2906002)(52116002)(386003)(6116002)(53416004)(47776003)(25786009)(50466002)(6486002)(6916009)(83506002)(106356001)(26005)(68736007)(4326008)(16526019)(86362001)(3846002)(23726003)(186003)(21314002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:PS1PR0601MB1881; 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; PS1PR0601MB1881; 23:8TqdnciKgJ3mFsrqsVtMiVrB1utBOIUnln0uGMH?= =?us-ascii?Q?jh6vGlESAlxPXGH7zT8cMZE68udgzGHQD/xmNvUljaaWJd9ddYld9IpyzUDj?= =?us-ascii?Q?oBtKw40OX8HrIIIicexKkGIHkM2eGpVv656EbSW+J3XIj2CNnH1CPEH/qlRr?= =?us-ascii?Q?n5/xC+XcbYPNaQWdMoMjYyeXxFSlK0TtDi7ZUEM+nLHo+j4zvafjjR0/oRHY?= =?us-ascii?Q?xFagdEGP/pogfRy3LyZyRjcSgbvDLxZ5JHnaSeJv9t5d/hGZRs9L7zqHdy45?= =?us-ascii?Q?Peqoj0nx7eJtyMT42t9y4zp37PyB/dIcakO9aGDjB8RVny5ts9vAj8MCdvnE?= =?us-ascii?Q?5UvXkZDvolDDkZYqBbbp6HLQNSC43QgKuLT0RblzRYuOxXSD/Y7L730pNAUT?= =?us-ascii?Q?VCo+zWGXA/philRLQ0jE9eRc+Z62pE1x87QD6ZZcSPDY6CNgY5rEhSWyH3RA?= =?us-ascii?Q?gLhAL1+vTmr/v99tk6YyHB1DBb4fL9HwXpAGaYXdsuX/upOQy7kaj9C4n6mW?= =?us-ascii?Q?cjngNhqrx2D8X0FaD55xfrZXqNf+OkyF3FiRjU5ppOrdxGIkNsV+jGH93c6G?= =?us-ascii?Q?fwybiVWEQLhMV072kmTexP8UNDxi6HXiIUl+wSfS2pkwDlFlA0TDtKeZdgi8?= =?us-ascii?Q?+bkS8EG538KDRohHKmsL7zILRJPSejyuUK0YKVRaJCXvpZ2td7HA1fqMZY1W?= =?us-ascii?Q?FMLONQkwnK3LRuTLvYvDyL0ML5ZHmywueIseJEzwvcHFek9YcP808LqxYd5g?= =?us-ascii?Q?hb94DC9vGjYyX+jQuJurj8NR2o/PjiHrgWwWe//G76xZznTVWOpeogOaMiZY?= =?us-ascii?Q?LFfKcXb5jfD+/Bt7XdM3Xtal+zihccHkj34MQnVmGSzbeTRioAAmwXhI/7jC?= =?us-ascii?Q?FUGJUFZvzg/zYDEuLvDDxtJIGWVtuZQzOyS6G+ahJnER5GPTPBCRT3QPxpfl?= =?us-ascii?Q?913CV7jEyY8AiS3nEdisrjvsw2K5S99i8Pc6sMPbTxgsKTO1B/Nu04zt4I9l?= =?us-ascii?Q?D/rxfbJnRC8xpr5Ibw09is6dPs0Iaw34S2zZFlISj3iPUn2l8GrNggclrqdo?= =?us-ascii?Q?ltVMDfaDHIqbEi+lQiZ8EUI/dRKG9YNB66UVDDCRWPPHnwaA8oOx6g51V4rP?= =?us-ascii?Q?5DTQNQJoEKCA3k0Vkcb/sJ0DwowXNIq3qzzFgihyT3hDxXXglAf0cGH/0eI7?= =?us-ascii?Q?S7/svvfO6WPB4wUQ=3D?= X-Microsoft-Exchange-Diagnostics: 1; PS1PR0601MB1881; 6:2eBpOb6m1ibCLGiRzmPB6dmc6tGBE9jgRz1uSequqczuVRRke8tX0CO0827aCFwvOfGb/XQwWBeLUu3Artv+0ILihnuz/JajbLyk7RctUC98yBb5AE/uY0UXFQcoTHsyceqJmFXWApn7S4PKt1ZELEm4LyeQm2AFDhQSs12qLsuXc9Eqxj/kdjfszbdaFV4+PkSOyqFsz4wl62TGGcsIfm2XrYYAcs5SV80AGZL3K8fz5kAP1w45pqBmfgWLbO21dGj5nJrJIY+7QXAcDkbZSA/IL9TukfkyKMwXTDBWGH3myGBm+qdV8lHqg2pyJxiF0sITtI+B5qpeK9rKdO/TxWg9ZXtbYJIYgXbI+k3TPNI=; 5:RoOcA77Q+Sb0PnZuIr1ORufO6ys/O2sOZBp9pnBd0uWPsBd5YlCWHSUNv/jh022XcNnG2iJEv0fTj7FxycUMF5vip8mZlaFlJBJgyHXEd0y8uk/q+/mesIdVSjApXFSabHe1vBYAClT0NQPS24AV4/XmbNKD5I1mk+NoWKSrh/E=; 24:AoU0qTh4YiFY/LXzrP2U6jpEz6AbjtZWG7NgXZmFFpo+ZLPOhpF2yyWDE+LTa0bRKB80GXpEnlpUsCJ+LfIQtzcZRfq/KrBU0nzAGwPuyB4=; 7:M+QlrvRhIcml2ZUWDw32/NijFU1K8D4lepMNAYV7TIyf6rCyDL8ww3Mh94svsMavGrjRovLggzgVjPYIGSMOMHumsxV6u5bdONeDmixZPp8O/VyKOLekmI+kcJbzcKxwt2FT7s78vBeSULsCFiYcBZMB3AH7CVcBDa+qdq50yeT+EfmOmf381CXN7gvSnzH5AB6KD5dGuEIt08oRE0AYEZZiWxiRUdqzd6v/8OozaSa/AaLkHsSrFwyagDeCjFfM SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; PS1PR0601MB1881; 20:ezAx3btJb410hos11QzHhAIL/fJ0aXMntVhYWxIwshklbRYPbJ9xZMnwyg3Wk3wSusYXmNxXz4aZ1kRIbXLLfpNHtC8PBMd2APvKHlbWwbzU2BLXVLImx0lzkMwS0dUQi2dtoOMUoVbThRK9uv1WI4Ip8MpK7k/irZBFxkpjnL8= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jan 2018 04:21:38.7223 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d53467db-5dfb-4982-55fc-08d566cfcad5 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-Transport-CrossTenantHeadersStamped: PS1PR0601MB1881 Cc: Linux-ALSA Subject: [alsa-devel] [PATCH v2 125/186] ASoC: msm8916-wcd-digital: 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/msm8916-wcd-digital.c | 115 +++++++++++++++++---------------- 1 file changed, 58 insertions(+), 57 deletions(-) diff --git a/sound/soc/codecs/msm8916-wcd-digital.c b/sound/soc/codecs/msm8916-wcd-digital.c index 13354d6..3063ded 100644 --- a/sound/soc/codecs/msm8916-wcd-digital.c +++ b/sound/soc/codecs/msm8916-wcd-digital.c @@ -348,14 +348,14 @@ static int msm8916_wcd_digital_enable_interpolator( 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); switch (event) { case SND_SOC_DAPM_POST_PMU: /* apply the digital gain after the interpolator is enabled */ usleep_range(10000, 10100); - snd_soc_write(codec, rx_gain_reg[w->shift], - snd_soc_read(codec, rx_gain_reg[w->shift])); + snd_soc_component_write(component, rx_gain_reg[w->shift], + snd_soc_component_read32(component, rx_gain_reg[w->shift])); break; } return 0; @@ -365,7 +365,7 @@ static int msm8916_wcd_digital_enable_dec(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); unsigned int decimator = w->shift + 1; u16 dec_reset_reg, tx_vol_ctl_reg, tx_mux_ctl_reg; u8 dec_hpf_cut_of_freq; @@ -377,46 +377,46 @@ static int msm8916_wcd_digital_enable_dec(struct snd_soc_dapm_widget *w, switch (event) { case SND_SOC_DAPM_PRE_PMU: /* Enable TX digital mute */ - snd_soc_update_bits(codec, tx_vol_ctl_reg, + snd_soc_component_update_bits(component, tx_vol_ctl_reg, TX_VOL_CTL_CFG_MUTE_EN_MASK, TX_VOL_CTL_CFG_MUTE_EN_ENABLE); - dec_hpf_cut_of_freq = snd_soc_read(codec, tx_mux_ctl_reg) & + dec_hpf_cut_of_freq = snd_soc_component_read32(component, tx_mux_ctl_reg) & TX_MUX_CTL_CUT_OFF_FREQ_MASK; dec_hpf_cut_of_freq >>= TX_MUX_CTL_CUT_OFF_FREQ_SHIFT; if (dec_hpf_cut_of_freq != TX_MUX_CTL_CF_NEG_3DB_150HZ) { /* set cut of freq to CF_MIN_3DB_150HZ (0x1) */ - snd_soc_update_bits(codec, tx_mux_ctl_reg, + snd_soc_component_update_bits(component, tx_mux_ctl_reg, TX_MUX_CTL_CUT_OFF_FREQ_MASK, TX_MUX_CTL_CF_NEG_3DB_150HZ); } break; case SND_SOC_DAPM_POST_PMU: /* enable HPF */ - snd_soc_update_bits(codec, tx_mux_ctl_reg, + snd_soc_component_update_bits(component, tx_mux_ctl_reg, TX_MUX_CTL_HPF_BP_SEL_MASK, TX_MUX_CTL_HPF_BP_SEL_NO_BYPASS); /* apply the digital gain after the decimator is enabled */ - snd_soc_write(codec, tx_gain_reg[w->shift], - snd_soc_read(codec, tx_gain_reg[w->shift])); - snd_soc_update_bits(codec, tx_vol_ctl_reg, + snd_soc_component_write(component, tx_gain_reg[w->shift], + snd_soc_component_read32(component, tx_gain_reg[w->shift])); + snd_soc_component_update_bits(component, tx_vol_ctl_reg, TX_VOL_CTL_CFG_MUTE_EN_MASK, 0); break; case SND_SOC_DAPM_PRE_PMD: - snd_soc_update_bits(codec, tx_vol_ctl_reg, + snd_soc_component_update_bits(component, tx_vol_ctl_reg, TX_VOL_CTL_CFG_MUTE_EN_MASK, TX_VOL_CTL_CFG_MUTE_EN_ENABLE); - snd_soc_update_bits(codec, tx_mux_ctl_reg, + snd_soc_component_update_bits(component, tx_mux_ctl_reg, TX_MUX_CTL_HPF_BP_SEL_MASK, TX_MUX_CTL_HPF_BP_SEL_BYPASS); break; case SND_SOC_DAPM_POST_PMD: - snd_soc_update_bits(codec, dec_reset_reg, 1 << w->shift, + snd_soc_component_update_bits(component, dec_reset_reg, 1 << w->shift, 1 << w->shift); - snd_soc_update_bits(codec, dec_reset_reg, 1 << w->shift, 0x0); - snd_soc_update_bits(codec, tx_mux_ctl_reg, + snd_soc_component_update_bits(component, dec_reset_reg, 1 << w->shift, 0x0); + snd_soc_component_update_bits(component, tx_mux_ctl_reg, TX_MUX_CTL_HPF_BP_SEL_MASK, TX_MUX_CTL_HPF_BP_SEL_BYPASS); - snd_soc_update_bits(codec, tx_vol_ctl_reg, + snd_soc_component_update_bits(component, tx_vol_ctl_reg, TX_VOL_CTL_CFG_MUTE_EN_MASK, 0); break; } @@ -428,35 +428,35 @@ static int msm8916_wcd_digital_enable_dmic(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); unsigned int dmic; int ret; /* get dmic number out of widget name */ char *dmic_num = strpbrk(w->name, "12"); if (dmic_num == NULL) { - dev_err(codec->dev, "Invalid DMIC\n"); + dev_err(component->dev, "Invalid DMIC\n"); return -EINVAL; } ret = kstrtouint(dmic_num, 10, &dmic); if (ret < 0 || dmic > 2) { - dev_err(codec->dev, "Invalid DMIC line on the codec\n"); + dev_err(component->dev, "Invalid DMIC line on the component\n"); return -EINVAL; } switch (event) { case SND_SOC_DAPM_PRE_PMU: - snd_soc_update_bits(codec, LPASS_CDC_CLK_DMIC_B1_CTL, + snd_soc_component_update_bits(component, LPASS_CDC_CLK_DMIC_B1_CTL, DMIC_B1_CTL_DMIC0_CLK_SEL_MASK, DMIC_B1_CTL_DMIC0_CLK_SEL_DIV3); switch (dmic) { case 1: - snd_soc_update_bits(codec, LPASS_CDC_TX1_DMIC_CTL, + snd_soc_component_update_bits(component, LPASS_CDC_TX1_DMIC_CTL, TXN_DMIC_CTL_CLK_SEL_MASK, TXN_DMIC_CTL_CLK_SEL_DIV3); break; case 2: - snd_soc_update_bits(codec, LPASS_CDC_TX2_DMIC_CTL, + snd_soc_component_update_bits(component, LPASS_CDC_TX2_DMIC_CTL, TXN_DMIC_CTL_CLK_SEL_MASK, TXN_DMIC_CTL_CLK_SEL_DIV3); break; @@ -575,20 +575,20 @@ static int msm8916_wcd_digital_get_clks(struct platform_device *pdev, return 0; } -static int msm8916_wcd_digital_codec_probe(struct snd_soc_codec *codec) +static int msm8916_wcd_digital_component_probe(struct snd_soc_component *component) { - struct msm8916_wcd_digital_priv *priv = dev_get_drvdata(codec->dev); + struct msm8916_wcd_digital_priv *priv = dev_get_drvdata(component->dev); - snd_soc_codec_set_drvdata(codec, priv); + snd_soc_component_set_drvdata(component, priv); return 0; } -static int msm8916_wcd_digital_codec_set_sysclk(struct snd_soc_codec *codec, +static int msm8916_wcd_digital_component_set_sysclk(struct snd_soc_component *component, int clk_id, int source, unsigned int freq, int dir) { - struct msm8916_wcd_digital_priv *p = dev_get_drvdata(codec->dev); + struct msm8916_wcd_digital_priv *p = dev_get_drvdata(component->dev); return clk_set_rate(p->mclk, freq); } @@ -618,18 +618,18 @@ static int msm8916_wcd_digital_hw_params(struct snd_pcm_substream *substream, rx_fs_rate = RX_I2S_CTL_RX_I2S_FS_RATE_F_48_KHZ; break; default: - dev_err(dai->codec->dev, "Invalid sampling rate %d\n", + dev_err(dai->component->dev, "Invalid sampling rate %d\n", params_rate(params)); return -EINVAL; } switch (substream->stream) { case SNDRV_PCM_STREAM_CAPTURE: - snd_soc_update_bits(dai->codec, LPASS_CDC_CLK_TX_I2S_CTL, + snd_soc_component_update_bits(dai->component, LPASS_CDC_CLK_TX_I2S_CTL, TX_I2S_CTL_TX_I2S_FS_RATE_MASK, tx_fs_rate); break; case SNDRV_PCM_STREAM_PLAYBACK: - snd_soc_update_bits(dai->codec, LPASS_CDC_CLK_RX_I2S_CTL, + snd_soc_component_update_bits(dai->component, LPASS_CDC_CLK_RX_I2S_CTL, RX_I2S_CTL_RX_I2S_FS_RATE_MASK, rx_fs_rate); break; default: @@ -638,18 +638,19 @@ static int msm8916_wcd_digital_hw_params(struct snd_pcm_substream *substream, switch (params_format(params)) { case SNDRV_PCM_FORMAT_S16_LE: - snd_soc_update_bits(dai->codec, LPASS_CDC_CLK_TX_I2S_CTL, + snd_soc_component_update_bits(dai->component, LPASS_CDC_CLK_TX_I2S_CTL, TX_I2S_CTL_TX_I2S_MODE_MASK, TX_I2S_CTL_TX_I2S_MODE_16); - snd_soc_update_bits(dai->codec, LPASS_CDC_CLK_RX_I2S_CTL, + snd_soc_component_update_bits(dai->component, LPASS_CDC_CLK_RX_I2S_CTL, RX_I2S_CTL_RX_I2S_MODE_MASK, RX_I2S_CTL_RX_I2S_MODE_16); break; + case SNDRV_PCM_FORMAT_S32_LE: - snd_soc_update_bits(dai->codec, LPASS_CDC_CLK_TX_I2S_CTL, + snd_soc_component_update_bits(dai->component, LPASS_CDC_CLK_TX_I2S_CTL, TX_I2S_CTL_TX_I2S_MODE_MASK, TX_I2S_CTL_TX_I2S_MODE_32); - snd_soc_update_bits(dai->codec, LPASS_CDC_CLK_RX_I2S_CTL, + snd_soc_component_update_bits(dai->component, LPASS_CDC_CLK_RX_I2S_CTL, RX_I2S_CTL_RX_I2S_MODE_MASK, RX_I2S_CTL_RX_I2S_MODE_32); break; @@ -780,32 +781,32 @@ static int msm8916_wcd_digital_hw_params(struct snd_pcm_substream *substream, static int msm8916_wcd_digital_startup(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) { - struct snd_soc_codec *codec = dai->codec; + struct snd_soc_component *component = dai->component; struct msm8916_wcd_digital_priv *msm8916_wcd; unsigned long mclk_rate; - msm8916_wcd = snd_soc_codec_get_drvdata(codec); - snd_soc_update_bits(codec, LPASS_CDC_CLK_MCLK_CTL, + msm8916_wcd = snd_soc_component_get_drvdata(component); + snd_soc_component_update_bits(component, LPASS_CDC_CLK_MCLK_CTL, MCLK_CTL_MCLK_EN_MASK, MCLK_CTL_MCLK_EN_ENABLE); - snd_soc_update_bits(codec, LPASS_CDC_CLK_PDM_CTL, + snd_soc_component_update_bits(component, LPASS_CDC_CLK_PDM_CTL, LPASS_CDC_CLK_PDM_CTL_PDM_CLK_SEL_MASK, LPASS_CDC_CLK_PDM_CTL_PDM_CLK_SEL_FB); mclk_rate = clk_get_rate(msm8916_wcd->mclk); switch (mclk_rate) { case 12288000: - snd_soc_update_bits(codec, LPASS_CDC_TOP_CTL, + snd_soc_component_update_bits(component, LPASS_CDC_TOP_CTL, TOP_CTL_DIG_MCLK_FREQ_MASK, TOP_CTL_DIG_MCLK_FREQ_F_12_288MHZ); break; case 9600000: - snd_soc_update_bits(codec, LPASS_CDC_TOP_CTL, + snd_soc_component_update_bits(component, LPASS_CDC_TOP_CTL, TOP_CTL_DIG_MCLK_FREQ_MASK, TOP_CTL_DIG_MCLK_FREQ_F_9_6MHZ); break; default: - dev_err(codec->dev, "Invalid mclk rate %ld\n", mclk_rate); + dev_err(component->dev, "Invalid mclk rate %ld\n", mclk_rate); break; } return 0; @@ -814,7 +815,7 @@ static int msm8916_wcd_digital_startup(struct snd_pcm_substream *substream, static void msm8916_wcd_digital_shutdown(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) { - snd_soc_update_bits(dai->codec, LPASS_CDC_CLK_PDM_CTL, + snd_soc_component_update_bits(dai->component, LPASS_CDC_CLK_PDM_CTL, LPASS_CDC_CLK_PDM_CTL_PDM_CLK_SEL_MASK, 0); } @@ -851,18 +852,19 @@ static void msm8916_wcd_digital_shutdown(struct snd_pcm_substream *substream, }, }; -static const struct snd_soc_codec_driver msm8916_wcd_digital = { - .probe = msm8916_wcd_digital_codec_probe, - .set_sysclk = msm8916_wcd_digital_codec_set_sysclk, - .component_driver = { - .controls = msm8916_wcd_digital_snd_controls, - .num_controls = ARRAY_SIZE(msm8916_wcd_digital_snd_controls), - .dapm_widgets = msm8916_wcd_digital_dapm_widgets, - .num_dapm_widgets = - ARRAY_SIZE(msm8916_wcd_digital_dapm_widgets), - .dapm_routes = msm8916_wcd_digital_audio_map, - .num_dapm_routes = ARRAY_SIZE(msm8916_wcd_digital_audio_map), - }, +static const struct snd_soc_component_driver msm8916_wcd_digital = { + .probe = msm8916_wcd_digital_component_probe, + .set_sysclk = msm8916_wcd_digital_component_set_sysclk, + .controls = msm8916_wcd_digital_snd_controls, + .num_controls = ARRAY_SIZE(msm8916_wcd_digital_snd_controls), + .dapm_widgets = msm8916_wcd_digital_dapm_widgets, + .num_dapm_widgets = ARRAY_SIZE(msm8916_wcd_digital_dapm_widgets), + .dapm_routes = msm8916_wcd_digital_audio_map, + .num_dapm_routes = ARRAY_SIZE(msm8916_wcd_digital_audio_map), + .idle_bias_on = 1, + .use_pmdown_time = 1, + .endianness = 1, + .non_legacy_dai_naming = 1, }; static const struct regmap_config msm8916_codec_regmap_config = { @@ -915,7 +917,7 @@ static int msm8916_wcd_digital_probe(struct platform_device *pdev) dev_set_drvdata(dev, priv); - return snd_soc_register_codec(dev, &msm8916_wcd_digital, + return devm_snd_soc_register_component(dev, &msm8916_wcd_digital, msm8916_wcd_digital_dai, ARRAY_SIZE(msm8916_wcd_digital_dai)); } @@ -924,7 +926,6 @@ static int msm8916_wcd_digital_remove(struct platform_device *pdev) { struct msm8916_wcd_digital_priv *priv = dev_get_drvdata(&pdev->dev); - snd_soc_unregister_codec(&pdev->dev); clk_disable_unprepare(priv->mclk); clk_disable_unprepare(priv->ahbclk);