From patchwork Fri Jan 12 01:22:59 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 10159243 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 A5EE9602D8 for ; Fri, 12 Jan 2018 01:31:13 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 95772288E8 for ; Fri, 12 Jan 2018 01:31:13 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 94200288EE; Fri, 12 Jan 2018 01:31:13 +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 6FCEC288E8 for ; Fri, 12 Jan 2018 01:31:11 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id DB1062679BF; Fri, 12 Jan 2018 02:31:09 +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 ED893267B44; Fri, 12 Jan 2018 02:31:07 +0100 (CET) Received: from relmlie3.idc.renesas.com (relmlor4.renesas.com [210.160.252.174]) by alsa0.perex.cz (Postfix) with ESMTP id 36693267BDC for ; Fri, 12 Jan 2018 02:23:03 +0100 (CET) Received: from unknown (HELO relmlir1.idc.renesas.com) ([10.200.68.151]) by relmlie3.idc.renesas.com with ESMTP; 12 Jan 2018 10:23:02 +0900 Received: from relmlii2.idc.renesas.com (relmlii2.idc.renesas.com [10.200.68.66]) by relmlir1.idc.renesas.com (Postfix) with ESMTP id BD1216CC40; Fri, 12 Jan 2018 10:23:02 +0900 (JST) X-IronPort-AV: E=Sophos;i="5.46,346,1511794800"; d="scan'208";a="269308224" Received: from mail-hk2apc01lp0209.outbound.protection.outlook.com (HELO APC01-HK2-obe.outbound.protection.outlook.com) ([65.55.88.209]) by relmlii2.idc.renesas.com with ESMTP/TLS/AES256-SHA256; 12 Jan 2018 10:23:01 +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=Buxo09p6drErp/7PejHRqTzkecMdpSHZnFrGuXvsIxY=; b=UTZsS0ednHT7xVAl6CSNLl6VAQ4r9SazUwSgIaRY0NB+cuNR6YiwUgAU8VZ4R+XKzeUP4o/FOKp0kw6YPVG+6JT9xA2KrIH5Fxcy9G8acRHT5TEfn4pGV70RCbHfI7RuYODxjbHkVH9J/lZaBlOVUZ3+20ZKCIEbPP375y7aavg= 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 PS1PR0601MB1884.apcprd06.prod.outlook.com (2603:1096:803:8::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.407.7; Fri, 12 Jan 2018 01:22:59 +0000 Message-ID: <87a7xjc1n5.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:22:59 +0000 X-Originating-IP: [211.11.155.138] X-ClientProxiedBy: OS2PR0101CA0010.jpnprd01.prod.outlook.com (2603:1096:600:3::20) To PS1PR0601MB1884.apcprd06.prod.outlook.com (2603:1096:803:8::22) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 89b6f027-ead9-4b62-1f5a-08d5595b0498 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020074)(4652020)(5600026)(4604075)(48565401081)(2017052603307)(7153060)(7193020); SRVR:PS1PR0601MB1884; X-Microsoft-Exchange-Diagnostics: 1; PS1PR0601MB1884; 3:tQ4gMIbrcEWtnO5GGFmNn9BXErVuUZao7wxCQHyVCCyGae52dbLfRXnJCJ4/WftvfAnTDbZCFf5HVixhyFZjgqvo+u/xeYiXiPSadeFg4wgTYzJd5JLqT4xT/6yUaPLC7nOsRrec1n6sQLqc2tX+iaXJaGZMTyLhv6Y3oTTQXP9JcKnBn0NadaPleIJZkXi1Wq1TuB47Vber8bD7RbWth/GpYrokEtn1xUrRhKuOCAoiPwZoFBxRs7zvNl+VaT6P; 25:kFt37VZQ8GLXQQnfz3ixyyEUDAb22DCPNhcJsSG44J/KSps8Oqo7ssl3cAXOlOnPd56fQk4BREMCg74S/XwxHKO1Icp2BawFD3mpbjxveTUH5JiXxqBml61xRJqyJL7OhE1+3Mj9gk+2jZDejGhtrILqCCQiEiG9+5jVCH+1W/0wkP7kgw0aPaYFdl+qeXv3ZMaRD/+O90JCPf6H+h2tjZE4WQ2IjRN5/1DKpxL3Ye12T/lxHU0LIuRurNA8yoyEzmG32dQr8kegzUZEP/nLfRfELnIpUoZahL9FYxECG+dv6MpClwGAJnVBwejtm23Xwojgv0bX7WpWPhZRoKkDRw==; 31:JuWofZGQQx3KkVt39XZOuQwCj//zlKjXAlkehpGFaEwZO2I0jZbkaP3ezLg+fwzupEm45siVD+Kyc3gJadzex1Zf9rIxoQ+1trjkZjtL3P1Ao6gHcwO+U2JgmEO3Mcom93qmM4+UrZ0c2bq6vGdM8NMG4Ko3ZiYZsjTJJ12y7wAvZ1oAhy/mLskuais8oVC9NqzxC7+vbD3EGZUqTMOeUyAjnA39LdL4iDvT2175rD4= X-MS-TrafficTypeDiagnostic: PS1PR0601MB1884: X-Microsoft-Exchange-Diagnostics: 1; PS1PR0601MB1884; 20:Go73gRGQ1Db+yboHQxPGVVHUZTdx1dMTIpLgEzTIr6PVNnAxOlwIhRUtdLm4xQihKGVeRMErTfnwtn7uTR31zrqFTVpyXLWy45+EjcLFfWxuT+kqdqhESXHI+3j8F/AiqGbEbqsx6x/3hOBG89mhI8LhGHjT+NKL7aejgzxWAfClAf5u0iuEDwwTUDvB82DF08Eve+oKH1fOXyzPFr4QZ7n2tiOYcBHo7A5TvBhGmwKy1X1EGA/23V220lVxnVS5MP81TOKmN1K948l6n87PjYMLmXcUlLjHo5NnaIgd6jJMAznVg0MeVPlgbtBOAxhEAasOvgqC6LoBvofyUsZd+7ZeUmtyGi/5ToFJP2eSBeccoeFtFTHtuJpIVdWQxxQ5AKTEjMLFWGDMbOKFkyaALSM4WZmJTABsYdaInQ67bBPvsTPJ4vnXkTY8L5gTHRoK3mBB9VZA6fY+eVh6prqOi84vFJoKm1AjFSvHVkRPJ8+Mh7Nm8GwYLcxDfqlnrZTI; 4:HYs8pEVWFwK+UnQa+7z92B0KXkAxKduUugPO4LArMW4opeOfB5WgOC23psJdi3sV15oOGVkQm0DLIF2H/Ek14RmbYiRCXnO9jfG4UTFUCft3+OMLRwxzMqQZfIuGADYQD+iJElvYNdR3JBeq2ifCGRvsB3OwaPhdvZSmTfjxPFX7r5ngwVB4yM4dbD4WH6c/63nFN8WnoNYl8iwgDNEuhZwrgS16EM3l7UJUvXM70lL68cLCCf85945SyE+AQgNnQIgg38iljpTD3vG6JEi6ssT4o4eoq2YmVFUdttPEwETNwpmR9kJXpuweL+Ycptlk X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(3231023)(944501138)(6055026)(6041268)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123558120)(6072148)(201708071742011); SRVR:PS1PR0601MB1884; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:PS1PR0601MB1884; X-Forefront-PRVS: 0550778858 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(39380400002)(366004)(346002)(39860400002)(376002)(396003)(189003)(199004)(2906002)(8676002)(81166006)(8936002)(81156014)(6116002)(3846002)(53416004)(478600001)(23726003)(7736002)(6916009)(2950100002)(5660300001)(47776003)(7696005)(52116002)(76176011)(305945005)(59450400001)(386003)(105586002)(16526018)(25786009)(16586007)(316002)(54906003)(58126008)(68736007)(83506002)(36756003)(4326008)(50466002)(69596002)(106356001)(66066001)(86362001)(97736004)(6486002)(53936002)(21314002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:PS1PR0601MB1884; 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; PS1PR0601MB1884; 23:ryxzMurq9qe4Fy/TlxjT2u9X57XAPndJVs8uAI+?= =?us-ascii?Q?HrRuQwAKSoicM7LAQN+gULeNSVP4JRbUa0MGN52HZItY2UPbRBF//1IIzn1D?= =?us-ascii?Q?4/Pt6g3NGC1/vrIe23FRqOdoLdQroTQM6NKL5C7cqfivI16vQT76bRnj4Yj6?= =?us-ascii?Q?3E1N9NCnzn95+NnTSLnxGDiRR0H3Wrlz36g3Jw7ReGf4Sq4nCHJTbxmbum/Z?= =?us-ascii?Q?G5eKr70UIjy5Evf5LMbpuD8c9G20m8y2DjQlJJvoTWHuYzUSCplfE/mlj88A?= =?us-ascii?Q?TrTdY7FmprUWSgbyU2e7S8K+3oK7ek5tLIvms5qjwE3cBaNAEDJcoekf/PJw?= =?us-ascii?Q?EYmqLQOGMD6reXd6gRj3kPOaGEvLBZtZac5o0sDJWASe8iQv0oD7eIyLYP0k?= =?us-ascii?Q?zHWFEe32PgOszTOhlOYfxJPGJfqW/xKKmGXw8zJoRm0sqYyfU3ZIYZ+TTpuA?= =?us-ascii?Q?xyjrGXslEJnmWfB5ePgAhD5q5JV5WHf5fIEKv9a2cruNpG/ZpdnpbOvqe5DT?= =?us-ascii?Q?qZ3jkxS2K1frHIyZ7+awf4LJXwmPO9iNCJ44n/qK4nqe108jGTrTchIvzeal?= =?us-ascii?Q?j/Ka8poEnG1AYrjCZti+RpoDzodjN+TLldnkmT+rQEw/MdWAiGq72AVy+USU?= =?us-ascii?Q?DMdj9ThEjdklPq9oGz0B8wPnbjWkM7dh5hpfG85UlQfOsu7Vdo2DKA5s0fbq?= =?us-ascii?Q?4d68UqOsxwEak8rSpRPk2y2/rtrApIJSTOU+BOS+286Mz9xXYGAqnoUvlVhf?= =?us-ascii?Q?NemvRtzoHf5cht2+zLw8ClDnZOMmLILwlcUud+0Xztk3siJWIzl3Ue0zZfuQ?= =?us-ascii?Q?SUEzFFbzVN9RJdRwbxwuDIKuqYGK1toeuQe1IEQJ/FPd5KJ/Rp+Dq+BRbppt?= =?us-ascii?Q?HFL3dcBqmhhERw49CaVYtAwiqqxBgTih91Ni8TnEW6yvE2j07zoOv3oivXqy?= =?us-ascii?Q?4iYG9jvocovZ9CeIOjWgaiF25uLZmlVplhV5ZkhM6pbiBHUaDN6oNlWdnFFh?= =?us-ascii?Q?uhEQK+ctRRJ5TdM019QD9H4dTq33tESebk6lNQ056na8q/4Xol+SZjqhthqn?= =?us-ascii?Q?Hk9xbtPdduybHo08UvN8joeNjv3jRvSDU70IpWEHhqJbBP3b1p4iXuNKV1fz?= =?us-ascii?Q?6rFzPR3GWeIbB05yU5lE3x04xHRh1C/tCOEdNp9HYSL2PW9964YJqDA=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; PS1PR0601MB1884; 6:bHGbXKuo5kLzAtfsU4FsfMOdvsA01JpgcwsWTAWN+KE5RSx+p33qUbZGukFCnvLrlJhhB/fRxfhBmfu3a8v0a65+VzT/YVUsqC+OHXlLxZZjGyjEuJThqJtJFbF2xXu826WK5G1gMGCYFHs41IDXoiN/4k5gwsCFWv6mPBfRqMPsAgex9mG3YWCfrq2HNyE7FoM5BSuKLDF2r3tY+YeMoTsGbyZcljqfB73aNiUxCNN8clTyalIps++52XGx2JNrsgrm0LLLBn63vYMpjpEY3M/LbX8jAiYA1vA6iJZX5aeSCKjH5vAbZQXL7LLLa9jqylLb605VXnJhEhIIletjKG5JoOBjOFxBq3YOcZjORb0=; 5:LtZcYCGi0axe/gP510SxKmG7GrxzvYUtve1IzwXzfb7F9MB8TRBMK4p3Mfo70vcIkg8IcccQuzyItc80tMGMN2K4iOhBWdczM8/xB1+1IbKOkh2WfRwC/aAW6p1KPEWPohhdCod3W/SvNwPbSbJy47QJeAKMFFhD4rfAf4BAJXI=; 24:vV9s0yRVRfGUfy2z9sLdB9o6oGF8zOWwLABgc2JDVjeYU4FTvzHCFJAHpRf9CqDTK1Dunn8itHh9vUXlcyD9m6vYcU54cZbXxVdl4BzYHP8=; 7:3rbcgf9jNZF9DuVPwLlXDxXAOK0Fd+00dgyykHTo752SAdrOiQOVxZxaUGhqem9Ibq3RAV+/L9wlX06zy7kyspDMwlXPVPBQYQzAPyP8g+kcwulEGsRGmopIe4A4qQF/dIc3XB2GzkTLBvcPbIYI1L42pUMthk29EiXik05cyen/2aR/tMXA9jeSMKQvkWt4VnrrM++bKSrOwOycKa7RvTwqFBIxJasWIK5kBBldJ4SCfpaKM5ak/avM6+Djebq7 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; PS1PR0601MB1884; 20:bU8xIqCsQ16nhfU6S0OdiC+AxxfXkCuJkOgbmf0Y6A29nu/HDwDYeNDxcxjYXweYfQUr+WbahyHyeFm8bd1Jmnxo1kkdRzJbQOjO2iEWdHG+VSy0h7qLbtIIKqj3xRk35Qspt8HDLQTUJI36/emvFEHCyIVY9X4NqQIjCllstzQ= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2018 01:22:59.0361 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 89b6f027-ead9-4b62-1f5a-08d5595b0498 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-Transport-CrossTenantHeadersStamped: PS1PR0601MB1884 Cc: Linux-ALSA , Simon Subject: [alsa-devel] [PATCH 052/187] 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 -> .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..b6e6ad1 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, + .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, };