From patchwork Mon Jan 29 03:47:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 10189003 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 32F3060388 for ; Mon, 29 Jan 2018 04:26:02 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id F2D76268AE for ; Mon, 29 Jan 2018 04:25:59 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E4153274D1; Mon, 29 Jan 2018 04:25:59 +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 90728268AE for ; Mon, 29 Jan 2018 04:25:58 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id 3E07A267842; Mon, 29 Jan 2018 05:23:50 +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 D3CE42677A8; Mon, 29 Jan 2018 05:23:47 +0100 (CET) Received: from relmlie2.idc.renesas.com (relmlor3.renesas.com [210.160.252.173]) by alsa0.perex.cz (Postfix) with ESMTP id DAEAC26771E for ; Mon, 29 Jan 2018 04:47:24 +0100 (CET) Received: from unknown (HELO relmlir3.idc.renesas.com) ([10.200.68.153]) by relmlie2.idc.renesas.com with ESMTP; 29 Jan 2018 12:47:23 +0900 Received: from relmlii2.idc.renesas.com (relmlii2.idc.renesas.com [10.200.68.66]) by relmlir3.idc.renesas.com (Postfix) with ESMTP id 61D5F6FBB3; Mon, 29 Jan 2018 12:47:23 +0900 (JST) X-IronPort-AV: E=Sophos;i="5.46,429,1511794800"; d="scan'208";a="270911852" Received: from mail-sg2apc01lp0240.outbound.protection.outlook.com (HELO APC01-SG2-obe.outbound.protection.outlook.com) ([65.55.88.240]) by relmlii2.idc.renesas.com with ESMTP/TLS/AES256-SHA256; 29 Jan 2018 12:47:22 +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=fLfVVbgxYtZv0+yRHOTKuWROtH8piZfrTR65I6xiAyU=; b=Xpk9D7P0EZ25fYTpS9Lrs+XPXWvaRRjjgTm2nyIRv/j5ZnjDd5EgpgJAdzsd/naSjhmrjtRk5BrCrWcwNgRxrWIsz94n1VWaW4gbStdjW0vyKGTWjf+EOX4SytO8C6TDq/oQAenAEbLibHGAnC2g7spcWeHOez9t0GDTY+/JCak= 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 PS1PR0601MB1882.apcprd06.prod.outlook.com (2603:1096:803:8::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.444.14; Mon, 29 Jan 2018 03:47:20 +0000 Message-ID: <87vafl1g5r.wl%kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto User-Agent: Wanderlust/2.15.9 Emacs/24.3 Mule/6.0 To: Mark Brown In-Reply-To: <87inbl5q6q.wl%kuninori.morimoto.gx@renesas.com> References: <87607l8k9i.wl%kuninori.morimoto.gx@renesas.com> <87inbl5q6q.wl%kuninori.morimoto.gx@renesas.com> MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Date: Mon, 29 Jan 2018 03:47:20 +0000 X-Originating-IP: [211.11.155.138] X-ClientProxiedBy: KAXPR01CA0039.jpnprd01.prod.outlook.com (2603:1096:402:1a::25) To PS1PR0601MB1882.apcprd06.prod.outlook.com (2603:1096:803:8::20) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 203da2fc-4e26-40ee-d45e-08d566cafff5 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:PS1PR0601MB1882; X-Microsoft-Exchange-Diagnostics: 1; PS1PR0601MB1882; 3:8ZsTvY6x/HSZPx9hx7evJ7J2i2A7S5OfsmHzc1QKWb2J+1GGSJ9ar3ggGlERhOafEbXBajKaemnANCSwzgn7zJoWn83GKuLtS9sn/toN7DCK1HZG2MI0ZRpm+d6RdKUyimDUvYDD+R4yNU/JLH3T/2D51yi2XrGkcrJEf9T/ZxATi6tsh4K0FYgha604PHZw/fnbPbswWRMTVmUpOfomSo+P48J4ot2XVjYMnLLJu1/YAPR+9a351aD+lB8Gp8wG; 25:EJtPt9JVE0FP5+sq0THJx9nDMjwFdn7ZNL6WaLfUY1IB/jANivdqpC+vVHoB4YPxnjbdnAWYVhsf9iWjz8LQjdguyUx6ISQx1Hy4bB/E73o49rPS7zHEJ1EpWvSPQDL8RveTndYD/3DINZ2UMQbTPaHQKFKJtmZdgKj2wsrmQBMN+kZVt0hHxFC5Is5PdQcKoRRjrrLgC75jUyNyMl7SQ57Ka2HOtrSY9jdh5JcfbiOcjMg/Ma+hwVlsplXNUUofeTgWZ0v0Ijcobxj9zJb+1vccbTktdb5XDn+48UGe1L1DzNbhkbe8KrgeInnDH+/R/qsavlziejobyWgA9FR+kA==; 31:j7ha5foadBAsVezORy2SvKHT9uYesgWJ3JRkCCTI206i+ccrzt8tKdbbaIIfzDlxULob6cVuHGuaMQt9Cfh4dHqShc5Fw2ltBSVilLiuQheR8OelFKjbZvHTRiCFeiyCxDfqA4Tg2CXHxryy5glbAboivJKD14zA3iwrckgsh9VE4XDLzrCz5GY6WsC2YRNwAEM4hwCgxO7FwEn0jF2ghCohMIFlT8imkPlGBpjPglw= X-MS-TrafficTypeDiagnostic: PS1PR0601MB1882: X-Microsoft-Exchange-Diagnostics: 1; PS1PR0601MB1882; 20:vE3qqsHqTm1jc5bxQZwutL9w32Dywb3T0gAMvaRbF8V87vwQANJERngCpDjO5bqxNhiQjtM3iCm0miaWsSIMroRQUZ39jEyNJRwwpxrzqeutMVNexB41YDt8N4wmplssV1RM+I9O4foeaqpy9g6MTgUNAZmtDLnaiyGtWNMh5QnqJug9fYWP7sIiPgI92fnugz4e8bx+8HFLuIrmtyVrkfNS8CHieG8874r2dTtFrnkSXFVmshxDtMrHaJklf6OeghAhwa8jOBPmWLPrqvZHgNAtW5ESWxyoDdC/ufg9Z011qkRBoMiWfLQ7c0cIHyb9iyozSJRkUlArYVL3kTxzXDh/EecMg7PbvGQtpYFRyeTdvaE+/V2nl4ID77fwRNcKscdtC7aKTFQPQRp1iFk+dZ1GSNqBbWRspXZ4dRwn4WDTY2pZ1iX3VlRpympeFMAM5rj12GqK9nYNChJoG9flO3g/mnWgnZCuHlDfhgSDyb03/cFvcphhsZomq5PiLAjZ; 4:kFnhIjnaVbE4QAM7CXL+3O9KHWSDnOdDaCiPqIo4bch0EhJrW3hk3VIdNZ1tlB4XKY6SdtVQm2Smlmk/N/zjcJBee1UTAFrr0zQhbGWM1a9OHtLxq7zZcPXoZX9iFoZI3xj0lgCIQjvweZWWQ8Vc1gLttIfgAqL+jOcfDdpZf837PaDXiDXHiM5R3IN8Mhme6SxzlSOBB4cXbuuoO3S13hpKKJzJmCxKfxgU+UEu0qnQ+xYl8UR3ElPi0qW0rChIlKLRvvFFA9xxs6gmgSEaZcBGlFZRkXqwxS0KGeVXer0q8VbKEMW+VEjOOfRx+iLS 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)(10201501046)(3002001)(3231101)(944501161)(93006095)(93001095)(6055026)(6041288)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:PS1PR0601MB1882; BCL:0; PCL:0; RULEID:; SRVR:PS1PR0601MB1882; X-Forefront-PRVS: 0567A15835 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(366004)(346002)(39860400002)(376002)(39380400002)(396003)(199004)(189003)(59450400001)(86362001)(76176011)(25786009)(575784001)(52116002)(7696005)(5660300001)(16586007)(97736004)(4326008)(305945005)(386003)(58126008)(26005)(66066001)(36756003)(16526019)(2950100002)(3846002)(47776003)(83506002)(6916009)(23726003)(6486002)(50466002)(69596002)(186003)(6116002)(81166006)(81156014)(53936002)(8936002)(8676002)(106356001)(105586002)(478600001)(7736002)(316002)(53416004)(68736007)(2906002)(21314002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:PS1PR0601MB1882; 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; PS1PR0601MB1882; 23:3j4rRutbErXpO128+Bi/v6dzvSkvewoD3r01iz3?= =?us-ascii?Q?OJQbf8haI0on1Voz/84qJ4W9+HMkXkeikfDYYIAlUXFKFzBDtvoX99+i6e2e?= =?us-ascii?Q?jZD9Gegf/zf9kFUVXl+h+h8AKwzw0ZbpUDybqNL7v1gi9gse+UjURm5IMEx0?= =?us-ascii?Q?psKo0QlhnqwJ0By8o8bxYi/EJfyUIIXTPRp1yszDpDg3E8BID0gSRKxVivQe?= =?us-ascii?Q?7D5uAuvthfyiThJTejWktWdYjTH1m/1GbpGpY9BvN2/pUTzWLh8RabI05JJj?= =?us-ascii?Q?r4czOhxC4C3OPXbT72QY63Gibh8bLZmJeiWJfsQ3Ev5m0epRWXJ3gvsSmJPt?= =?us-ascii?Q?mBTGf36dkSBPK9Rj0J9ktIcYlcx6+k64khdL3pgk/zvdQMzt0uZJYA1oHmIb?= =?us-ascii?Q?RB01KyadFd4l/fWrBRSj2PM78z7g3FUB371uRouMsNffLfvQY6q1MRDo9BQN?= =?us-ascii?Q?l3o+7w+zQPhyYr60E/EHl1ESxxEKCJudGDP32davSphL/ONiYQwDuV/4UI3k?= =?us-ascii?Q?STOsaAG3tpTVLSYPu8IRZPqY//RIKOJu84nz5BTvS/VIXU6CQWzh6UslT0f9?= =?us-ascii?Q?q1vc+2CbV07tBMS1SJpZg0iOTbMHIiAwAFGxYKnxohjO1Qwzkr9lSp+ElJMs?= =?us-ascii?Q?vQYlBytM/jQRCZU9kVspOV2jlLAehvhJuePHSaKxp31hklfGwJQnlrWeir6O?= =?us-ascii?Q?UtMWf0kryH7jbeizwkqEnUeHUNmIEcrknwIOHqDPKHmPzvCSmVdZegrbJRJn?= =?us-ascii?Q?KeHZ2ZwtE04426y7tIjmtxkb3n59q4PU+qhkBxtv3OanXWJJIz8n+RmkiOv9?= =?us-ascii?Q?DWHbMYUt6IaW6oebOxrKi22v18Ot1vqHsJMNuy9rpiw9AyZu8sNACzBWQbYx?= =?us-ascii?Q?17yB8iEXto2JiYKI8M9oTtk+7UjJcJJyA3xVWR5xZWUQWTt7kMeFAdQFOBU/?= =?us-ascii?Q?VB51VpAS/uczVVMHI7AN6FIDXMd/lO5a0L9O6L/e3L5ADFKXaLb/SLaEo3Wo?= =?us-ascii?Q?r6fRyVhICcj/5ZbKJMFHAjglMKQ3majdx21ARsAj5n9fWYO7GG3hKMtkmVqQ?= =?us-ascii?Q?C2A2sljzt35gJqjlraCNqzihbHeDpcSHVi45ilq39Ed3naZGR+NmYLdza8sx?= =?us-ascii?Q?pJExfRk/Za6SJ9i46aax1YHbgBi3LYm1nR/N/IHifHQo+Nczn+DYzRTDRSma?= =?us-ascii?Q?xytEj4sDioiAHPPl+hurLFEW2aMiyh//JPDR5?= X-Microsoft-Exchange-Diagnostics: 1; PS1PR0601MB1882; 6:WIGWBda7OS2pyzmZk4NRJm2H6ryixx0R+/GIHF+CVgRi9BeuCkplnqKBWF3ExqQPQLp4wV7d2bPpS7EYn+89VcyDEy6Jj27MvGz2HZg/b0T1LqTnt/3t68XPKcOSDFkhdVUfIAzb5w4LDZlEw5gRnD8bUFpkYx6gtqz7ILwoHr9iz95WdCCf9Tei8i5cF1TgmwUW1920ptjHJegkToeV8N9usXuNhFautyeK8kjVehWt8uk+rpjQKgjEMJ0QPJoBnRXSgjnHbRPvp7sps1k6RMe+SUk2DaQKqG0O8E9SAWXZTgfG0eeFhXG4wH/JaA9GJCnw92PktBlmitWmwtZ+qMsL5a4z//mM+9gd2HeBr/4=; 5:0y8d5eEDl6N++XVOJwAQnrTntlbDXD2tkx41P8oVJZtQ18LTspXFhxP8OjUtrR6OvX6lACQ3K1quQqAAPktHO/aqfwGTy8auKmspbNcJCqgZbRIiPZ3FBr2PghJidk2nVgbhtR67wEdSpFoLhDcn/xf5DB9r8dt32mc9qL9foeE=; 24:lUaK5Zhn1u3RnCFQb78ofuDmaBpcCEobi/oNm/zsb9pthRYJVTF5BDx8XLT3jYqh636cBhBsxC7CJbz3lDRQ2jMZhO7lTTzapiSsVxZCAUs=; 7:vTFaxmODtZCwFluJCWJnb2Yjrw1vbeWv7XstwTvlTl/Vg6tdH8CjgamKAm2fvZYg4xPVkX3cUff6ert7QDDKfIzMgmWkH46ArVAAmCmcX15M6IGzQhtGp0L/2C8Lbmw0Vl43Tlf8fnTLhR0UerOQGGnXffdXlwk4tckK/pw22Vvv51GwmSCE2JoCuI+4Jwft26lwWKrqCNcjH1qwBp2eElV7idDuYizOgR44HH5gOFVvbJ4RMDvRpS2rm0oLhAvX SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; PS1PR0601MB1882; 20:LUMdlu2MUpYjDOGhGmjD8bOd7G2jwjKuCVcwmrKooDaQCIcWWUeOdyvYvPiJOCbZGXcJYYvR4gJT9WMPKthtq3megrWdrC/C6N3SA62LsRRLokSERiN9wJZ5QgRIlO0m2OkZpYsQAT81DWF+wcFdkBJlklDsBpvDLQd3Uk7/bwE= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jan 2018 03:47:20.4333 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 203da2fc-4e26-40ee-d45e-08d566cafff5 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-Transport-CrossTenantHeadersStamped: PS1PR0601MB1882 Cc: Linux-ALSA Subject: [alsa-devel] [PATCH v2 066/186] ASoC: rt5660: 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 = 1 -> .idle_bias_on = 0 .ignore_pmdown_time = 0 -> .use_pmdown_time = 1 - -> .endianness = 1 - -> .non_legacy_dai_naming = 1 Signed-off-by: Kuninori Morimoto --- sound/soc/codecs/rt5660.c | 145 ++++++++++++++++++++++------------------------ sound/soc/codecs/rt5660.h | 2 +- 2 files changed, 70 insertions(+), 77 deletions(-) diff --git a/sound/soc/codecs/rt5660.c b/sound/soc/codecs/rt5660.c index d22ef00..20a7551 100644 --- a/sound/soc/codecs/rt5660.c +++ b/sound/soc/codecs/rt5660.c @@ -354,17 +354,17 @@ static bool rt5660_readable_register(struct device *dev, unsigned int reg) static int rt5660_set_dmic_clk(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 rt5660_priv *rt5660 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); + struct rt5660_priv *rt5660 = snd_soc_component_get_drvdata(component); int idx, rate; rate = rt5660->sysclk / rl6231_get_pre_div(rt5660->regmap, RT5660_ADDA_CLK1, RT5660_I2S_PD1_SFT); idx = rl6231_calc_dmic_clk(rate); if (idx < 0) - dev_err(codec->dev, "Failed to set DMIC clock\n"); + dev_err(component->dev, "Failed to set DMIC clock\n"); else - snd_soc_update_bits(codec, RT5660_DMIC_CTRL1, + snd_soc_component_update_bits(component, RT5660_DMIC_CTRL1, RT5660_DMIC_CLK_MASK, idx << RT5660_DMIC_CLK_SFT); return idx; @@ -373,10 +373,10 @@ static int rt5660_set_dmic_clk(struct snd_soc_dapm_widget *w, static int rt5660_is_sys_clk_from_pll(struct snd_soc_dapm_widget *source, struct snd_soc_dapm_widget *sink) { - struct snd_soc_codec *codec = snd_soc_dapm_to_codec(source->dapm); + struct snd_soc_component *component = snd_soc_dapm_to_component(source->dapm); unsigned int val; - val = snd_soc_read(codec, RT5660_GLB_CLK); + val = snd_soc_component_read32(component, RT5660_GLB_CLK); val &= RT5660_SCLK_SRC_MASK; if (val == RT5660_SCLK_SRC_PLL1) return 1; @@ -541,17 +541,17 @@ static SOC_ENUM_SINGLE_DECL(rt5660_if1_adc_enum, static int rt5660_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_POST_PMU: - snd_soc_update_bits(codec, RT5660_LOUT_AMP_CTRL, + snd_soc_component_update_bits(component, RT5660_LOUT_AMP_CTRL, RT5660_LOUT_CO_MASK | RT5660_LOUT_CB_MASK, RT5660_LOUT_CO_EN | RT5660_LOUT_CB_PU); break; case SND_SOC_DAPM_PRE_PMD: - snd_soc_update_bits(codec, RT5660_LOUT_AMP_CTRL, + snd_soc_component_update_bits(component, RT5660_LOUT_AMP_CTRL, RT5660_LOUT_CO_MASK | RT5660_LOUT_CB_MASK, RT5660_LOUT_CO_DIS | RT5660_LOUT_CB_PD); break; @@ -838,22 +838,22 @@ static int rt5660_lout_event(struct snd_soc_dapm_widget *w, static int rt5660_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 rt5660_priv *rt5660 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = dai->component; + struct rt5660_priv *rt5660 = snd_soc_component_get_drvdata(component); unsigned int val_len = 0, val_clk, mask_clk; int pre_div, bclk_ms, frame_size; rt5660->lrck[dai->id] = params_rate(params); pre_div = rl6231_get_clk_info(rt5660->sysclk, rt5660->lrck[dai->id]); if (pre_div < 0) { - dev_err(codec->dev, "Unsupported clock setting %d for DAI %d\n", + dev_err(component->dev, "Unsupported clock setting %d for DAI %d\n", rt5660->lrck[dai->id], dai->id); return -EINVAL; } frame_size = snd_soc_params_to_frame_size(params); if (frame_size < 0) { - dev_err(codec->dev, "Unsupported frame size: %d\n", frame_size); + dev_err(component->dev, "Unsupported frame size: %d\n", frame_size); return frame_size; } @@ -890,13 +890,13 @@ static int rt5660_hw_params(struct snd_pcm_substream *substream, mask_clk = RT5660_I2S_BCLK_MS1_MASK | RT5660_I2S_PD1_MASK; val_clk = bclk_ms << RT5660_I2S_BCLK_MS1_SFT | pre_div << RT5660_I2S_PD1_SFT; - snd_soc_update_bits(codec, RT5660_I2S1_SDP, RT5660_I2S_DL_MASK, + snd_soc_component_update_bits(component, RT5660_I2S1_SDP, RT5660_I2S_DL_MASK, val_len); - snd_soc_update_bits(codec, RT5660_ADDA_CLK1, mask_clk, val_clk); + snd_soc_component_update_bits(component, RT5660_ADDA_CLK1, mask_clk, val_clk); break; default: - dev_err(codec->dev, "Invalid dai->id: %d\n", dai->id); + dev_err(component->dev, "Invalid dai->id: %d\n", dai->id); return -EINVAL; } @@ -905,8 +905,8 @@ static int rt5660_hw_params(struct snd_pcm_substream *substream, static int rt5660_set_dai_fmt(struct snd_soc_dai *dai, unsigned int fmt) { - struct snd_soc_codec *codec = dai->codec; - struct rt5660_priv *rt5660 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = dai->component; + struct rt5660_priv *rt5660 = snd_soc_component_get_drvdata(component); unsigned int reg_val = 0; switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { @@ -957,13 +957,13 @@ static int rt5660_set_dai_fmt(struct snd_soc_dai *dai, unsigned int fmt) switch (dai->id) { case RT5660_AIF1: - snd_soc_update_bits(codec, RT5660_I2S1_SDP, + snd_soc_component_update_bits(component, RT5660_I2S1_SDP, RT5660_I2S_MS_MASK | RT5660_I2S_BP_MASK | RT5660_I2S_DF_MASK, reg_val); break; default: - dev_err(codec->dev, "Invalid dai->id: %d\n", dai->id); + dev_err(component->dev, "Invalid dai->id: %d\n", dai->id); return -EINVAL; } @@ -973,8 +973,8 @@ static int rt5660_set_dai_fmt(struct snd_soc_dai *dai, unsigned int fmt) static int rt5660_set_dai_sysclk(struct snd_soc_dai *dai, int clk_id, unsigned int freq, int dir) { - struct snd_soc_codec *codec = dai->codec; - struct rt5660_priv *rt5660 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = dai->component; + struct rt5660_priv *rt5660 = snd_soc_component_get_drvdata(component); unsigned int reg_val = 0; if (freq == rt5660->sysclk && clk_id == rt5660->sysclk_src) @@ -994,11 +994,11 @@ static int rt5660_set_dai_sysclk(struct snd_soc_dai *dai, break; default: - dev_err(codec->dev, "Invalid clock id (%d)\n", clk_id); + dev_err(component->dev, "Invalid clock id (%d)\n", clk_id); return -EINVAL; } - snd_soc_update_bits(codec, RT5660_GLB_CLK, RT5660_SCLK_SRC_MASK, + snd_soc_component_update_bits(component, RT5660_GLB_CLK, RT5660_SCLK_SRC_MASK, reg_val); rt5660->sysclk = freq; @@ -1012,8 +1012,8 @@ static int rt5660_set_dai_sysclk(struct snd_soc_dai *dai, static int rt5660_set_dai_pll(struct snd_soc_dai *dai, int pll_id, int source, unsigned int freq_in, unsigned int freq_out) { - struct snd_soc_codec *codec = dai->codec; - struct rt5660_priv *rt5660 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = dai->component; + struct rt5660_priv *rt5660 = snd_soc_component_get_drvdata(component); struct rl6231_pll_code pll_code; int ret; @@ -1022,44 +1022,44 @@ static int rt5660_set_dai_pll(struct snd_soc_dai *dai, int pll_id, int source, return 0; if (!freq_in || !freq_out) { - dev_dbg(codec->dev, "PLL disabled\n"); + dev_dbg(component->dev, "PLL disabled\n"); rt5660->pll_in = 0; rt5660->pll_out = 0; - snd_soc_update_bits(codec, RT5660_GLB_CLK, + snd_soc_component_update_bits(component, RT5660_GLB_CLK, RT5660_SCLK_SRC_MASK, RT5660_SCLK_SRC_MCLK); return 0; } switch (source) { case RT5660_PLL1_S_MCLK: - snd_soc_update_bits(codec, RT5660_GLB_CLK, + snd_soc_component_update_bits(component, RT5660_GLB_CLK, RT5660_PLL1_SRC_MASK, RT5660_PLL1_SRC_MCLK); break; case RT5660_PLL1_S_BCLK: - snd_soc_update_bits(codec, RT5660_GLB_CLK, + snd_soc_component_update_bits(component, RT5660_GLB_CLK, RT5660_PLL1_SRC_MASK, RT5660_PLL1_SRC_BCLK1); break; default: - dev_err(codec->dev, "Unknown PLL source %d\n", source); + dev_err(component->dev, "Unknown PLL source %d\n", source); return -EINVAL; } ret = rl6231_pll_calc(freq_in, freq_out, &pll_code); if (ret < 0) { - dev_err(codec->dev, "Unsupport input clock %d\n", freq_in); + dev_err(component->dev, "Unsupport input clock %d\n", freq_in); return ret; } - dev_dbg(codec->dev, "bypass=%d m=%d n=%d k=%d\n", + dev_dbg(component->dev, "bypass=%d m=%d n=%d k=%d\n", pll_code.m_bp, (pll_code.m_bp ? 0 : pll_code.m_code), pll_code.n_code, pll_code.k_code); - snd_soc_write(codec, RT5660_PLL_CTRL1, + snd_soc_component_write(component, RT5660_PLL_CTRL1, pll_code.n_code << RT5660_PLL_N_SFT | pll_code.k_code); - snd_soc_write(codec, RT5660_PLL_CTRL2, + snd_soc_component_write(component, RT5660_PLL_CTRL2, (pll_code.m_bp ? 0 : pll_code.m_code) << RT5660_PLL_M_SFT | pll_code.m_bp << RT5660_PLL_M_BP_SFT); @@ -1070,10 +1070,10 @@ static int rt5660_set_dai_pll(struct snd_soc_dai *dai, int pll_id, int source, return 0; } -static int rt5660_set_bias_level(struct snd_soc_codec *codec, +static int rt5660_set_bias_level(struct snd_soc_component *component, enum snd_soc_bias_level level) { - struct rt5660_priv *rt5660 = snd_soc_codec_get_drvdata(codec); + struct rt5660_priv *rt5660 = snd_soc_component_get_drvdata(component); int ret; switch (level) { @@ -1081,13 +1081,13 @@ static int rt5660_set_bias_level(struct snd_soc_codec *codec, break; case SND_SOC_BIAS_PREPARE: - snd_soc_update_bits(codec, RT5660_GEN_CTRL1, + snd_soc_component_update_bits(component, RT5660_GEN_CTRL1, RT5660_DIG_GATE_CTRL, RT5660_DIG_GATE_CTRL); if (IS_ERR(rt5660->mclk)) break; - if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_ON) { + if (snd_soc_component_get_bias_level(component) == SND_SOC_BIAS_ON) { clk_disable_unprepare(rt5660->mclk); } else { ret = clk_prepare_enable(rt5660->mclk); @@ -1097,21 +1097,21 @@ static int rt5660_set_bias_level(struct snd_soc_codec *codec, break; case SND_SOC_BIAS_STANDBY: - if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) { - snd_soc_update_bits(codec, RT5660_PWR_ANLG1, + if (snd_soc_component_get_bias_level(component) == SND_SOC_BIAS_OFF) { + snd_soc_component_update_bits(component, RT5660_PWR_ANLG1, RT5660_PWR_VREF1 | RT5660_PWR_MB | RT5660_PWR_BG | RT5660_PWR_VREF2, RT5660_PWR_VREF1 | RT5660_PWR_MB | RT5660_PWR_BG | RT5660_PWR_VREF2); usleep_range(10000, 15000); - snd_soc_update_bits(codec, RT5660_PWR_ANLG1, + snd_soc_component_update_bits(component, RT5660_PWR_ANLG1, RT5660_PWR_FV1 | RT5660_PWR_FV2, RT5660_PWR_FV1 | RT5660_PWR_FV2); } break; case SND_SOC_BIAS_OFF: - snd_soc_update_bits(codec, RT5660_GEN_CTRL1, + snd_soc_component_update_bits(component, RT5660_GEN_CTRL1, RT5660_DIG_GATE_CTRL, 0); break; @@ -1122,24 +1122,24 @@ static int rt5660_set_bias_level(struct snd_soc_codec *codec, return 0; } -static int rt5660_probe(struct snd_soc_codec *codec) +static int rt5660_probe(struct snd_soc_component *component) { - struct rt5660_priv *rt5660 = snd_soc_codec_get_drvdata(codec); + struct rt5660_priv *rt5660 = snd_soc_component_get_drvdata(component); - rt5660->codec = codec; + rt5660->component = component; return 0; } -static int rt5660_remove(struct snd_soc_codec *codec) +static void rt5660_remove(struct snd_soc_component *component) { - return snd_soc_write(codec, RT5660_RESET, 0); + snd_soc_component_write(component, RT5660_RESET, 0); } #ifdef CONFIG_PM -static int rt5660_suspend(struct snd_soc_codec *codec) +static int rt5660_suspend(struct snd_soc_component *component) { - struct rt5660_priv *rt5660 = snd_soc_codec_get_drvdata(codec); + struct rt5660_priv *rt5660 = snd_soc_component_get_drvdata(component); regcache_cache_only(rt5660->regmap, true); regcache_mark_dirty(rt5660->regmap); @@ -1147,9 +1147,9 @@ static int rt5660_suspend(struct snd_soc_codec *codec) return 0; } -static int rt5660_resume(struct snd_soc_codec *codec) +static int rt5660_resume(struct snd_soc_component *component) { - struct rt5660_priv *rt5660 = snd_soc_codec_get_drvdata(codec); + struct rt5660_priv *rt5660 = snd_soc_component_get_drvdata(component); if (rt5660->pdata.poweroff_codec_in_suspend) msleep(350); @@ -1197,21 +1197,21 @@ static int rt5660_resume(struct snd_soc_codec *codec) }, }; -static const struct snd_soc_codec_driver soc_codec_dev_rt5660 = { - .probe = rt5660_probe, - .remove = rt5660_remove, - .suspend = rt5660_suspend, - .resume = rt5660_resume, - .set_bias_level = rt5660_set_bias_level, - .idle_bias_off = true, - .component_driver = { - .controls = rt5660_snd_controls, - .num_controls = ARRAY_SIZE(rt5660_snd_controls), - .dapm_widgets = rt5660_dapm_widgets, - .num_dapm_widgets = ARRAY_SIZE(rt5660_dapm_widgets), - .dapm_routes = rt5660_dapm_routes, - .num_dapm_routes = ARRAY_SIZE(rt5660_dapm_routes), - }, +static const struct snd_soc_component_driver soc_component_dev_rt5660 = { + .probe = rt5660_probe, + .remove = rt5660_remove, + .suspend = rt5660_suspend, + .resume = rt5660_resume, + .set_bias_level = rt5660_set_bias_level, + .controls = rt5660_snd_controls, + .num_controls = ARRAY_SIZE(rt5660_snd_controls), + .dapm_widgets = rt5660_dapm_widgets, + .num_dapm_widgets = ARRAY_SIZE(rt5660_dapm_widgets), + .dapm_routes = rt5660_dapm_routes, + .num_dapm_routes = ARRAY_SIZE(rt5660_dapm_routes), + .use_pmdown_time = 1, + .endianness = 1, + .non_legacy_dai_naming = 1, }; static const struct regmap_config rt5660_regmap = { @@ -1329,17 +1329,11 @@ static int rt5660_i2c_probe(struct i2c_client *i2c, RT5660_SEL_DMIC_DATA_IN1P); } - return snd_soc_register_codec(&i2c->dev, &soc_codec_dev_rt5660, + return devm_snd_soc_register_component(&i2c->dev, + &soc_component_dev_rt5660, rt5660_dai, ARRAY_SIZE(rt5660_dai)); } -static int rt5660_i2c_remove(struct i2c_client *i2c) -{ - snd_soc_unregister_codec(&i2c->dev); - - return 0; -} - static struct i2c_driver rt5660_i2c_driver = { .driver = { .name = "rt5660", @@ -1347,7 +1341,6 @@ static int rt5660_i2c_remove(struct i2c_client *i2c) .of_match_table = of_match_ptr(rt5660_of_match), }, .probe = rt5660_i2c_probe, - .remove = rt5660_i2c_remove, .id_table = rt5660_i2c_id, }; module_i2c_driver(rt5660_i2c_driver); diff --git a/sound/soc/codecs/rt5660.h b/sound/soc/codecs/rt5660.h index bba18fb6..c65de0a 100644 --- a/sound/soc/codecs/rt5660.h +++ b/sound/soc/codecs/rt5660.h @@ -831,7 +831,7 @@ enum { }; struct rt5660_priv { - struct snd_soc_codec *codec; + struct snd_soc_component *component; struct rt5660_platform_data pdata; struct regmap *regmap; struct clk *mclk;