From patchwork Mon Jan 29 04:03:34 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 10189041 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 B075160375 for ; Mon, 29 Jan 2018 04:32:09 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9CCD828783 for ; Mon, 29 Jan 2018 04:32:09 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 913F028786; Mon, 29 Jan 2018 04:32:09 +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 E863428784 for ; Mon, 29 Jan 2018 04:32:07 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id 0E717267A23; Mon, 29 Jan 2018 05:25:01 +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 032DC2677C9; Mon, 29 Jan 2018 05:24:55 +0100 (CET) Received: from relmlie2.idc.renesas.com (relmlor3.renesas.com [210.160.252.173]) by alsa0.perex.cz (Postfix) with ESMTP id 28F17267809 for ; Mon, 29 Jan 2018 05:03:38 +0100 (CET) Received: from unknown (HELO relmlir3.idc.renesas.com) ([10.200.68.153]) by relmlie2.idc.renesas.com with ESMTP; 29 Jan 2018 13:03:37 +0900 Received: from relmlii1.idc.renesas.com (relmlii1.idc.renesas.com [10.200.68.65]) by relmlir3.idc.renesas.com (Postfix) with ESMTP id E75F152816; Mon, 29 Jan 2018 13:03:36 +0900 (JST) X-IronPort-AV: E=Sophos;i="5.46,429,1511794800"; d="scan'208";a="269593632" Received: from mail-hk2apc01lp0207.outbound.protection.outlook.com (HELO APC01-HK2-obe.outbound.protection.outlook.com) ([65.55.88.207]) by relmlii1.idc.renesas.com with ESMTP/TLS/AES256-SHA256; 29 Jan 2018 13:03:36 +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=wuwGdTlmAcC8DZESL1OqaRrFIH3Q4hfHjRekPc+uCsM=; b=ALBnP2HuItaOfSVosMNEMt+sEkl6fJdOuIJlZJipx+V+J/GEiopA1LX4d+RFrAJhyBvavZvRKdSXOda1lw8XyeRoLearUBxt5fLIxk0yH3kaXUr89YQgSntHHriNJ+vykMtSVIZYotU+B2sy/qhjwSWnR4KKw0yJ9MEeSmgUukg= 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 HK2PR0601MB1874.apcprd06.prod.outlook.com (2603:1096:202:a::18) 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:03:34 +0000 Message-ID: <87vaflz51b.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:03:34 +0000 X-Originating-IP: [211.11.155.138] X-ClientProxiedBy: OS2PR01CA0097.jpnprd01.prod.outlook.com (2603:1096:602:1::15) To HK2PR0601MB1874.apcprd06.prod.outlook.com (2603:1096:202:a::18) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: c8d4d35a-91a2-4bef-7e40-08d566cd44b2 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:HK2PR0601MB1874; X-Microsoft-Exchange-Diagnostics: 1; HK2PR0601MB1874; 3:ZwyotP+7uNRtfZHNXgPBSA4PW/xoWkDy5kjPjsR0ap7b+neyEDJ1lpA9kvxTbg0r7ujrAg8VEgDJ94iegL6mu7FAcrNP+eK7oCKzxQ0yw9x/POVKBhVmsYLEjnD4ZsrsBGuhkPwugdSn3bgFy6SUJWHgflu1kodHC0AuUsHZvkn1GlmABF5o4XOcpng6Nmj9jWr7CADhG++N0o6J/+fY5qcLPfKMmKgtDm008Dj+R/q8hT1JWGxyuu+pQ7wBuQmg; 25:1PUSN/h0Gi6cw31VV4hKCGBXWI20YFrT1r4Yo72zaIHKhg+W4D4RQ6WBeXGjJiTKTHpf0hFbR0UzBmf4RHQxyZbDfwb9RzWo5a4YUcU3707DN1XeJ6aWtu1rnjQJd92Zs+qiikNOuCmMZa9ZQWx5B3UPB9K058NWgl9VQuepS139APilXYOfKAcX5mjCrPx1MiI6E2ae/glDU6wXgPpBMkjDbAzUP6bRsReCLb8TiClXe3k5l4TiivJ7wIaxq4oMKpivrd+GfKoSS0VQevavFxgOLso3Q9Xyfn/FyOd8OPOPHJaSdZIsIrOybZg9zc23fkZzG0a6s9cS50yRlqjCMA==; 31:Qs/KsqyDtijzhrFcVtZ5QgyQbrc+ks8AxVpOBoXamWvT1tuTQDF/KNYMau5WjuP8S8w17kcrjiOpfEoJZucODFzZQ3sPA5AVUYTOkeHWK/Z0Y0uo6yF3KKhHxS0y/dBrr3iNHaCy8PJoJ4+CtWfSmc+BrdtnbcTX/geZZx+vvE5MI6W7WMqMGhoxFOnPkZmPe7hFCRyARu6j7ZDhwPGsPnhq8oNzJk9AYR6zEm6JHtw= X-MS-TrafficTypeDiagnostic: HK2PR0601MB1874: X-Microsoft-Exchange-Diagnostics: 1; HK2PR0601MB1874; 20:XgI6M14MVaUuDFs7UwSL7uvCL9wXni2iLc4ZZW4DM6mnUC0sFHvx55aWf6EORDfE3Xi6hrZ+9dAnTd9inOJu8UK7rBYbqSNWLLGcPs8TbWZXCOX3GO6EBFAsjdj6IgwgPLU4fq5CkqtVKA0Ak66kjykspxE4G/GYVPrzz687tj5Ty397IpW547yIHelMvpFqKyvHIJqrW+37mJ7jr8463UM7z+iJbXc3WrdvdTNytbpNpC+QaL5Joaud0KUbkfs6T3GF8fFwvI84/idFDh+OSLdF5lTDFlofZKkSLot2LLHBLna0MlzWUpfDx6sCGcJNS134T3pbeNqT4iSAHVP1uEIN3avNLRtc29jJYFNEahcU9iQZerAkykBIqo8Un6rlDUSzMKpXpjPo6Y1Mr54xgpEX5TT0M1fPLIAxQ5J0hifnccey8d/kSbtPz4BtSvgEfqKcE0/fXTnibXnyTpKmkExi/WQc2iuHuUZ+Yfuwm9w77VcoKVA0ROOyRHo4hPSE; 4:uWV+THVvmyUsA6H+j4i+KirJtfJQQtttVI42+97T75DT0PDIgNdScFUPwXlZpdl4SF8K9sjKUQ/ubWoC6KLst2rdMWzt8Ik5CzKLnTopBt5DOOLIU6zTQg1gyyXLKlpCLbd9dGa4J9QEslM6RIc/94+MVBFfCJVTx/0SIVo0KQomfL5OzB8wSh9TIbLlo1E1QYoLtr1Czp4Veeg9cDz4p1bsLmDByn4eRTYTgZTNkePIdz55R//qK9hlbpgQGMTme3JdvYGlYI16kn5/48x/+djy/ivWZSLIWELtAX91M4aFYzVrPTj7JqBJmHbp1lXm 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)(3002001)(10201501046)(6055026)(6041288)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123558120)(20161123562045)(6072148)(201708071742011); SRVR:HK2PR0601MB1874; BCL:0; PCL:0; RULEID:; SRVR:HK2PR0601MB1874; X-Forefront-PRVS: 0567A15835 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(39860400002)(39380400002)(346002)(366004)(396003)(376002)(189003)(199004)(53936002)(53416004)(97736004)(59450400001)(6486002)(47776003)(106356001)(7736002)(305945005)(7696005)(76176011)(52116002)(4326008)(25786009)(386003)(50466002)(36756003)(58126008)(8676002)(81166006)(81156014)(68736007)(8936002)(105586002)(16526019)(186003)(26005)(83506002)(316002)(16586007)(2950100002)(6916009)(5660300001)(478600001)(23726003)(69596002)(86362001)(3846002)(2906002)(66066001)(6116002)(21314002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:HK2PR0601MB1874; 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; HK2PR0601MB1874; 23:44X1G/N9NVVaSmyEl+B7dNenZnPDfrfRHVX3tpC?= =?us-ascii?Q?ihf72AYEdDJ/9/q2+mQGtDH7Lm6NHkw9x73FBBRHhyheNJvI9vXLM9m0L9fe?= =?us-ascii?Q?x+4PumHfARSzgHIV/tRgMV7yyOL4nPZgvmsJKWkXlu6AcxkFPr6i5TnflDHE?= =?us-ascii?Q?2HfUqYTW4B+d1K4bBrsK3iwi7PmfHKMHKyv/FSeZy3D1jg9h45diIMwdKXNX?= =?us-ascii?Q?oddCu9te1y1zm04bU7iuS8vekHMbH1YJWHA8Wkm2fRJkVBnsEvYBHOtqrgMu?= =?us-ascii?Q?Wi85EWYWkKFpYBsLxwLvY2s2b0zsNEHwOQwryQsksCGK8YnAETIEztH0pyC4?= =?us-ascii?Q?cyYTAcE8kUVknhP1vh0RhGTPJnAh9yEfG0vKQ+UtEhmA2c/TUHTP80MqBtcp?= =?us-ascii?Q?y0XDK4A4HYI01GEyky2V/2b5Bhc5+CUqVuWmJzV4Kqn4glYLe6jWUFhWzj8h?= =?us-ascii?Q?Jh3pq3AgJkJpFIA8CPfv4ZLeiuBACLrGQrDGX5nqu+qexRV9cwYo6xmCscUZ?= =?us-ascii?Q?1y2eiD7g1nibeQv79CDTTy2LqvYp5B5DAhTNwt5nBG9vu8uRt6tC2qUp+wYE?= =?us-ascii?Q?hiGOKMed5hlvnLI3e/Ivg88C5CyZZPPa6d2VVKxikgc+4rCt4paoNFW5trFs?= =?us-ascii?Q?26sEFWg3pmzmaOEBTRKBYjxKEKY1FtsLETmzkPPNrpEUzL0wBUOMsbtNdguz?= =?us-ascii?Q?Wz2mZse//bS421Ja5kOZkteoV2yuzhexo4dVk+FDm/NbcqAu+fouHh5IPKdJ?= =?us-ascii?Q?1p+Y96orf2jg0VWQpcty346EEBAZkA4uyuSV8JmRYvhrVKa76DYElKLlUSjQ?= =?us-ascii?Q?hEmzaGvoqmYRzNIKxJFRhyp/Wpt4VqDSQavsCvxWt4zO7timH5SH9glbG91H?= =?us-ascii?Q?oq3wXrFVjEdNm1JjgmBADeLTc1CtGBC4zSn1HyQcJrZMu/K/HOCJMOMn0aDq?= =?us-ascii?Q?bDPYevCEUCGhduezJ/87+M5AW3xmyd0cKbKZB2RemBnWeT5HTE7pR4EYsGYs?= =?us-ascii?Q?/rsPjSm3F3+A+uGXKTb5CKxJPOFFUO6XmdoPtOoIFFHRtkRFNcvzA00Z1spF?= =?us-ascii?Q?W3hy09WoKZlgIe639UTlzG7DC52gwEdJ4ww8aQvptCP/thd7cJ/Qn5mQBIZn?= =?us-ascii?Q?hMt3sbnOqdMyX1SSfBawHz4IrxpyeviKejIQmz2m3MhMS1VslcFyCKXyRMUx?= =?us-ascii?Q?6YnWocbKSGyARVq0=3D?= X-Microsoft-Exchange-Diagnostics: 1; HK2PR0601MB1874; 6:XrSg9i7H6VLxqKzEIvq3tOyeKx7KrmN44o2q4y+UK6O2OO3A2fXHS97+SFvZ39Acz272HS96n9VsxPx8fp8Iuz3ctn9gt+mdCPvgqxoQW1NuVjpM7be09aHi2quKeCXe4E5QT8tlwAyoL0AvjahZBkRGwES5ehTxTMv4Lqxc594q3ZzRIE2V3h6rhUYQVmk+7J6Pv8eLYv1VSK2AVw165RAmqI6anXd//jRWWduZODMjorgG71yVbB/Oh+M6DPceqFqJ4B9iLNqXRBwLFkGARoFepDyefkWo07xmRSPfAt6D380+BDstdZf1jKen+ojgO7uFlxXGr9+QMok5Stzp5kzkE7gdwFBE3s6MUce3Lbo=; 5:cGYGwa7Bmc88dhBCH1AqpJpgBn5KLaSy+VwyS7AkurbI+JcHOxDWq7lba/lE3XQmfZoqEWcMuxpNH/JaC6N70656+OyCrZ8IEEPOWFNcg+zTQ+PBXXGvjQgMmej+X0n5tJh/w01vSziYu8UWOfehOfoJrg154jXMdKgidBPDCsI=; 24:xs1UL6SgHGIxjInMVIKSFeptFUWX7cIqKXYI1JobwYDT/H1k0eNY9/zmuwAap6B9W7dutdKft6ioRpYX7Xlfx28CarbceqTxUxSejhNtIo4=; 7:EKY+SPu9zocUD5iPTAJcmC48FbOZoMEmgvV85ydRSK8VLc9HqbSTXlFmB0Q1xKUlzoMXmyAfaaVGUr4frWUkUsXepIEdTs7Ab6WfeOhhFPZNff8wSR8n2uPiZesBpzbmMg40tO84Pv0+or7BeUG5nn783BTGBJiI8Y7jb+HDDrrRHcZWYNCecltT3eTP5SRLwwirYv7K8bQflcGCj2J2gDSke9Va2dlX5NrFr+/FaqjnQLQJfZrHvpTC/NFP9bl7 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HK2PR0601MB1874; 20:B4ZczTrjyh+yhyY34WK2Z3WNQSFMC3x51ps0p/2HmUXFKLZ2dIz9xWJtIcsH5dGrKhPjIpyPezSKnogO+WpWmCuCtfAI2LGQJmohphOmdacP60DteCV2jMfiBIbDehKBquRfPe7ptiaA2j17VOEtAnNtCiuRpENOJVZiolMnawY= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jan 2018 04:03:34.6389 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c8d4d35a-91a2-4bef-7e40-08d566cd44b2 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK2PR0601MB1874 Cc: Linux-ALSA Subject: [alsa-devel] [PATCH v2 090/186] ASoC: da9055: 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/da9055.c | 186 ++++++++++++++++++++++------------------------ 1 file changed, 90 insertions(+), 96 deletions(-) diff --git a/sound/soc/codecs/da9055.c b/sound/soc/codecs/da9055.c index bd7faae..afdf90c 100644 --- a/sound/soc/codecs/da9055.c +++ b/sound/soc/codecs/da9055.c @@ -451,7 +451,7 @@ static SOC_ENUM_SINGLE_DECL(da9055_release_rate, static SOC_ENUM_SINGLE_DECL(da9055_hold_time, DA9055_ALC_CTRL3, 0, da9055_hold_time_txt); -static int da9055_get_alc_data(struct snd_soc_codec *codec, u8 reg_val) +static int da9055_get_alc_data(struct snd_soc_component *component, u8 reg_val) { int mid_data, top_data; int sum = 0; @@ -460,17 +460,17 @@ static int da9055_get_alc_data(struct snd_soc_codec *codec, u8 reg_val) for (iteration = 0; iteration < DA9055_ALC_AVG_ITERATIONS; iteration++) { /* Select the left or right channel and capture data */ - snd_soc_write(codec, DA9055_ALC_CIC_OP_LVL_CTRL, reg_val); + snd_soc_component_write(component, DA9055_ALC_CIC_OP_LVL_CTRL, reg_val); /* Select middle 8 bits for read back from data register */ - snd_soc_write(codec, DA9055_ALC_CIC_OP_LVL_CTRL, + snd_soc_component_write(component, DA9055_ALC_CIC_OP_LVL_CTRL, reg_val | DA9055_ALC_DATA_MIDDLE); - mid_data = snd_soc_read(codec, DA9055_ALC_CIC_OP_LVL_DATA); + mid_data = snd_soc_component_read32(component, DA9055_ALC_CIC_OP_LVL_DATA); /* Select top 8 bits for read back from data register */ - snd_soc_write(codec, DA9055_ALC_CIC_OP_LVL_CTRL, + snd_soc_component_write(component, DA9055_ALC_CIC_OP_LVL_CTRL, reg_val | DA9055_ALC_DATA_TOP); - top_data = snd_soc_read(codec, DA9055_ALC_CIC_OP_LVL_DATA); + top_data = snd_soc_component_read32(component, DA9055_ALC_CIC_OP_LVL_DATA); sum += ((mid_data << 8) | (top_data << 16)); } @@ -481,7 +481,7 @@ static int da9055_get_alc_data(struct snd_soc_codec *codec, u8 reg_val) static int da9055_put_alc_sw(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { - struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); + struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol); u8 reg_val, adc_left, adc_right, mic_left, mic_right; int avg_left_data, avg_right_data, offset_l, offset_r; @@ -492,31 +492,31 @@ static int da9055_put_alc_sw(struct snd_kcontrol *kcontrol, */ /* Save current values from Mic control registers */ - mic_left = snd_soc_read(codec, DA9055_MIC_L_CTRL); - mic_right = snd_soc_read(codec, DA9055_MIC_R_CTRL); + mic_left = snd_soc_component_read32(component, DA9055_MIC_L_CTRL); + mic_right = snd_soc_component_read32(component, DA9055_MIC_R_CTRL); /* Mute Mic PGA Left and Right */ - snd_soc_update_bits(codec, DA9055_MIC_L_CTRL, + snd_soc_component_update_bits(component, DA9055_MIC_L_CTRL, DA9055_MIC_L_MUTE_EN, DA9055_MIC_L_MUTE_EN); - snd_soc_update_bits(codec, DA9055_MIC_R_CTRL, + snd_soc_component_update_bits(component, DA9055_MIC_R_CTRL, DA9055_MIC_R_MUTE_EN, DA9055_MIC_R_MUTE_EN); /* Save current values from ADC control registers */ - adc_left = snd_soc_read(codec, DA9055_ADC_L_CTRL); - adc_right = snd_soc_read(codec, DA9055_ADC_R_CTRL); + adc_left = snd_soc_component_read32(component, DA9055_ADC_L_CTRL); + adc_right = snd_soc_component_read32(component, DA9055_ADC_R_CTRL); /* Enable ADC Left and Right */ - snd_soc_update_bits(codec, DA9055_ADC_L_CTRL, + snd_soc_component_update_bits(component, DA9055_ADC_L_CTRL, DA9055_ADC_L_EN, DA9055_ADC_L_EN); - snd_soc_update_bits(codec, DA9055_ADC_R_CTRL, + snd_soc_component_update_bits(component, DA9055_ADC_R_CTRL, DA9055_ADC_R_EN, DA9055_ADC_R_EN); /* Calculate average for Left and Right data */ /* Left Data */ - avg_left_data = da9055_get_alc_data(codec, + avg_left_data = da9055_get_alc_data(component, DA9055_ALC_CIC_OP_CHANNEL_LEFT); /* Right Data */ - avg_right_data = da9055_get_alc_data(codec, + avg_right_data = da9055_get_alc_data(component, DA9055_ALC_CIC_OP_CHANNEL_RIGHT); /* Calculate DC offset */ @@ -524,22 +524,22 @@ static int da9055_put_alc_sw(struct snd_kcontrol *kcontrol, offset_r = -avg_right_data; reg_val = (offset_l & DA9055_ALC_OFFSET_15_8) >> 8; - snd_soc_write(codec, DA9055_ALC_OFFSET_OP2M_L, reg_val); + snd_soc_component_write(component, DA9055_ALC_OFFSET_OP2M_L, reg_val); reg_val = (offset_l & DA9055_ALC_OFFSET_17_16) >> 16; - snd_soc_write(codec, DA9055_ALC_OFFSET_OP2U_L, reg_val); + snd_soc_component_write(component, DA9055_ALC_OFFSET_OP2U_L, reg_val); reg_val = (offset_r & DA9055_ALC_OFFSET_15_8) >> 8; - snd_soc_write(codec, DA9055_ALC_OFFSET_OP2M_R, reg_val); + snd_soc_component_write(component, DA9055_ALC_OFFSET_OP2M_R, reg_val); reg_val = (offset_r & DA9055_ALC_OFFSET_17_16) >> 16; - snd_soc_write(codec, DA9055_ALC_OFFSET_OP2U_R, reg_val); + snd_soc_component_write(component, DA9055_ALC_OFFSET_OP2U_R, reg_val); /* Restore original values of ADC control registers */ - snd_soc_write(codec, DA9055_ADC_L_CTRL, adc_left); - snd_soc_write(codec, DA9055_ADC_R_CTRL, adc_right); + snd_soc_component_write(component, DA9055_ADC_L_CTRL, adc_left); + snd_soc_component_write(component, DA9055_ADC_R_CTRL, adc_right); /* Restore original values of Mic control registers */ - snd_soc_write(codec, DA9055_MIC_L_CTRL, mic_left); - snd_soc_write(codec, DA9055_MIC_R_CTRL, mic_right); + snd_soc_component_write(component, DA9055_MIC_L_CTRL, mic_left); + snd_soc_component_write(component, DA9055_MIC_R_CTRL, mic_right); } return snd_soc_put_volsw(kcontrol, ucontrol); @@ -1052,8 +1052,8 @@ static int da9055_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 da9055_priv *da9055 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = dai->component; + struct da9055_priv *da9055 = snd_soc_component_get_drvdata(component); u8 aif_ctrl, fs; u32 sysclk; @@ -1075,7 +1075,7 @@ static int da9055_hw_params(struct snd_pcm_substream *substream, } /* Set AIF format */ - snd_soc_update_bits(codec, DA9055_AIF_CTRL, DA9055_AIF_WORD_LENGTH_MASK, + snd_soc_component_update_bits(component, DA9055_AIF_CTRL, DA9055_AIF_WORD_LENGTH_MASK, aif_ctrl); switch (params_rate(params)) { @@ -1125,7 +1125,7 @@ static int da9055_hw_params(struct snd_pcm_substream *substream, if (da9055->mclk_rate) { /* PLL Mode, Write actual FS */ - snd_soc_write(codec, DA9055_SR, fs); + snd_soc_component_write(component, DA9055_SR, fs); } else { /* * Non-PLL Mode @@ -1134,24 +1134,24 @@ static int da9055_hw_params(struct snd_pcm_substream *substream, * to derive its sys clk. As sys clk has to be 256 * Fs, we * need to write constant sample rate i.e. 48KHz. */ - snd_soc_write(codec, DA9055_SR, DA9055_SR_48000); + snd_soc_component_write(component, DA9055_SR, DA9055_SR_48000); } if (da9055->mclk_rate && (da9055->mclk_rate != sysclk)) { /* PLL Mode */ if (!da9055->master) { /* PLL slave mode, enable PLL and also SRM */ - snd_soc_update_bits(codec, DA9055_PLL_CTRL, + snd_soc_component_update_bits(component, DA9055_PLL_CTRL, DA9055_PLL_EN | DA9055_PLL_SRM_EN, DA9055_PLL_EN | DA9055_PLL_SRM_EN); } else { /* PLL master mode, only enable PLL */ - snd_soc_update_bits(codec, DA9055_PLL_CTRL, + snd_soc_component_update_bits(component, DA9055_PLL_CTRL, DA9055_PLL_EN, DA9055_PLL_EN); } } else { /* Non PLL Mode, disable PLL */ - snd_soc_update_bits(codec, DA9055_PLL_CTRL, DA9055_PLL_EN, 0); + snd_soc_component_update_bits(component, DA9055_PLL_CTRL, DA9055_PLL_EN, 0); } return 0; @@ -1160,8 +1160,8 @@ static int da9055_hw_params(struct snd_pcm_substream *substream, /* Set DAI mode and Format */ static int da9055_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) { - struct snd_soc_codec *codec = codec_dai->codec; - struct da9055_priv *da9055 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = codec_dai->component; + struct da9055_priv *da9055 = snd_soc_component_get_drvdata(component); u8 aif_clk_mode, aif_ctrl, mode; switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { @@ -1180,7 +1180,7 @@ static int da9055_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) } /* Don't allow change of mode if PLL is enabled */ - if ((snd_soc_read(codec, DA9055_PLL_CTRL) & DA9055_PLL_EN) && + if ((snd_soc_component_read32(component, DA9055_PLL_CTRL) & DA9055_PLL_EN) && (da9055->master != mode)) return -EINVAL; @@ -1207,27 +1207,27 @@ static int da9055_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) /* By default only 32 BCLK per WCLK is supported */ aif_clk_mode |= DA9055_AIF_BCLKS_PER_WCLK_32; - snd_soc_update_bits(codec, DA9055_AIF_CLK_MODE, + snd_soc_component_update_bits(component, DA9055_AIF_CLK_MODE, (DA9055_AIF_CLK_MODE_MASK | DA9055_AIF_BCLK_MASK), aif_clk_mode); - snd_soc_update_bits(codec, DA9055_AIF_CTRL, DA9055_AIF_FORMAT_MASK, + snd_soc_component_update_bits(component, DA9055_AIF_CTRL, DA9055_AIF_FORMAT_MASK, aif_ctrl); return 0; } static int da9055_mute(struct snd_soc_dai *dai, int mute) { - struct snd_soc_codec *codec = dai->codec; + struct snd_soc_component *component = dai->component; if (mute) { - snd_soc_update_bits(codec, DA9055_DAC_L_CTRL, + snd_soc_component_update_bits(component, DA9055_DAC_L_CTRL, DA9055_DAC_L_MUTE_EN, DA9055_DAC_L_MUTE_EN); - snd_soc_update_bits(codec, DA9055_DAC_R_CTRL, + snd_soc_component_update_bits(component, DA9055_DAC_R_CTRL, DA9055_DAC_R_MUTE_EN, DA9055_DAC_R_MUTE_EN); } else { - snd_soc_update_bits(codec, DA9055_DAC_L_CTRL, + snd_soc_component_update_bits(component, DA9055_DAC_L_CTRL, DA9055_DAC_L_MUTE_EN, 0); - snd_soc_update_bits(codec, DA9055_DAC_R_CTRL, + snd_soc_component_update_bits(component, DA9055_DAC_R_CTRL, DA9055_DAC_R_MUTE_EN, 0); } @@ -1240,8 +1240,8 @@ static int da9055_mute(struct snd_soc_dai *dai, int mute) static int da9055_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 da9055_priv *da9055 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = codec_dai->component; + struct da9055_priv *da9055 = snd_soc_component_get_drvdata(component); switch (clk_id) { case DA9055_CLKSRC_MCLK: @@ -1283,13 +1283,13 @@ static int da9055_set_dai_sysclk(struct snd_soc_dai *codec_dai, static int da9055_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id, int source, unsigned int fref, unsigned int fout) { - struct snd_soc_codec *codec = codec_dai->codec; - struct da9055_priv *da9055 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = codec_dai->component; + struct da9055_priv *da9055 = snd_soc_component_get_drvdata(component); u8 pll_frac_top, pll_frac_bot, pll_integer, cnt; /* Disable PLL before setting the divisors */ - snd_soc_update_bits(codec, DA9055_PLL_CTRL, DA9055_PLL_EN, 0); + snd_soc_component_update_bits(component, DA9055_PLL_CTRL, DA9055_PLL_EN, 0); /* In slave mode, there is only one set of divisors */ if (!da9055->master && (fout != 2822400)) @@ -1312,9 +1312,9 @@ static int da9055_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id, goto pll_err; /* Write PLL dividers */ - snd_soc_write(codec, DA9055_PLL_FRAC_TOP, pll_frac_top); - snd_soc_write(codec, DA9055_PLL_FRAC_BOT, pll_frac_bot); - snd_soc_write(codec, DA9055_PLL_INTEGER, pll_integer); + snd_soc_component_write(component, DA9055_PLL_FRAC_TOP, pll_frac_top); + snd_soc_component_write(component, DA9055_PLL_FRAC_BOT, pll_frac_bot); + snd_soc_component_write(component, DA9055_PLL_INTEGER, pll_integer); return 0; pll_err: @@ -1353,7 +1353,7 @@ static int da9055_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id, .symmetric_rates = 1, }; -static int da9055_set_bias_level(struct snd_soc_codec *codec, +static int da9055_set_bias_level(struct snd_soc_component *component, enum snd_soc_bias_level level) { switch (level) { @@ -1361,48 +1361,48 @@ static int da9055_set_bias_level(struct snd_soc_codec *codec, case SND_SOC_BIAS_PREPARE: break; case SND_SOC_BIAS_STANDBY: - if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) { + if (snd_soc_component_get_bias_level(component) == SND_SOC_BIAS_OFF) { /* Enable VMID reference & master bias */ - snd_soc_update_bits(codec, DA9055_REFERENCES, + snd_soc_component_update_bits(component, DA9055_REFERENCES, DA9055_VMID_EN | DA9055_BIAS_EN, DA9055_VMID_EN | DA9055_BIAS_EN); } break; case SND_SOC_BIAS_OFF: /* Disable VMID reference & master bias */ - snd_soc_update_bits(codec, DA9055_REFERENCES, + snd_soc_component_update_bits(component, DA9055_REFERENCES, DA9055_VMID_EN | DA9055_BIAS_EN, 0); break; } return 0; } -static int da9055_probe(struct snd_soc_codec *codec) +static int da9055_probe(struct snd_soc_component *component) { - struct da9055_priv *da9055 = snd_soc_codec_get_drvdata(codec); + struct da9055_priv *da9055 = snd_soc_component_get_drvdata(component); /* Enable all Gain Ramps */ - snd_soc_update_bits(codec, DA9055_AUX_L_CTRL, + snd_soc_component_update_bits(component, DA9055_AUX_L_CTRL, DA9055_GAIN_RAMPING_EN, DA9055_GAIN_RAMPING_EN); - snd_soc_update_bits(codec, DA9055_AUX_R_CTRL, + snd_soc_component_update_bits(component, DA9055_AUX_R_CTRL, DA9055_GAIN_RAMPING_EN, DA9055_GAIN_RAMPING_EN); - snd_soc_update_bits(codec, DA9055_MIXIN_L_CTRL, + snd_soc_component_update_bits(component, DA9055_MIXIN_L_CTRL, DA9055_GAIN_RAMPING_EN, DA9055_GAIN_RAMPING_EN); - snd_soc_update_bits(codec, DA9055_MIXIN_R_CTRL, + snd_soc_component_update_bits(component, DA9055_MIXIN_R_CTRL, DA9055_GAIN_RAMPING_EN, DA9055_GAIN_RAMPING_EN); - snd_soc_update_bits(codec, DA9055_ADC_L_CTRL, + snd_soc_component_update_bits(component, DA9055_ADC_L_CTRL, DA9055_GAIN_RAMPING_EN, DA9055_GAIN_RAMPING_EN); - snd_soc_update_bits(codec, DA9055_ADC_R_CTRL, + snd_soc_component_update_bits(component, DA9055_ADC_R_CTRL, DA9055_GAIN_RAMPING_EN, DA9055_GAIN_RAMPING_EN); - snd_soc_update_bits(codec, DA9055_DAC_L_CTRL, + snd_soc_component_update_bits(component, DA9055_DAC_L_CTRL, DA9055_GAIN_RAMPING_EN, DA9055_GAIN_RAMPING_EN); - snd_soc_update_bits(codec, DA9055_DAC_R_CTRL, + snd_soc_component_update_bits(component, DA9055_DAC_R_CTRL, DA9055_GAIN_RAMPING_EN, DA9055_GAIN_RAMPING_EN); - snd_soc_update_bits(codec, DA9055_HP_L_CTRL, + snd_soc_component_update_bits(component, DA9055_HP_L_CTRL, DA9055_GAIN_RAMPING_EN, DA9055_GAIN_RAMPING_EN); - snd_soc_update_bits(codec, DA9055_HP_R_CTRL, + snd_soc_component_update_bits(component, DA9055_HP_R_CTRL, DA9055_GAIN_RAMPING_EN, DA9055_GAIN_RAMPING_EN); - snd_soc_update_bits(codec, DA9055_LINE_CTRL, + snd_soc_component_update_bits(component, DA9055_LINE_CTRL, DA9055_GAIN_RAMPING_EN, DA9055_GAIN_RAMPING_EN); /* @@ -1412,28 +1412,28 @@ static int da9055_probe(struct snd_soc_codec *codec) * being managed by DAPM while other (non power related) bits are * enabled here */ - snd_soc_update_bits(codec, DA9055_MIXIN_L_CTRL, + snd_soc_component_update_bits(component, DA9055_MIXIN_L_CTRL, DA9055_MIXIN_L_MIX_EN, DA9055_MIXIN_L_MIX_EN); - snd_soc_update_bits(codec, DA9055_MIXIN_R_CTRL, + snd_soc_component_update_bits(component, DA9055_MIXIN_R_CTRL, DA9055_MIXIN_R_MIX_EN, DA9055_MIXIN_R_MIX_EN); - snd_soc_update_bits(codec, DA9055_MIXOUT_L_CTRL, + snd_soc_component_update_bits(component, DA9055_MIXOUT_L_CTRL, DA9055_MIXOUT_L_MIX_EN, DA9055_MIXOUT_L_MIX_EN); - snd_soc_update_bits(codec, DA9055_MIXOUT_R_CTRL, + snd_soc_component_update_bits(component, DA9055_MIXOUT_R_CTRL, DA9055_MIXOUT_R_MIX_EN, DA9055_MIXOUT_R_MIX_EN); /* Set this as per your system configuration */ - snd_soc_write(codec, DA9055_PLL_CTRL, DA9055_PLL_INDIV_10_20_MHZ); + snd_soc_component_write(component, DA9055_PLL_CTRL, DA9055_PLL_INDIV_10_20_MHZ); /* Set platform data values */ if (da9055->pdata) { /* set mic bias source */ if (da9055->pdata->micbias_source) { - snd_soc_update_bits(codec, DA9055_MIXIN_R_SELECT, + snd_soc_component_update_bits(component, DA9055_MIXIN_R_SELECT, DA9055_MICBIAS2_EN, DA9055_MICBIAS2_EN); } else { - snd_soc_update_bits(codec, DA9055_MIXIN_R_SELECT, + snd_soc_component_update_bits(component, DA9055_MIXIN_R_SELECT, DA9055_MICBIAS2_EN, 0); } /* set mic bias voltage */ @@ -1442,7 +1442,7 @@ static int da9055_probe(struct snd_soc_codec *codec) case DA9055_MICBIAS_2_1V: case DA9055_MICBIAS_1_8V: case DA9055_MICBIAS_1_6V: - snd_soc_update_bits(codec, DA9055_MIC_CONFIG, + snd_soc_component_update_bits(component, DA9055_MIC_CONFIG, DA9055_MICBIAS_LEVEL_MASK, (da9055->pdata->micbias) << 4); break; @@ -1451,18 +1451,19 @@ static int da9055_probe(struct snd_soc_codec *codec) return 0; } -static const struct snd_soc_codec_driver soc_codec_dev_da9055 = { +static const struct snd_soc_component_driver soc_component_dev_da9055 = { .probe = da9055_probe, .set_bias_level = da9055_set_bias_level, - - .component_driver = { - .controls = da9055_snd_controls, - .num_controls = ARRAY_SIZE(da9055_snd_controls), - .dapm_widgets = da9055_dapm_widgets, - .num_dapm_widgets = ARRAY_SIZE(da9055_dapm_widgets), - .dapm_routes = da9055_audio_map, - .num_dapm_routes = ARRAY_SIZE(da9055_audio_map), - }, + .controls = da9055_snd_controls, + .num_controls = ARRAY_SIZE(da9055_snd_controls), + .dapm_widgets = da9055_dapm_widgets, + .num_dapm_widgets = ARRAY_SIZE(da9055_dapm_widgets), + .dapm_routes = da9055_audio_map, + .num_dapm_routes = ARRAY_SIZE(da9055_audio_map), + .idle_bias_on = 1, + .use_pmdown_time = 1, + .endianness = 1, + .non_legacy_dai_naming = 1, }; static const struct regmap_config da9055_regmap_config = { @@ -1499,21 +1500,15 @@ static int da9055_i2c_probe(struct i2c_client *i2c, return ret; } - ret = snd_soc_register_codec(&i2c->dev, - &soc_codec_dev_da9055, &da9055_dai, 1); + ret = devm_snd_soc_register_component(&i2c->dev, + &soc_component_dev_da9055, &da9055_dai, 1); if (ret < 0) { - dev_err(&i2c->dev, "Failed to register da9055 codec: %d\n", + dev_err(&i2c->dev, "Failed to register da9055 component: %d\n", ret); } return ret; } -static int da9055_remove(struct i2c_client *client) -{ - snd_soc_unregister_codec(&client->dev); - return 0; -} - /* * DO NOT change the device Ids. The naming is intentionally specific as both * the CODEC and PMIC parts of this chip are instantiated separately as I2C @@ -1540,7 +1535,6 @@ static int da9055_remove(struct i2c_client *client) .of_match_table = of_match_ptr(da9055_of_match), }, .probe = da9055_i2c_probe, - .remove = da9055_remove, .id_table = da9055_i2c_id, };