From patchwork Mon Jan 29 04:34:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 10189193 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 0D7186020C for ; Mon, 29 Jan 2018 04:57:28 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EF56B28768 for ; Mon, 29 Jan 2018 04:57:27 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E326628784; Mon, 29 Jan 2018 04:57:27 +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 A1F9528768 for ; Mon, 29 Jan 2018 04:57:26 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id 87C3A268118; Mon, 29 Jan 2018 05:47:38 +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 E57EB268118; Mon, 29 Jan 2018 05:47:37 +0100 (CET) Received: from relmlie1.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by alsa0.perex.cz (Postfix) with ESMTP id 2B968267C8D for ; Mon, 29 Jan 2018 05:34:05 +0100 (CET) Received: from unknown (HELO relmlir3.idc.renesas.com) ([10.200.68.153]) by relmlie1.idc.renesas.com with ESMTP; 29 Jan 2018 13:34:04 +0900 Received: from relmlii2.idc.renesas.com (relmlii2.idc.renesas.com [10.200.68.66]) by relmlir3.idc.renesas.com (Postfix) with ESMTP id F2FAD5D191; Mon, 29 Jan 2018 13:34:03 +0900 (JST) X-IronPort-AV: E=Sophos;i="5.46,429,1511794800"; d="scan'208";a="270916880" Received: from mail-hk2apc01lp0207.outbound.protection.outlook.com (HELO APC01-HK2-obe.outbound.protection.outlook.com) ([65.55.88.207]) by relmlii2.idc.renesas.com with ESMTP/TLS/AES256-SHA256; 29 Jan 2018 13:34:03 +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=xCDQJMYckjE/DB1G6F2PzehVcJ8I5fl7U8z5qSG75+0=; b=iS7z2GYrx/XZrZeP7BEp6FuRnfA8zOP6/5vQR5PO0K+CQHaf4grQkX/ppfGRnAVQu99QQxbugM4jF669+4//PeyPU5I9dt/iFNzrCeBZ9Sln6eFbj6HcjO+ME1UQL2vHAA74fRVxo11/aKXRNkB8LefXhhXMLqrhRzxsQyISspQ= 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.444.14; Mon, 29 Jan 2018 04:34:01 +0000 Message-ID: <87a7wxwahq.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:34:01 +0000 X-Originating-IP: [211.11.155.138] X-ClientProxiedBy: OSXPR01CA0084.jpnprd01.prod.outlook.com (2603:1096:600:f::30) To KL1PR0601MB1877.apcprd06.prod.outlook.com (2603:1096:802:7::22) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: b838fe16-3bc5-4e1d-ee70-08d566d18574 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:KL1PR0601MB1877; X-Microsoft-Exchange-Diagnostics: 1; KL1PR0601MB1877; 3:FjCpnuU51EYF61swSqBKzRrsR7XGH6qpC7XJg1TVFI+5mW6CqVxnGtmgY2WyZ3ix6ZWFFY1OlkcVTSh1ev5FnGozKb46G2b1oUbJzJKg3FAJaV5arEAy4FxTIKAKFrrh8kHqbpr7pmg7XtNdjpHXNxweNzMdbVlc+Uf4KRXRYcnOxbiDCVGCEWdNR1UE9xm/ijgknVRglXZmLDtP2C5rY9kYgfFn2VYxR0TnDC6q8MrmZIoG4i8L/KlT6cyKyo+B; 25:qpfXGsLO6utGPy9Zsdc2h47GJqF+/FbDZYwwscZkMyPzDjfLcX+HAAshc2Y9aIH55+CrTTVfOdkgxQ9+8a1soZ+dMBfKrhta2bJpSJ9utuD+XarGCj4wVoDsxNgw/X+ymtWAgt1yl43AlETTrOXSXTizIzrIG3Mg5kQ1nUcZ43nV3DyR2n6IDifYlpHwnsKuN0uhNvVtTxjMvx6kS/CMjY1JbLSN3yyUU7lGEtkxSJUhT09ukZoqaUyiZXglT6qdJP5Jry16hOt7RncZuf2eb4tGRMP0eQi4j+7iEg2JcuV5HDJgGftnEtF8aUy1nHCrIzae8EIVjGv8+Iq4EsvqWQ==; 31:5x4PVY5FPVSCKQIF1O6kRnP9y63RnboTSGvbwR9r2AZsojtSBnI4mVwuxxzzH9sc0ELP5jZrHD7/ZM6UueHBrd6Ip/Y1WlBK/SFJYxGUWa6cjwhL7zM7VZqyIegO6Ncbr4d2OT8LO6nMFl4irnuCGJR6VPTBqWfjrhwnGigdZG6H8LkyB92PkHqQarq0wd5dGq1Hi7ymNG4KFXHyH+f4Jr2GUA8U1MIb9RXKaZJxoxM= 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:pMgMmsaFNY8WLC5/v1rJifTCMlZBhLMyuZNF5KalfGKgY7MRth0QHDeUP1rUhQ359C7PEo9RzVIlFIDfQl0SFAP9agXyjKpeykLHVr5g945DVSggrr43AJepZgixKplzoNXSqfhNzT7UZmgumo/ewCqFQz6TcHTOEcB5FfHHaiK0B/u3UA2V15Mh40EfB7+kb2wtP14kQpvORybp0R8uUKNNTe3zH2ZZLMitTC7qq1kx7bTQsx4ylOjJ53UMgb2BOrJX/HvMC4WnxNRhwJ9HHFICE9znI1KVId6X54i50PGR1nX/imF4i2R9UNrq+GgliAFysOmqTqY0WCX6Nm4HCa09F3BDI8vej3FeKbvXB2R1jsOKrQZ8xY+yCdBjEfIumaetHoCt/ccwwLFo8boQ3oinvBPzSObLsyzMnTeFuo+EuUoGrlwP+HLJDL2Mki2AEAuDHy5iCgLQ+vq0Q3nmQBqEIYt8DMYrgWODJrEiEHvNSslfOaHod355OlfTCC/X; 4:RheFY0vpwBVYdmSnktDxYjUwl9TMM1fFSDETm4F27ZaHWnYp2aONrh0uJFQRL+N+oyALeqiVo4SVRWE+dXKpoUUu7gO3ujSWdTtkLW418jzWpe3OhuD8ObzxXM+6F+wjtiM2LsLo//mpI2pLDIrVJn6ePURmYPYnCM/KJ3XRUT5XffSq3Q5HHpg83EKxUneZ0Zby66MqZAOt4hJcUw50OlrGRP0XdLRiW24DxuQhm4EcpckkmzaUDlfevBj4fNrAMa1iphFgnIS02zEH0CSLZOdiYhi2moJiThfnlH+ckJf65FkJudRZAsvNE9Tp4Upa 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)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123564045)(6072148)(201708071742011); SRVR:KL1PR0601MB1877; BCL:0; PCL:0; RULEID:; SRVR:KL1PR0601MB1877; X-Forefront-PRVS: 0567A15835 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(979002)(39860400002)(39380400002)(396003)(376002)(346002)(366004)(199004)(189003)(2906002)(478600001)(25786009)(3846002)(6486002)(23726003)(105586002)(4326008)(6116002)(53936002)(36756003)(53416004)(97736004)(106356001)(7736002)(305945005)(66066001)(83506002)(68736007)(8676002)(26005)(47776003)(5660300001)(59450400001)(386003)(76176011)(6916009)(7696005)(69596002)(8936002)(86362001)(50466002)(81166006)(52116002)(16526019)(2950100002)(16586007)(81156014)(186003)(575784001)(58126008)(316002)(21314002)(16060500001)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1102; SCL:1; SRVR:KL1PR0601MB1877; 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; KL1PR0601MB1877; 23:cYxv79ypWaooqb9qPq9sLhOHlNmNMYeH2ZdY2zB?= =?us-ascii?Q?Ujz7R6pZsBFEiBsPKyc/DZtxi1Jo9wPuOItGEgtwjBgJZ7rTO3X8voOtYgej?= =?us-ascii?Q?0jJsbT9TpKSCdl7z116yL67oTA7G44/Qjvj3GtEJnBXhAga0sAF4M3Mec0UV?= =?us-ascii?Q?PsD494sStm+FjpcZfmwje4IKHl0ukyL1orlCWqAnWbF4LboYYuuwKbYqI4Xp?= =?us-ascii?Q?Sb3KmkJHk7lGOMQUfE/H5VON4W+Rz2rOEYB56QQprtusAzBzuSLXgZBu+OqW?= =?us-ascii?Q?4mZ7M3oelm1YQZbQkTW5KR2qOdlkdShFr12s8rpb7uOsswQ2M9g5pAZlzZBp?= =?us-ascii?Q?HVfh3jxdjV3K40yb2cEsb6WxYlKqyIxwB0FsJZsDt3BzzMhF2dPvUu2S04f8?= =?us-ascii?Q?4wdzLX7RZB7iyQfzDVrv+ulUfYGX2Y9NIw3xnTL1xRB49ukrkQGzYI7hwgKu?= =?us-ascii?Q?JZdmdqi938j/AdpFvH/oJ/CQvaIMMJXBuWo0350v9QY/8xItSoEmkzMbJDll?= =?us-ascii?Q?AB/9R8U9E+BpM4+V8X9hIQlYHp9YdCfXnhNFiYb9TcI5SRHBGKWBAerVqD3I?= =?us-ascii?Q?f8/1dWcfOaW5phZaQoRlbZGCm2IMbjGJJQzIHpsiw8BSfNhIzKpNn6Cy00i6?= =?us-ascii?Q?QlCVfqK+LC+TnHlstJ2ihyRgqqjlIjomqKXVhg0BgP+J+LRVGpGDGCLb4cRD?= =?us-ascii?Q?wFBCbFV4/3SovJ2U52N6JIFBZJpsZWC8mbScKBKnkCaIsXOnJeB3s7rYx0nU?= =?us-ascii?Q?mR0WLY4LsebOs0+Ov7k5bvp2CsllwiVsqR1jkC8aeBdqBOE7xT/8HzAbpm4M?= =?us-ascii?Q?yOqzo7kycQBk8vfQqHdi+tAc3OQBgdwNeGe+iSuz2UEMIoUvvI7xNnkHyI8S?= =?us-ascii?Q?ep07t14vRdpEHRskqGNLzYnvrGMZNLjzw7UtgBDc2Dq27AU6YucE0xqyq79E?= =?us-ascii?Q?CMH0CtX4qoicknmKQfVboEAlDKXsMRMKwYFUtBTDmFe417dSjWijCAhEkuSd?= =?us-ascii?Q?Lvep+0DVoSyDZvRrsqrI2M1ol2Snm9i/JWZFE5B+v3l/loSDKCGHfSmDbjTG?= =?us-ascii?Q?ujuZryqsuRdfSSBmAEz+qh5JTCtZc4j4taAxoDCPZErB4gdx2SWAa+O0txdf?= =?us-ascii?Q?deN3Q0MEsru4xkbhc/sfuFePQJC7cg221Pp3/Hcrn17gtgyJg2WE7OyGnn0/?= =?us-ascii?Q?Wq6eeFbGR5BwrkW+wHfaYJ5zGeorZmU3ZErB1pw4KKPPTFpG5TLTRVieGsaG?= =?us-ascii?Q?yJVJ2xO/WfNYmcaT4xs2a15w6HPsEcEIWDniEnzsrEdDm0WZy/9QlNSs9j8d?= =?us-ascii?Q?yIw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; KL1PR0601MB1877; 6:9U4SiUEMHzNT2fowtU49ifc0J7z75y9velYvJ6HqHwX88T+PTIx3beXHXT5g/fi8FtbzVAE33bfjVUVYylapcWoYiv22TH4CQRtBEe3NL6WwUfNFMR+kXdszXlK0cgDH68ffv25XCWBLDTS2m1H3RepqCpTwewmUaeoWDjCWfl+HBo7Nbk6b0ot49+B+1w7N2LPgpHsnu/gcHLaSZ+pXmxyky8GCUBc5MTfd9XLyzFmFvN/58IJKrMP0rcK8CHPfM8dnVK37soTrFVzxtuKCsR29s23QbQefxIkhOIjXTudztwM7jS6/m3r/TTYIUkTzEgOfWfRPHe+XK/v0RXYE36ocEerri56Onn8d/nQ5TtE=; 5:oBtZ/uJeqZQx+MjpsVVRPGR0ZGn0+57U2zIbcn/4hoc4APhWQFBrWfbX9HM2iCKW+06KDkbomtbU9YG6oduQQOFla6RopUh2ssqrN8dCmQrWc0VCRPKzfkjVgSz6F3vnjTX7mhk6SahJamdumfG+Prg3UejVthAmqjcM9kr0EPs=; 24:3EM20UZ9xuXI22EMHyR5eDLMg98IsVf/4ZTCCbVr7B6VZ1cyVpvg5PIJ7e3CSMRisREAqC2WaDh7wLCd+FF6tt8EvvlrmUs9hC+ZF0qEYIs=; 7:86dUfXt2EAuNvk5uOTEITdDHIxzZycbsY99e3q9C60iqYV/qV0pHeevDM3J9eVwiYfCQDiFH91VAbL6nag6rRjiXL+HBGTlC2Qfk3Ukmpavr1S5sT7ebYIz1BrRy0z8fM0x5CrBJFfhBSMh//rAYQJMGunVeluJEXbwnPDixOjHmq1Ocf8GyzzLVqgcC3sS1Yxg/C412VS2e2iM5JaIxTvaniTuHSIZZe0RoMU+6GOFyIucxWBwvHeEYKA+ZXsnf SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; KL1PR0601MB1877; 20:ny+orFgnezkONEMEdBAXqcDWMJUjiTPPW2x7d/2kJ0YObBA4l0PbI2C2ebXRpTweDgeut6VvQvmPQYte3LPh+1vWRQR7Mm2p6MfZXWLKpMQDVpbKkj+R2ZhRYZ/qsc0e//ADb1FHiPqOIuzGeWH5XCQMMwC2PMqsaYDN2ZwBUDU= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jan 2018 04:34:01.1805 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b838fe16-3bc5-4e1d-ee70-08d566d18574 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 Subject: [alsa-devel] [PATCH v2 155/186] 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 -> .use_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..981a329 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, + .use_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, };