From patchwork Fri Jan 12 01:32:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 10159327 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 6CE41602D8 for ; Fri, 12 Jan 2018 02:21:31 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 53A0128938 for ; Fri, 12 Jan 2018 02:21:31 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 46915289E7; Fri, 12 Jan 2018 02:21:31 +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 D8127289E4 for ; Fri, 12 Jan 2018 02:21:29 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id D91542681CB; Fri, 12 Jan 2018 03:21:12 +0100 (CET) X-Original-To: alsa-devel@alsa-project.org Delivered-To: alsa-devel@alsa-project.org Received: by alsa0.perex.cz (Postfix, from userid 1000) id 92DE32681C7; Fri, 12 Jan 2018 03:21:11 +0100 (CET) Received: from relmlie3.idc.renesas.com (relmlor4.renesas.com [210.160.252.174]) by alsa0.perex.cz (Postfix) with ESMTP id C9785267C14 for ; Fri, 12 Jan 2018 02:32:57 +0100 (CET) Received: from unknown (HELO relmlir4.idc.renesas.com) ([10.200.68.154]) by relmlie3.idc.renesas.com with ESMTP; 12 Jan 2018 10:32:56 +0900 Received: from relmlii2.idc.renesas.com (relmlii2.idc.renesas.com [10.200.68.66]) by relmlir4.idc.renesas.com (Postfix) with ESMTP id 47BAC6A9BF; Fri, 12 Jan 2018 10:32:56 +0900 (JST) X-IronPort-AV: E=Sophos;i="5.46,346,1511794800"; d="scan'208";a="269309724" Received: from mail-sg2apc01lp0239.outbound.protection.outlook.com (HELO APC01-SG2-obe.outbound.protection.outlook.com) ([65.55.88.239]) by relmlii2.idc.renesas.com with ESMTP/TLS/AES256-SHA256; 12 Jan 2018 10:32:55 +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=5LHL49Zqkcz31/fIFcudNficVBacFlCAzH5ukTb1+z4=; b=OVnFu/aLCND02eOTuUU8KI7iGz3/WvhEXeTqentUGjppaVeHHUa/rwAguCzg8fqe410LYEKujHYIVV3iJpoD9oKMKPPHECfsdtYAKoBoVQClqi1IjiSEvGkX9eXKlqc3vNSLB2ll/CGFRDuLRBdUJRhYXr0JyyvknZFxCd6sr+g= Received: from morimoto-PC.renesas.com (211.11.155.138) by HK2PR0601MB1873.apcprd06.prod.outlook.com (2603:1096:202:a::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Fri, 12 Jan 2018 01:32:53 +0000 Message-ID: <87vag7981q.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:32:53 +0000 X-Originating-IP: [211.11.155.138] X-ClientProxiedBy: KAXPR01CA0035.jpnprd01.prod.outlook.com (2603:1096:402:1a::21) To HK2PR0601MB1873.apcprd06.prod.outlook.com (2603:1096:202:a::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 70f6bdcb-a129-4998-621f-08d5595c66f3 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020074)(4652020)(5600026)(4604075)(48565401081)(2017052603307)(7153060)(7193020); SRVR:HK2PR0601MB1873; X-Microsoft-Exchange-Diagnostics: 1; HK2PR0601MB1873; 3:+FahopcxBmhPkZq2AJO5dOXwV3xiTGseNF2nj4W8MOV380y+mB4hVwbcLAInxBbVbWqGYY7OaiTpznVZyjO6r0SEfJtIFsKi5qSZFgAbAwTzbtNAzyGB1p1C9wGstmBOaEO894QJ9y/5JDFbejdzXQhOJCTMuXPTSTZZ9z0NPsBu14NQt//jXWUZ8kATzuFbo4CZ7tdxK+r0K1zjNqHLvJD5L+vVvnhLo5GWuGiHCFfW3tXq8P/tQzXruNZpLPLS; 25:KZ54oj1zecxwkjMHPOWiosQWkQWGaPddgBoj/2c7spDh5ehl+b4GrEHrn6FybLY1xlsq9v5mTvrPQh88ypD4TexhpX++5shZqcjltpLpBaMtHQj2QIc7C+a/0RiUpByvFhHTxNxdY83y0aaRYvULecSXsWZIiuvSyt8zsYURe1wd8yj3QwgZydY4ToFcH3zTu2ZOAogwl1H4qeFeeFU/2qoR/iRSho44K0FfVVo1fGopBPSGIViJ2mls6Dc2cFMcF+SrX5FvQyziFtDjL7y3/g5eby215NY+sAfIkhhfeO5WqlAbuISSXPNpEfZE+dD3tIDxdb6mi1ZTkh1vWxr0FA==; 31:FvYNL6i8aGu4k5godP0MdYJXx8COrChXsepQN4ZFvPh3pML7RIjUz+xdRm/FApWBaYEEfAbGV7gC3gUKwIhbKwCNXd0n9LJWbRY6GR6FAcIg7Fhe7F7t+9Ye3F7LaZiuecACTGttljfH4+IRv22/ypTbyHQdd4Dk9vghX7lEKsVf3su1jCWw83MDlFU9LNvTQyQr191j0PoXiDvC2cpXWDCnmFDThusfUDBqoSETQRQ= X-MS-TrafficTypeDiagnostic: HK2PR0601MB1873: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=kuninori.morimoto.gx@renesas.com; X-Microsoft-Exchange-Diagnostics: 1; HK2PR0601MB1873; 20:sgM6nVUjHI38YFgYu2YpfCuj7KF37caPZyJKzf/R6s9gZYoYlRHgL+GeLIt7Gqbeb8a50m1c1jSTxYQXWLnyiYmIEXhd/h3YdIQJxTLxArNfD/HyRe62+iHUjp85TfyRDe1jjL9BJcBoDBlH8MraQ4K7Gik7qZZGPi17/orEqnA9m2elPePfge69sQHMdJIGiAGb4py6tTL2R1A+r4PNADczJczlDnKMq6kZ8SbvxPzjUdt7E1PZLUeex9Jqky3IKnvp9nAurkoemq50Ds2gF272knEF9thhcpiJjFIi29HKx5VbO/sQvmjgPh3L3Dv9PwpNcT532ZP4rdUrjdqak1rRMXOS32lcVdLtjFHxyfoSNPt19MRSQ0ZecH6KStWu8arh+UG1AwRCf7vde3GH8aU//cDUN+Y4i9B3r//WDnFzfQdxnr9MSUoA2L1FaAhEHsKgzTOkP1/0u9gfl5qiYmrnlTmR9p9DWh1wpTmtXNdBjFbGeGIvgiUq2ndmKDzw; 4:gMOFnuy2xRuMQ5nbOlFd7B5ci9LNu7aCelCJJmblEQGlchYiMjktF0h+Q4mMgJ2UuI22X+oaqv+0NGRjV2+Fxx/8BREX8CbYTYPrdjc40ocBMav4hhiF5MbWcjvrwnGxcFvDGBcvafXh0+0fh9n3IdNSlTodQ4RtXsXDNqtr3U6KXStR5BKKfMclRMUADJ6EcZuGM/Jwh5tU60WT+bid+0VeczJZUT1N+Q4jRbPb8LX3riR0kgL6kfuDq0iooBrhZ7OrZ/SqZpA2MfuegB8sSZuSDPy765hL90An3+x4wrCD2WOeo57aI8JaYlEZM/W3 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(3231023)(944501138)(10201501046)(3002001)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:HK2PR0601MB1873; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HK2PR0601MB1873; X-Forefront-PRVS: 0550778858 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(39380400002)(396003)(346002)(39860400002)(376002)(366004)(199004)(189003)(478600001)(25786009)(386003)(8936002)(6486002)(316002)(16586007)(305945005)(7736002)(2906002)(47776003)(3846002)(106356001)(59450400001)(2950100002)(50466002)(6916009)(7696005)(36756003)(5660300001)(66066001)(52116002)(76176011)(105586002)(53936002)(53416004)(23726003)(68736007)(8676002)(86362001)(16526018)(81156014)(81166006)(6116002)(4326008)(54906003)(83506002)(69596002)(97736004)(58126008)(21314002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:HK2PR0601MB1873; 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; HK2PR0601MB1873; 23:kQY25iMJrKHO+L6naw7nd7AIV9c1ALQyeIfYAzL?= =?us-ascii?Q?xv7GriT5mw4f9y+bRrgZViDJcYvPDlidRwLI8rHxkgp/ZHMP1ZLFu3viapsf?= =?us-ascii?Q?W9ogOeZT8B9bNK61Zlke8UpxUzR9A+5dOF1xvtl6156YOPJhbwB+axPq7Hwg?= =?us-ascii?Q?K6Oi00xDS7Iz32rAJgzIDcBch0+LAV95IGImSkTByUNIRpZ5D1Uw3CVovLNx?= =?us-ascii?Q?eIHb6bqe77OMcj+qroiRPhlBof160hLjwMA2gyKoVvjicrDb/jwo9XS4hjwe?= =?us-ascii?Q?ELDclvzgvXNBLyqSPuglIfWWW663EKxPSbrYmYjKKqCtHOgGIbdvdGEEZjAr?= =?us-ascii?Q?jJaGVjHeVmIEKhwRWWoNSSOXAEEBq78MRkYD0bDBWbBshPYoHv2XyU5ZTn0A?= =?us-ascii?Q?x9OlmzRoNrhsDIlTtQs4lauYnwd1Ii2bL+XWdxHyjSrD0ozLFRbvIjJRU+w7?= =?us-ascii?Q?+tRPlENLhcLEiTMYaeIlPMNMVLPX/pROco1NuecPxH/zM9IhJ3Am4p6fHCv+?= =?us-ascii?Q?5Hfu88VvR84ALxD8Ybks9eIYKa9qN9nPeW1k7K+QO2tnz11mz6TD5ik3EHZJ?= =?us-ascii?Q?Svs6GEhjb8lWMrWciiJ+klf4F6GlbeByjQGZkMeEJdOObBKtuxixBfamDmS2?= =?us-ascii?Q?HhT8bCOHnoUpyT0QHd4BtYiVQ/BHf0hVnPx+smWhb4UbJha0/5/4lt0XzxP9?= =?us-ascii?Q?8PzxR8CpuHlBWDDy6QKLDzK3XXEbCUh5iornOAc7aJLKglzUrYpOMNFL3jYZ?= =?us-ascii?Q?zHWcuptakYsUZYd9e0Z16Pb+7BE891wlggn6h6LpJafwEmXAJW+Lhg1S9kAC?= =?us-ascii?Q?L22nIzs6VBOUfKHCNmeKV9uc5J+hyLyKKue0yL4WsZo3NUrBMK9cToaVcZJf?= =?us-ascii?Q?V3AzkKt2EBuUn6zZOWAhtqtb2kdj4BEHRL4fljCAr03xVxE+YJyvzKQhS5U+?= =?us-ascii?Q?7926Ls/qGDhKCXFku1m7qgNrE1BiR2p9RmI406FtH9ETZWoOx+kUIyosE8oH?= =?us-ascii?Q?mG+tKtd5egdoZrtpkRKrkgmBkKnThSvg4jQT7PMnozMn+llKsQ4Je5ZfXTr2?= =?us-ascii?Q?dFkHHYyzUGhHaJbQBEz00ivO3RU/vPTFTk+M7I5iYWUu8KDmZCOV70Wy/9nd?= =?us-ascii?Q?kXHohKJLRpo8k+xAFmVNjkGO5Ljbb/xqxmLvnJsNjiuU1143rrgVetQ=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; HK2PR0601MB1873; 6:cYmhRyre6TZqUunoebz52BfS70OZ0yhJ6FY0L5plrIfQ2T3yRamu9V695+YyFgrHb8VihWDeNfIoBAMKgsjZRNflxGxwLmJixLcoi3tC67HFaFkSHyS9ithkoaDW1vkPHUyYmYCgjGwEI5Zf3hHNj1nkWrwEpYwRNOEp7p7wJxdhCrDAY5rRPJGaV/FQgXf/ozetwPC/rm31Daj9jp0qWkmixDL8hI/RHlAKowJFneIJ9eZ+vJoOVF/ytGXOkmsOdaSHwC1ddJZD010xb2yb0V+bdQLHF+/Fyd7kJKVfl1EMd58AiC7x89xrKvWV3PQAUVk8859maZ070UrPdXPpAOKhz6RB3jTgQhWRi9iRDzU=; 5:d+I+zJNF0m6BEqEpeQMnLB1HwMLu3RXcOpjABFGa/qTXZnvhFKaLuXhK+fbx2EZ7CXC0GHpIPCKNUtK2juBcXNkktD0lvrR7vV1VL6GgmAPWd/ISSy4DAjB9aKcwN62yb14ez9SqhoUfOWVITJzYYJ3PYa2rO20hr5soAn8VbeQ=; 24:nyOyv95NsyEvaE5WhGwx6XfxXhp8swCQfR0z8UvHvnQMfmW4fPuJvO5XqSHGlHhH4XuwsfdA1W026EVAUmcrRk+phtDbbAFss7VPHPkJQVY=; 7:mYQPzXJssr1TohmDy4jCdp7BDqASC0V8JdDScMLdU8NOoI94CfzhZPiNiD5Yn7BLQuIx0CboJwxUzxqwRpF/UZXu2YAU14J2pVkSej0qOSBqC9BkMsCjEbCgZ5nMF58wuWiRUF+l6QYTHoqxlB8RGOItoVGgDpbNCYD2jV3WO6h+eEctXcJ7eSbnp3poIHpME1aYb6ptbbq6ZARCBLLU5AosBy8wkZ4NfVWvJIFVhuzUELqTpcGyeA6lm4sYokgI SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HK2PR0601MB1873; 20:e9twybNG4yamu3/P73mFG5qVu6sdhX+ajlOilNY2H+TAsS0/XUukLi25UsCE5jEIKdr5w21tNQWF5ElMBTL9TMHr2CqjBaeDxzLeXs+rsLlBjQx+8llO054w1eey6apl6IbfwXqmKAYR13aVFbt0Aoij+Q50krvi+ah9xE1geFk= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2018 01:32:53.8601 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 70f6bdcb-a129-4998-621f-08d5595c66f3 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK2PR0601MB1873 Cc: Linux-ALSA , Simon Subject: [alsa-devel] [PATCH 087/187] ASoC: da7210: 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/da7210.c | 181 +++++++++++++++++++++------------------------- 1 file changed, 84 insertions(+), 97 deletions(-) diff --git a/sound/soc/codecs/da7210.c b/sound/soc/codecs/da7210.c index 1af443cc..ba20f76 100644 --- a/sound/soc/codecs/da7210.c +++ b/sound/soc/codecs/da7210.c @@ -331,12 +331,12 @@ static SOC_ENUM_SINGLE_DECL(da7210_hp_mode_sel, static int da7210_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); if (ucontrol->value.integer.value[0]) { /* Check if noise suppression is enabled */ - if (snd_soc_read(codec, DA7210_CONTROL) & DA7210_NOISE_SUP_EN) { - dev_dbg(codec->dev, + if (snd_soc_component_read32(component, DA7210_CONTROL) & DA7210_NOISE_SUP_EN) { + dev_dbg(component->dev, "Disable noise suppression to enable ALC\n"); return -EINVAL; } @@ -354,32 +354,32 @@ static int da7210_put_alc_sw(struct snd_kcontrol *kcontrol, static int da7210_put_noise_sup_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 val; if (ucontrol->value.integer.value[0]) { /* Check if ALC is enabled */ - if (snd_soc_read(codec, DA7210_ADC) & DA7210_ADC_ALC_EN) + if (snd_soc_component_read32(component, DA7210_ADC) & DA7210_ADC_ALC_EN) goto err; /* Check ZC for HP and AUX1 PGA */ - if ((snd_soc_read(codec, DA7210_ZERO_CROSS) & + if ((snd_soc_component_read32(component, DA7210_ZERO_CROSS) & (DA7210_AUX1_L_ZC | DA7210_AUX1_R_ZC | DA7210_HP_L_ZC | DA7210_HP_R_ZC)) != (DA7210_AUX1_L_ZC | DA7210_AUX1_R_ZC | DA7210_HP_L_ZC | DA7210_HP_R_ZC)) goto err; /* Check INPGA_L_VOL and INPGA_R_VOL */ - val = snd_soc_read(codec, DA7210_IN_GAIN); + val = snd_soc_component_read32(component, DA7210_IN_GAIN); if (((val & DA7210_INPGA_L_VOL) < DA7210_INPGA_MIN_VOL_NS) || (((val & DA7210_INPGA_R_VOL) >> 4) < DA7210_INPGA_MIN_VOL_NS)) goto err; /* Check AUX1_L_VOL and AUX1_R_VOL */ - if (((snd_soc_read(codec, DA7210_AUX1_L) & DA7210_AUX1_L_VOL) < + if (((snd_soc_component_read32(component, DA7210_AUX1_L) & DA7210_AUX1_L_VOL) < DA7210_AUX1_MIN_VOL_NS) || - ((snd_soc_read(codec, DA7210_AUX1_R) & DA7210_AUX1_R_VOL) < + ((snd_soc_component_read32(component, DA7210_AUX1_R) & DA7210_AUX1_R_VOL) < DA7210_AUX1_MIN_VOL_NS)) goto err; } @@ -760,19 +760,19 @@ static int da7210_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 da7210_priv *da7210 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = dai->component; + struct da7210_priv *da7210 = snd_soc_component_get_drvdata(component); u32 dai_cfg1; u32 fs, sysclk; /* set DAI source to Left and Right ADC */ - snd_soc_write(codec, DA7210_DAI_SRC_SEL, + snd_soc_component_write(component, DA7210_DAI_SRC_SEL, DA7210_DAI_OUT_R_SRC | DA7210_DAI_OUT_L_SRC); /* Enable DAI */ - snd_soc_write(codec, DA7210_DAI_CFG3, DA7210_DAI_OE | DA7210_DAI_EN); + snd_soc_component_write(component, DA7210_DAI_CFG3, DA7210_DAI_OE | DA7210_DAI_EN); - dai_cfg1 = 0xFC & snd_soc_read(codec, DA7210_DAI_CFG1); + dai_cfg1 = 0xFC & snd_soc_component_read32(component, DA7210_DAI_CFG1); switch (params_width(params)) { case 16: @@ -791,7 +791,7 @@ static int da7210_hw_params(struct snd_pcm_substream *substream, return -EINVAL; } - snd_soc_write(codec, DA7210_DAI_CFG1, dai_cfg1); + snd_soc_component_write(component, DA7210_DAI_CFG1, dai_cfg1); switch (params_rate(params)) { case 8000: @@ -839,17 +839,17 @@ static int da7210_hw_params(struct snd_pcm_substream *substream, } /* Disable active mode */ - snd_soc_update_bits(codec, DA7210_STARTUP1, DA7210_SC_MST_EN, 0); + snd_soc_component_update_bits(component, DA7210_STARTUP1, DA7210_SC_MST_EN, 0); - snd_soc_update_bits(codec, DA7210_PLL, DA7210_PLL_FS_MASK, fs); + snd_soc_component_update_bits(component, DA7210_PLL, DA7210_PLL_FS_MASK, fs); if (da7210->mclk_rate && (da7210->mclk_rate != sysclk)) { /* PLL mode, disable PLL bypass */ - snd_soc_update_bits(codec, DA7210_PLL_DIV3, DA7210_PLL_BYP, 0); + snd_soc_component_update_bits(component, DA7210_PLL_DIV3, DA7210_PLL_BYP, 0); if (!da7210->master) { /* PLL slave mode, also enable SRM */ - snd_soc_update_bits(codec, DA7210_PLL, + snd_soc_component_update_bits(component, DA7210_PLL, (DA7210_MCLK_SRM_EN | DA7210_MCLK_DET_EN), (DA7210_MCLK_SRM_EN | @@ -857,13 +857,13 @@ static int da7210_hw_params(struct snd_pcm_substream *substream, } } else { /* PLL bypass mode, enable PLL bypass and Auto Detection */ - snd_soc_update_bits(codec, DA7210_PLL, DA7210_MCLK_DET_EN, + snd_soc_component_update_bits(component, DA7210_PLL, DA7210_MCLK_DET_EN, DA7210_MCLK_DET_EN); - snd_soc_update_bits(codec, DA7210_PLL_DIV3, DA7210_PLL_BYP, + snd_soc_component_update_bits(component, DA7210_PLL_DIV3, DA7210_PLL_BYP, DA7210_PLL_BYP); } /* Enable active mode */ - snd_soc_update_bits(codec, DA7210_STARTUP1, + snd_soc_component_update_bits(component, DA7210_STARTUP1, DA7210_SC_MST_EN, DA7210_SC_MST_EN); return 0; @@ -874,16 +874,16 @@ static int da7210_hw_params(struct snd_pcm_substream *substream, */ static int da7210_set_dai_fmt(struct snd_soc_dai *codec_dai, u32 fmt) { - struct snd_soc_codec *codec = codec_dai->codec; - struct da7210_priv *da7210 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = codec_dai->component; + struct da7210_priv *da7210 = snd_soc_component_get_drvdata(component); u32 dai_cfg1; u32 dai_cfg3; - dai_cfg1 = 0x7f & snd_soc_read(codec, DA7210_DAI_CFG1); - dai_cfg3 = 0xfc & snd_soc_read(codec, DA7210_DAI_CFG3); + dai_cfg1 = 0x7f & snd_soc_component_read32(component, DA7210_DAI_CFG1); + dai_cfg3 = 0xfc & snd_soc_component_read32(component, DA7210_DAI_CFG3); - if ((snd_soc_read(codec, DA7210_PLL) & DA7210_PLL_EN) && - (!(snd_soc_read(codec, DA7210_PLL_DIV3) & DA7210_PLL_BYP))) + if ((snd_soc_component_read32(component, DA7210_PLL) & DA7210_PLL_EN) && + (!(snd_soc_component_read32(component, DA7210_PLL_DIV3) & DA7210_PLL_BYP))) return -EINVAL; switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { @@ -923,21 +923,21 @@ static int da7210_set_dai_fmt(struct snd_soc_dai *codec_dai, u32 fmt) */ dai_cfg1 |= DA7210_DAI_FLEN_64BIT; - snd_soc_write(codec, DA7210_DAI_CFG1, dai_cfg1); - snd_soc_write(codec, DA7210_DAI_CFG3, dai_cfg3); + snd_soc_component_write(component, DA7210_DAI_CFG1, dai_cfg1); + snd_soc_component_write(component, DA7210_DAI_CFG3, dai_cfg3); return 0; } static int da7210_mute(struct snd_soc_dai *dai, int mute) { - struct snd_soc_codec *codec = dai->codec; - u8 mute_reg = snd_soc_read(codec, DA7210_DAC_HPF) & 0xFB; + struct snd_soc_component *component = dai->component; + u8 mute_reg = snd_soc_component_read32(component, DA7210_DAC_HPF) & 0xFB; if (mute) - snd_soc_write(codec, DA7210_DAC_HPF, mute_reg | 0x4); + snd_soc_component_write(component, DA7210_DAC_HPF, mute_reg | 0x4); else - snd_soc_write(codec, DA7210_DAC_HPF, mute_reg); + snd_soc_component_write(component, DA7210_DAC_HPF, mute_reg); return 0; } @@ -947,8 +947,8 @@ static int da7210_mute(struct snd_soc_dai *dai, int mute) static int da7210_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 da7210_priv *da7210 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = codec_dai->component; + struct da7210_priv *da7210 = snd_soc_component_get_drvdata(component); switch (clk_id) { case DA7210_CLKSRC_MCLK: @@ -988,8 +988,8 @@ static int da7210_set_dai_sysclk(struct snd_soc_dai *codec_dai, static int da7210_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 da7210_priv *da7210 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = codec_dai->component; + struct da7210_priv *da7210 = snd_soc_component_get_drvdata(component); u8 pll_div1, pll_div2, pll_div3, cnt; @@ -1014,18 +1014,18 @@ static int da7210_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id, goto err; /* Disable active mode */ - snd_soc_update_bits(codec, DA7210_STARTUP1, DA7210_SC_MST_EN, 0); + snd_soc_component_update_bits(component, DA7210_STARTUP1, DA7210_SC_MST_EN, 0); /* Write PLL dividers */ - snd_soc_write(codec, DA7210_PLL_DIV1, pll_div1); - snd_soc_write(codec, DA7210_PLL_DIV2, pll_div2); - snd_soc_update_bits(codec, DA7210_PLL_DIV3, + snd_soc_component_write(component, DA7210_PLL_DIV1, pll_div1); + snd_soc_component_write(component, DA7210_PLL_DIV2, pll_div2); + snd_soc_component_update_bits(component, DA7210_PLL_DIV3, DA7210_PLL_DIV_L_MASK, pll_div3); /* Enable PLL */ - snd_soc_update_bits(codec, DA7210_PLL, DA7210_PLL_EN, DA7210_PLL_EN); + snd_soc_component_update_bits(component, DA7210_PLL, DA7210_PLL_EN, DA7210_PLL_EN); /* Enable active mode */ - snd_soc_update_bits(codec, DA7210_STARTUP1, DA7210_SC_MST_EN, + snd_soc_component_update_bits(component, DA7210_STARTUP1, DA7210_SC_MST_EN, DA7210_SC_MST_EN); return 0; err: @@ -1064,53 +1064,53 @@ static int da7210_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id, .symmetric_rates = 1, }; -static int da7210_probe(struct snd_soc_codec *codec) +static int da7210_probe(struct snd_soc_component *component) { - struct da7210_priv *da7210 = snd_soc_codec_get_drvdata(codec); + struct da7210_priv *da7210 = snd_soc_component_get_drvdata(component); - dev_info(codec->dev, "DA7210 Audio Codec %s\n", DA7210_VERSION); + dev_info(component->dev, "DA7210 Audio Codec %s\n", DA7210_VERSION); da7210->mclk_rate = 0; /* This will be set from set_sysclk() */ da7210->master = 0; /* This will be set from set_fmt() */ /* Enable internal regulator & bias current */ - snd_soc_write(codec, DA7210_CONTROL, DA7210_REG_EN | DA7210_BIAS_EN); + snd_soc_component_write(component, DA7210_CONTROL, DA7210_REG_EN | DA7210_BIAS_EN); /* * ADC settings */ /* Enable Left & Right MIC PGA and Mic Bias */ - snd_soc_write(codec, DA7210_MIC_L, DA7210_MIC_L_EN | DA7210_MICBIAS_EN); - snd_soc_write(codec, DA7210_MIC_R, DA7210_MIC_R_EN); + snd_soc_component_write(component, DA7210_MIC_L, DA7210_MIC_L_EN | DA7210_MICBIAS_EN); + snd_soc_component_write(component, DA7210_MIC_R, DA7210_MIC_R_EN); /* Enable Left and Right input PGA */ - snd_soc_write(codec, DA7210_INMIX_L, DA7210_IN_L_EN); - snd_soc_write(codec, DA7210_INMIX_R, DA7210_IN_R_EN); + snd_soc_component_write(component, DA7210_INMIX_L, DA7210_IN_L_EN); + snd_soc_component_write(component, DA7210_INMIX_R, DA7210_IN_R_EN); /* Enable Left and Right ADC */ - snd_soc_write(codec, DA7210_ADC, DA7210_ADC_L_EN | DA7210_ADC_R_EN); + snd_soc_component_write(component, DA7210_ADC, DA7210_ADC_L_EN | DA7210_ADC_R_EN); /* * DAC settings */ /* Enable Left and Right DAC */ - snd_soc_write(codec, DA7210_DAC_SEL, + snd_soc_component_write(component, DA7210_DAC_SEL, DA7210_DAC_L_SRC_DAI_L | DA7210_DAC_L_EN | DA7210_DAC_R_SRC_DAI_R | DA7210_DAC_R_EN); /* Enable Left and Right out PGA */ - snd_soc_write(codec, DA7210_OUTMIX_L, DA7210_OUT_L_EN); - snd_soc_write(codec, DA7210_OUTMIX_R, DA7210_OUT_R_EN); + snd_soc_component_write(component, DA7210_OUTMIX_L, DA7210_OUT_L_EN); + snd_soc_component_write(component, DA7210_OUTMIX_R, DA7210_OUT_R_EN); /* Enable Left and Right HeadPhone PGA */ - snd_soc_write(codec, DA7210_HP_CFG, + snd_soc_component_write(component, DA7210_HP_CFG, DA7210_HP_2CAP_MODE | DA7210_HP_SENSE_EN | DA7210_HP_L_EN | DA7210_HP_MODE | DA7210_HP_R_EN); /* Enable ramp mode for DAC gain update */ - snd_soc_write(codec, DA7210_SOFTMUTE, DA7210_RAMP_EN); + snd_soc_component_write(component, DA7210_SOFTMUTE, DA7210_RAMP_EN); /* * For DA7210 codec, there are two ways to enable/disable analog IOs @@ -1138,43 +1138,44 @@ static int da7210_probe(struct snd_soc_codec *codec) */ /* Enable Line out amplifiers */ - snd_soc_write(codec, DA7210_OUT1_L, DA7210_OUT1_L_EN); - snd_soc_write(codec, DA7210_OUT1_R, DA7210_OUT1_R_EN); - snd_soc_write(codec, DA7210_OUT2, DA7210_OUT2_EN | + snd_soc_component_write(component, DA7210_OUT1_L, DA7210_OUT1_L_EN); + snd_soc_component_write(component, DA7210_OUT1_R, DA7210_OUT1_R_EN); + snd_soc_component_write(component, DA7210_OUT2, DA7210_OUT2_EN | DA7210_OUT2_OUTMIX_L | DA7210_OUT2_OUTMIX_R); /* Enable Aux1 */ - snd_soc_write(codec, DA7210_AUX1_L, DA7210_AUX1_L_EN); - snd_soc_write(codec, DA7210_AUX1_R, DA7210_AUX1_R_EN); + snd_soc_component_write(component, DA7210_AUX1_L, DA7210_AUX1_L_EN); + snd_soc_component_write(component, DA7210_AUX1_R, DA7210_AUX1_R_EN); /* Enable Aux2 */ - snd_soc_write(codec, DA7210_AUX2, DA7210_AUX2_EN); + snd_soc_component_write(component, DA7210_AUX2, DA7210_AUX2_EN); /* Set PLL Master clock range 10-20 MHz, enable PLL bypass */ - snd_soc_write(codec, DA7210_PLL_DIV3, DA7210_MCLK_RANGE_10_20_MHZ | + snd_soc_component_write(component, DA7210_PLL_DIV3, DA7210_MCLK_RANGE_10_20_MHZ | DA7210_PLL_BYP); /* Diable PLL and bypass it */ - snd_soc_write(codec, DA7210_PLL, DA7210_PLL_FS_48000); + snd_soc_component_write(component, DA7210_PLL, DA7210_PLL_FS_48000); /* Activate all enabled subsystem */ - snd_soc_write(codec, DA7210_STARTUP1, DA7210_SC_MST_EN); + snd_soc_component_write(component, DA7210_STARTUP1, DA7210_SC_MST_EN); - dev_info(codec->dev, "DA7210 Audio Codec %s\n", DA7210_VERSION); + dev_info(component->dev, "DA7210 Audio Codec %s\n", DA7210_VERSION); return 0; } -static const struct snd_soc_codec_driver soc_codec_dev_da7210 = { +static const struct snd_soc_component_driver soc_component_dev_da7210 = { .probe = da7210_probe, - - .component_driver = { - .controls = da7210_snd_controls, - .num_controls = ARRAY_SIZE(da7210_snd_controls), - .dapm_widgets = da7210_dapm_widgets, - .num_dapm_widgets = ARRAY_SIZE(da7210_dapm_widgets), - .dapm_routes = da7210_audio_map, - .num_dapm_routes = ARRAY_SIZE(da7210_audio_map), - }, + .controls = da7210_snd_controls, + .num_controls = ARRAY_SIZE(da7210_snd_controls), + .dapm_widgets = da7210_dapm_widgets, + .num_dapm_widgets = ARRAY_SIZE(da7210_dapm_widgets), + .dapm_routes = da7210_audio_map, + .num_dapm_routes = ARRAY_SIZE(da7210_audio_map), + .idle_bias_on = 1, + .pmdown_time = 1, + .endianness = 1, + .non_legacy_dai_naming = 1, }; #if IS_ENABLED(CONFIG_I2C) @@ -1232,20 +1233,14 @@ static int da7210_i2c_probe(struct i2c_client *i2c, if (ret != 0) dev_warn(&i2c->dev, "Failed to apply regmap patch: %d\n", ret); - ret = snd_soc_register_codec(&i2c->dev, - &soc_codec_dev_da7210, &da7210_dai, 1); + ret = snd_soc_register_component(&i2c->dev, + &soc_component_dev_da7210, &da7210_dai, 1); if (ret < 0) - dev_err(&i2c->dev, "Failed to register codec: %d\n", ret); + dev_err(&i2c->dev, "Failed to register component: %d\n", ret); return ret; } -static int da7210_i2c_remove(struct i2c_client *client) -{ - snd_soc_unregister_codec(&client->dev); - return 0; -} - static const struct i2c_device_id da7210_i2c_id[] = { { "da7210", 0 }, { } @@ -1258,7 +1253,6 @@ static int da7210_i2c_remove(struct i2c_client *client) .name = "da7210", }, .probe = da7210_i2c_probe, - .remove = da7210_i2c_remove, .id_table = da7210_i2c_id, }; #endif @@ -1325,24 +1319,17 @@ static int da7210_spi_probe(struct spi_device *spi) if (ret != 0) dev_warn(&spi->dev, "Failed to apply regmap patch: %d\n", ret); - ret = snd_soc_register_codec(&spi->dev, - &soc_codec_dev_da7210, &da7210_dai, 1); + ret = devm_snd_soc_register_component(&spi->dev, + &soc_component_dev_da7210, &da7210_dai, 1); return ret; } -static int da7210_spi_remove(struct spi_device *spi) -{ - snd_soc_unregister_codec(&spi->dev); - return 0; -} - static struct spi_driver da7210_spi_driver = { .driver = { .name = "da7210", }, .probe = da7210_spi_probe, - .remove = da7210_spi_remove }; #endif