From patchwork Mon Jan 29 03:13:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 10188917 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 4C5BD602C8 for ; Mon, 29 Jan 2018 03:21:03 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3D8EE2864A for ; Mon, 29 Jan 2018 03:21:03 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 300B628684; Mon, 29 Jan 2018 03:21:03 +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 0A0432864A for ; Mon, 29 Jan 2018 03:21:01 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id 62D78267A5B; Mon, 29 Jan 2018 04:20:49 +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 EB998267A5B; Mon, 29 Jan 2018 04:20:47 +0100 (CET) Received: from relmlie3.idc.renesas.com (relmlor4.renesas.com [210.160.252.174]) by alsa0.perex.cz (Postfix) with ESMTP id 62D4D267A59 for ; Mon, 29 Jan 2018 04:13:12 +0100 (CET) Received: from unknown (HELO relmlir3.idc.renesas.com) ([10.200.68.153]) by relmlie3.idc.renesas.com with ESMTP; 29 Jan 2018 12:13:10 +0900 Received: from relmlii1.idc.renesas.com (relmlii1.idc.renesas.com [10.200.68.65]) by relmlir3.idc.renesas.com (Postfix) with ESMTP id 82B816DFB8; Mon, 29 Jan 2018 12:13:10 +0900 (JST) X-IronPort-AV: E=Sophos;i="5.46,429,1511794800"; d="scan'208";a="269588520" Received: from mail-pu1apc01lp0017.outbound.protection.outlook.com (HELO APC01-PU1-obe.outbound.protection.outlook.com) ([65.55.88.17]) by relmlii1.idc.renesas.com with ESMTP/TLS/AES256-SHA256; 29 Jan 2018 12:13:10 +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=bVmGpvrdPI0EKzKsOQ4ahElUIH2cY6uCTXjZDgEYr0k=; b=PrE1iCxKoo7u1MfDinEenoi9QoUKoGE6QuxpxebK7Bo0FwhXhVRyfFFaFW5mhybrau8D690hrgtm/V6i8rkFH+CSD8D89cR/xwelMeoFeZ61t1iU64QZkbkGaNFmCEMk9R2Xnz7gqqDKd7fzX6qBVw2u4r+XDWk8QRQDR/k0ox8= 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 03:13:07 +0000 Message-ID: <87fu6p2wb6.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:13:07 +0000 X-Originating-IP: [211.11.155.138] X-ClientProxiedBy: OSAPR01CA0016.jpnprd01.prod.outlook.com (2603:1096:603:2a::28) 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: 3bc0f010-c92e-4ff7-b0ce-08d566c6388b 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:kDWkagU+zuhK7+tFT/Yms9YX/ioQUHKN40jifq+KkOvu7FzVzTfXVVN4qRx0NVU9dFgejetpzVtPwtt/op71OZlKgW38zKuXQu6j1orTawRIfqqgBaBSzVapupYr7AxTK1WIOQcTaNMrICv6wepgQ9v9GjW63XflbxQwFCDC6k452efSv9GIcdngC2Y5ZPqD7HcyAhqdOnUjKPJ8Lne/LGk4F+lUR0XQ2Q4Zs1i4mx47QvmuAF9hMGPOdTs3O+RJ; 25:4/uo5hs7LQHsfDEGY7GwGjwVfTRhWBRN4aNuBqZ5RpnDxGCu9SbJZ8q3qPZRkc9+ZL5Eg+S2okORILLzR7xYkUaHQgSCD3vTTl9VCNPNsjZSBX+Y79TEw44wcWiH5RfOJgyM+pStqH94S5NIkgsHXYw+v2jWgLx8z/R5rs8SWBSS9w24ltZeuwwGZVho7OEzaWubTZ0RU/H5wZFWOEIgb3keLOSPnXrx3QikI/5wmUBc7h+INfAZJPwsA9ni0Vk7BYs9vI3u0WwXYyM4n36VZxgOXp5a7WFOpbGIe+ZcRetpiRWTMGv970/LIY0Wl1AgrE2EG9jEoUEVC4NwMRVytA==; 31:dS85cGE7+Dgz4spzetQhrjxu6Ab8Q+bvZ3gvysnHK8gwvbXk50M0HNPdD+XMOBwWqqRyDVxWkY4N16ZwgQhm1AkKSu6lwVxqIre+m9MawCK+IeZfGFrSpHuG/8Q6vKpuiUh4U5X7xV1+jo1h+oAh6Alm7uaWbxXDcGBLG5bMEZ2eDP66/0cdabXdRwEut8amXNuE6aZ0kcbPACaeGGpnJpkeMAtkMRY2MZUg4uNJ8Xo= 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:ijAVZPfjTUb4wYqKPFQRyG1XNV/Spimx9Ut6JwXwY+ErHOe23XIfbqQlV/Syw/+9/PWT4fss4r3FA4Pj3S3bHSLRv3VVI9FKEcqvG703SJXVwmaf/nQEtpDv77iHbPk2CSViwUQPcca+6IvikBftNtxvGL0vGKbkTSM/h/cVIyYRegn1peIUwkP1XC1ollZ9XE/2Q30uCMqKRV0k7WSKlNDje/pkxQEXfNCUTeNllIvGrGIYUCNMi9z13gndLi14+N5AmwCdQfuPg3Gu5nvFZP8i2qFhyGCLOMYCJdVn5KXuXqpzUkpaqzo3Njbo+IJIm3KoAMFiDqHGasUPio9hG8dWjrR4vHT5g2NmGHeOfeOHV6k2VdrARDyyjQGl/jLGiKq0dP3vS6w3EeGe6Pz89oCnPetxFJ//yj9Ffiji3q+44nf9UTD1suobEGZRL9BsJKjPMGyNlim9LWyzIcc0zfFCNLxPiAD6NTmcq3HgMOoPTrCDvVSaYcVzxOs/XJgQ; 4:Ss6Xcec7THPvV/fpfTh+sg/MkNxJFzqmqdB0bC2u8H20GQlwYxcvEcvyo2BujbJFHTuy8aTiN+2pb66vVl1+z5qve7Mit9adEW0szkmbi+vBcX6Gns676oAosPT8PWCCNHzDCwqgWNzhpyJ+YuhXOpZBezDVnCvfBqeId/OsyysrsreEuY4D+3g1/Yj5f5m3NULV6XjSVEnElxweXemzCxWu1VY+ulHlHxvTxQNgd/7h4iHCH0KKqKUAN+FbUwYJ8X9hywgiJzwDFg563Jl5K/1hPnAwd9mECyB4kUsLhI+lt855mANa3SP4lxEa8dYU 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)(3231101)(944501161)(10201501046)(3002001)(93006095)(93001095)(6055026)(6041288)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:PS1PR0601MB1881; BCL:0; PCL:0; RULEID:; SRVR:PS1PR0601MB1881; X-Forefront-PRVS: 0567A15835 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(366004)(39380400002)(39860400002)(346002)(396003)(376002)(189003)(199004)(6116002)(50466002)(6916009)(7736002)(6486002)(53416004)(47776003)(25786009)(386003)(2950100002)(305945005)(52116002)(2906002)(59450400001)(7696005)(3846002)(86362001)(16526019)(68736007)(4326008)(23726003)(186003)(26005)(83506002)(106356001)(8676002)(81156014)(81166006)(16586007)(8936002)(58126008)(105586002)(69596002)(66066001)(36756003)(53936002)(76176011)(478600001)(316002)(5660300001)(97736004)(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:Ucv2CSoxlfnSClQRT20Bzd7oEdIlAjTK/z0AE+4?= =?us-ascii?Q?z/EGgSfiA6vRpSjYJOXNw+0mgqAdCYYC3IOQ1z+89jisvTDGHyabFtBsOvZE?= =?us-ascii?Q?g1ba5//bD1TsCMgYPg9Vqko3/eKIDx6MYfvBD8L8vjMHe0MD0Jkr10SN86d4?= =?us-ascii?Q?wmwzadw/QozocaSe2hXMbBV5NTkMrTC4rMV8MCPcVWsm2tFAhqHWo60pNfNl?= =?us-ascii?Q?6fezDkpup5Qvhkj9h7cO5dgEK7zp9ORDuq+EYfo6r3ec38eUK/5W8vWp10r5?= =?us-ascii?Q?XVKyJiP8KaeDGA2LNuuNWchvWK4BL2VJ0EXIO71rYZpRzu2ma7QhaJUxxnb4?= =?us-ascii?Q?7rQGP8rg9Rg2iWeeO0gk8z6Ec3v6C05oE5eOJP7TNmqhds3EHLF4VMDHUgLA?= =?us-ascii?Q?u7LrIcDWi+di1Mjwq82uyK8rwNeinwrYHFZHXrNopfOlVGAoiPmTqqr55hLm?= =?us-ascii?Q?ntV8WQoMXQAYaT8I3mjgepTbQMLDsVuBdFE4s6SGY97TIkxh502PqV1F210x?= =?us-ascii?Q?KfR01HpsQCnHbTSjRfm22GP7cm1we2aBLZwf+cSyGSq6uXelnpLDDFc7bBJp?= =?us-ascii?Q?+QJgckwscsI3W98Ww+XG29Q0BNspYGM2rOThM3MQoCAif9yfvvFRBoLhZxuT?= =?us-ascii?Q?niRAYCnCkcGg08uUBJp1qVmvz3wJLjVY01fXltFxOSiC5D8hmO6DndXi80Om?= =?us-ascii?Q?fSKzx4D+PXBS3c7nK4Im+QnaEXfdTcxb4nrS5boEz5dWSKsZh9NT0nRyJdw1?= =?us-ascii?Q?kDKy0ffKH2ibx8msFKun2555uh3yco9m/AOujY+OU1RJ3hultf5EDy2e2c5M?= =?us-ascii?Q?lh2Di1sQQENIJHjI1nbj/oYa9GT3C5/HG9TB0ISrFN5N1geziirwXTki2uXJ?= =?us-ascii?Q?xCWapQAZGJlEWPAYM0QovMQRqHmLm3bkIlIH4SIa6mHRJxGZW5hYdrFU0QZo?= =?us-ascii?Q?M2NlaLztjMkPEeLMP2dnBzHaDCMD/jG6Ar1YujwELzkzpGP+g4O5TE1zUBk2?= =?us-ascii?Q?cCYEuT+gphJLkZqRYM6q7Y0+Ck3bfuBp+CnXhjWmF+P4PO7mTLCFcImO48qH?= =?us-ascii?Q?5eKjLWav8TRH2Cnvke1V7gdPDxBOaGkH8u0jGXLiBDjzF44DBRWIhdSI87wl?= =?us-ascii?Q?OYoiA5iCFcouXpm0VaW2J3xIiOVdhoDtzS0cIZZuqZN8+uyPEbJYRsyuYJC7?= =?us-ascii?Q?TYUNSKN0kExMTB44=3D?= X-Microsoft-Exchange-Diagnostics: 1; PS1PR0601MB1881; 6:C+QqeCBsSULVACUDuiV7n/EwjNw7/KXdSGQn5pPOL2z+7R7SZzPcOoZHBm/jnjWRKZLbB1JzeaRgj4POvMjVSx3NNpHuUzXdgqDo9M5eQV2tOXHXzDPRAzNjMABtljGbY/nssQ7NKmF8sXozdzjE4uSIxXFsTDffUCFjR0gauGwbWiiThsF1CVRSEudOs4kp1LQjeRDObeuzilFOur+qzVC8Bssh6ChoqmqilaQOPPF/CqEAASG0XeCFre94W1wHedxlomygMw63p0zGSZ3lxbGw2en9zKFBgjZttv63nRTb1xXyop0fqV8r9y5LXopaVqtbeNVI48XEWudnodFV7R4AFUoqrQTeuCxCPrb9JIg=; 5:W0ppNhLoUprMdletypeOQGjyZ5WDNhbtQLWrhQHSzzdnvm2drzrxOYqnt0H3De9tIlX0B/W40BAz/05RuQz1h2VoxOWzmz/cNb1xny7jNiPFAHkzlAbjGZ9XoYbnMg8jAtYnKzuYqgxLgduYVR1nxFoD8fTollOzvwBMA9xCS9A=; 24:+D0jVPcWKKW0vKPp5Tlxko0f04cAq3FniPjgR4oUC40dLRI5yQsX+mL+nF9nHUEJ7WSrP/W9NC+JkFk5NGBzO9PHBG6Rki6nYfBFV1yjnvA=; 7:H6/peHk5whgNQn5HY9pBgGFSEhSFockYrpOHuyXHyMohFrRfxG5krpVB0xKe2+jayq67uXtyqwlMrMGvDRtRq1UTl/EOohlqJsY/0ONYF/E/fNi7eluEoC4ZzcMSNx8qHqIAmooS9B6lZIQazroC2NgWMr3O6CyLCQ2XYZDcuBsGpZLt7eyqEgwNQBzJUh2mNh+8fDEjx/R6vwpvGSfjndgXJORih2qKy06PfPhCN6gTXniHhzbWerufFGeKfhRx SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; PS1PR0601MB1881; 20:xiCXQwsq+EHMXErUNcNZvv8hmrDW2snlixKY8uvg/fy1ged63UTPiV5JizNI4AIRWtltV7n6foINzfjPhVxBWTTfGATAfhc2f+jpdcFOEj0BlRwQwciG1HkoPsriB4iwspXHorEEDtUAhYtYNWUP4qjm5V/Y8JUbcfPlcr9AqjM= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jan 2018 03:13:07.8217 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3bc0f010-c92e-4ff7-b0ce-08d566c6388b 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 052/186] ASoC: ak4642: 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/ak4642.c | 105 ++++++++++++++++++++++------------------------ 1 file changed, 50 insertions(+), 55 deletions(-) diff --git a/sound/soc/codecs/ak4642.c b/sound/soc/codecs/ak4642.c index 29530c5..9c35e91 100644 --- a/sound/soc/codecs/ak4642.c +++ b/sound/soc/codecs/ak4642.c @@ -178,19 +178,19 @@ struct ak4642_priv { static int ak4642_lout_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); switch (event) { case SND_SOC_DAPM_PRE_PMD: case SND_SOC_DAPM_PRE_PMU: /* Power save mode ON */ - snd_soc_update_bits(codec, SG_SL2, LOPS, LOPS); + snd_soc_component_update_bits(component, SG_SL2, LOPS, LOPS); break; case SND_SOC_DAPM_POST_PMU: case SND_SOC_DAPM_POST_PMD: /* Power save mode OFF */ msleep(300); - snd_soc_update_bits(codec, SG_SL2, LOPS, 0); + snd_soc_component_update_bits(component, SG_SL2, LOPS, 0); break; } @@ -282,7 +282,7 @@ static int ak4642_dai_startup(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) { int is_play = substream->stream == SNDRV_PCM_STREAM_PLAYBACK; - struct snd_soc_codec *codec = dai->codec; + struct snd_soc_component *component = dai->component; if (is_play) { /* @@ -295,8 +295,8 @@ static int ak4642_dai_startup(struct snd_pcm_substream *substream, * This operation came from example code of * "ASAHI KASEI AK4642" (japanese) manual p97. */ - snd_soc_write(codec, L_IVC, 0x91); /* volume */ - snd_soc_write(codec, R_IVC, 0x91); /* volume */ + snd_soc_component_write(component, L_IVC, 0x91); /* volume */ + snd_soc_component_write(component, R_IVC, 0x91); /* volume */ } else { /* * start stereo input @@ -311,11 +311,11 @@ static int ak4642_dai_startup(struct snd_pcm_substream *substream, * This operation came from example code of * "ASAHI KASEI AK4642" (japanese) manual p94. */ - snd_soc_update_bits(codec, SG_SL1, PMMP | MGAIN0, PMMP | MGAIN0); - snd_soc_write(codec, TIMER, ZTM(0x3) | WTM(0x3)); - snd_soc_write(codec, ALC_CTL1, ALC | LMTH0); - snd_soc_update_bits(codec, PW_MGMT1, PMADL, PMADL); - snd_soc_update_bits(codec, PW_MGMT3, PMADR, PMADR); + snd_soc_component_update_bits(component, SG_SL1, PMMP | MGAIN0, PMMP | MGAIN0); + snd_soc_component_write(component, TIMER, ZTM(0x3) | WTM(0x3)); + snd_soc_component_write(component, ALC_CTL1, ALC | LMTH0); + snd_soc_component_update_bits(component, PW_MGMT1, PMADL, PMADL); + snd_soc_component_update_bits(component, PW_MGMT3, PMADR, PMADR); } return 0; @@ -325,22 +325,22 @@ static void ak4642_dai_shutdown(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) { int is_play = substream->stream == SNDRV_PCM_STREAM_PLAYBACK; - struct snd_soc_codec *codec = dai->codec; + struct snd_soc_component *component = dai->component; if (is_play) { } else { /* stop stereo input */ - snd_soc_update_bits(codec, PW_MGMT1, PMADL, 0); - snd_soc_update_bits(codec, PW_MGMT3, PMADR, 0); - snd_soc_update_bits(codec, ALC_CTL1, ALC, 0); + snd_soc_component_update_bits(component, PW_MGMT1, PMADL, 0); + snd_soc_component_update_bits(component, PW_MGMT3, PMADR, 0); + snd_soc_component_update_bits(component, ALC_CTL1, ALC, 0); } } static int ak4642_dai_set_sysclk(struct snd_soc_dai *codec_dai, int clk_id, unsigned int freq, int dir) { - struct snd_soc_codec *codec = codec_dai->codec; - struct ak4642_priv *priv = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = codec_dai->component; + struct ak4642_priv *priv = snd_soc_component_get_drvdata(component); u8 pll; int extended_freq = 0; @@ -382,14 +382,14 @@ static int ak4642_dai_set_sysclk(struct snd_soc_dai *codec_dai, if (extended_freq && !priv->drvdata->extended_frequencies) return -EINVAL; - snd_soc_update_bits(codec, MD_CTL1, PLL_MASK, pll); + snd_soc_component_update_bits(component, MD_CTL1, PLL_MASK, pll); return 0; } static int ak4642_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) { - struct snd_soc_codec *codec = dai->codec; + struct snd_soc_component *component = dai->component; u8 data; u8 bcko; @@ -407,8 +407,8 @@ static int ak4642_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) default: return -EINVAL; } - snd_soc_update_bits(codec, PW_MGMT2, MS | MCKO | PMPLL, data); - snd_soc_update_bits(codec, MD_CTL1, BCKO_MASK, bcko); + snd_soc_component_update_bits(component, PW_MGMT2, MS | MCKO | PMPLL, data); + snd_soc_component_update_bits(component, MD_CTL1, BCKO_MASK, bcko); /* format type */ data = 0; @@ -425,12 +425,12 @@ static int ak4642_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) default: return -EINVAL; } - snd_soc_update_bits(codec, MD_CTL1, DIF_MASK, data); + snd_soc_component_update_bits(component, MD_CTL1, DIF_MASK, data); return 0; } -static int ak4642_set_mcko(struct snd_soc_codec *codec, +static int ak4642_set_mcko(struct snd_soc_component *component, u32 frequency) { static const u32 fs_list[] = { @@ -458,7 +458,7 @@ static int ak4642_set_mcko(struct snd_soc_codec *codec, for (ps = 0; ps < ARRAY_SIZE(ps_list); ps++) { for (fs = 0; fs < ARRAY_SIZE(fs_list); fs++) { if (frequency == ps_list[ps] * fs_list[fs]) { - snd_soc_write(codec, MD_CTL2, + snd_soc_component_write(component, MD_CTL2, PSs(ps) | FSs(fs)); return 0; } @@ -472,25 +472,25 @@ static int ak4642_dai_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 ak4642_priv *priv = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = dai->component; + struct ak4642_priv *priv = snd_soc_component_get_drvdata(component); u32 rate = clk_get_rate(priv->mcko); if (!rate) rate = params_rate(params) * 256; - return ak4642_set_mcko(codec, rate); + return ak4642_set_mcko(component, rate); } -static int ak4642_set_bias_level(struct snd_soc_codec *codec, +static int ak4642_set_bias_level(struct snd_soc_component *component, enum snd_soc_bias_level level) { switch (level) { case SND_SOC_BIAS_OFF: - snd_soc_write(codec, PW_MGMT1, 0x00); + snd_soc_component_write(component, PW_MGMT1, 0x00); break; default: - snd_soc_update_bits(codec, PW_MGMT1, PMVCM, PMVCM); + snd_soc_component_update_bits(component, PW_MGMT1, PMVCM, PMVCM); break; } @@ -523,46 +523,48 @@ static int ak4642_set_bias_level(struct snd_soc_codec *codec, .symmetric_rates = 1, }; -static int ak4642_suspend(struct snd_soc_codec *codec) +static int ak4642_suspend(struct snd_soc_component *component) { - struct regmap *regmap = dev_get_regmap(codec->dev, NULL); + struct regmap *regmap = dev_get_regmap(component->dev, NULL); regcache_cache_only(regmap, true); regcache_mark_dirty(regmap); return 0; } -static int ak4642_resume(struct snd_soc_codec *codec) +static int ak4642_resume(struct snd_soc_component *component) { - struct regmap *regmap = dev_get_regmap(codec->dev, NULL); + struct regmap *regmap = dev_get_regmap(component->dev, NULL); regcache_cache_only(regmap, false); regcache_sync(regmap); return 0; } -static int ak4642_probe(struct snd_soc_codec *codec) +static int ak4642_probe(struct snd_soc_component *component) { - struct ak4642_priv *priv = snd_soc_codec_get_drvdata(codec); + struct ak4642_priv *priv = snd_soc_component_get_drvdata(component); if (priv->mcko) - ak4642_set_mcko(codec, clk_get_rate(priv->mcko)); + ak4642_set_mcko(component, clk_get_rate(priv->mcko)); return 0; } -static const struct snd_soc_codec_driver soc_codec_dev_ak4642 = { +static const struct snd_soc_component_driver soc_component_dev_ak4642 = { .probe = ak4642_probe, .suspend = ak4642_suspend, .resume = ak4642_resume, .set_bias_level = ak4642_set_bias_level, - .component_driver = { - .controls = ak4642_snd_controls, - .num_controls = ARRAY_SIZE(ak4642_snd_controls), - .dapm_widgets = ak4642_dapm_widgets, - .num_dapm_widgets = ARRAY_SIZE(ak4642_dapm_widgets), - .dapm_routes = ak4642_intercon, - .num_dapm_routes = ARRAY_SIZE(ak4642_intercon), - }, + .controls = ak4642_snd_controls, + .num_controls = ARRAY_SIZE(ak4642_snd_controls), + .dapm_widgets = ak4642_dapm_widgets, + .num_dapm_widgets = ARRAY_SIZE(ak4642_dapm_widgets), + .dapm_routes = ak4642_intercon, + .num_dapm_routes = ARRAY_SIZE(ak4642_intercon), + .idle_bias_on = 1, + .use_pmdown_time = 1, + .endianness = 1, + .non_legacy_dai_naming = 1, }; static const struct regmap_config ak4642_regmap = { @@ -675,14 +677,8 @@ static int ak4642_i2c_probe(struct i2c_client *i2c, if (IS_ERR(regmap)) return PTR_ERR(regmap); - return snd_soc_register_codec(dev, - &soc_codec_dev_ak4642, &ak4642_dai, 1); -} - -static int ak4642_i2c_remove(struct i2c_client *client) -{ - snd_soc_unregister_codec(&client->dev); - return 0; + return devm_snd_soc_register_component(dev, + &soc_component_dev_ak4642, &ak4642_dai, 1); } static const struct of_device_id ak4642_of_match[] = { @@ -707,7 +703,6 @@ static int ak4642_i2c_remove(struct i2c_client *client) .of_match_table = ak4642_of_match, }, .probe = ak4642_i2c_probe, - .remove = ak4642_i2c_remove, .id_table = ak4642_i2c_id, };