From patchwork Mon Jan 29 04:16:23 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 10189111 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 54F3C60375 for ; Mon, 29 Jan 2018 04:43:40 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 405941FE82 for ; Mon, 29 Jan 2018 04:43:40 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 348EE285D3; Mon, 29 Jan 2018 04:43:40 +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 9F1081FE82 for ; Mon, 29 Jan 2018 04:43:38 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id 26846267C37; Mon, 29 Jan 2018 05:26:46 +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 9F9FE267BF4; Mon, 29 Jan 2018 05:26:40 +0100 (CET) Received: from relmlie1.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by alsa0.perex.cz (Postfix) with ESMTP id 562612678D1 for ; Mon, 29 Jan 2018 05:16:27 +0100 (CET) Received: from unknown (HELO relmlir2.idc.renesas.com) ([10.200.68.152]) by relmlie1.idc.renesas.com with ESMTP; 29 Jan 2018 13:16:26 +0900 Received: from relmlii1.idc.renesas.com (relmlii1.idc.renesas.com [10.200.68.65]) by relmlir2.idc.renesas.com (Postfix) with ESMTP id B35B5511C5; Mon, 29 Jan 2018 13:16:26 +0900 (JST) X-IronPort-AV: E=Sophos;i="5.46,429,1511794800"; d="scan'208";a="269595147" Received: from mail-sg2apc01lp0247.outbound.protection.outlook.com (HELO APC01-SG2-obe.outbound.protection.outlook.com) ([65.55.88.247]) by relmlii1.idc.renesas.com with ESMTP/TLS/AES256-SHA256; 29 Jan 2018 13:16:26 +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=xwS4YSTXB751oILunEkhjRUA4+v9TZ/Rif+81nJUDH8=; b=lU5bydz5b+Ubr2iIaPSq14x8jYziBMXLId+pzwELgKhSzjJ7JVjA3ijd5Aws2R17g3rogoqLxteadIvAe38Kde0CrJQlgpmi8Hf6HdQYb6Xr4Js2couTMTPZpJYnFAM98Lb5Nb7ZZr3chFdqvco/61X4gU9GvAc1O0Iou5pMleQ= 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.444.14; Mon, 29 Jan 2018 04:16:23 +0000 Message-ID: <87vaflxpvi.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:16:23 +0000 X-Originating-IP: [211.11.155.138] X-ClientProxiedBy: KAXPR01CA0046.jpnprd01.prod.outlook.com (2603:1096:402:1a::32) To HK2PR0601MB1873.apcprd06.prod.outlook.com (2603:1096:202:a::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: f380d89b-d793-440f-3c50-08d566cf0f09 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:HK2PR0601MB1873; X-Microsoft-Exchange-Diagnostics: 1; HK2PR0601MB1873; 3:+DgKEhEsxmTmxZFJet55mo0CHtGoe3SUFurKhXf1K7JxRrTtIzI6h+m+qahbo+xj0cPE29MlP7FZaUIXnegU9GqM63jnhGF/M26VpJM3nhpxqmFTe2vcE5Av8JYzeuHERhyla63fT+leAy0HhRl1zU5FvZToNrv2FX1ycVUoekqPV/fVk8P9XnIByO/MY4+HuEh4zXyt6yAnCUzMdVqBxLc3/OtE2sX6KsGdgD9+B1iIIvfWmf2iShECH5Ne0go2; 25:/gvI6gzfkiUOwjWR9zBvbVehqEynmei1PjIQ562+QDAib/vsAhubiXNi1QhL0XmqtZW549TGYiw7PEorkgCRn+hzQWvBJXeAdoE4D++k19p5E0VFmNtSafPoIlsKHXAMgTBcn3WT6tXwRMWtAqfqmr3DrWSK7Dcm0HiSlRXlF8717IrdFOcLuJ+d4+vHVTY8DqeaKyd4e86uyxX+E6oP1fU4mJyrL3Nz2xHBCjW1qWeCU5gyQk457hEfG++Gs9lmF3lZ6EjFWiR9JDoLWSv/U8evgpzwZxTOfs3hH8pckwH2cLiWV4Jgo1nL8RkGYu/ifDgKFYaXVLZKKD7M6QReBQ==; 31:9+sNJGPvMHO+FDWU+M3yAPLfBzeuaUvHvIU0DvXC5S5ZdGZzsx/jzLgLrmAgZ85c30p7yEVLE37yC9V9wcAsfzel8jQeclzgVZI9MtM+Ol2QS+QP4NEcTCzZKLzAq6eTo+ZjduziCJvfvchtfr4kffuYyny3jAsLHHxqSsMW38bOt2yNU1W77inb1S1pNLAGH7tbkw24uOXotvtXgUVEtEPlJI66v4/BCm09a0wzthw= 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:JWOGAo1PYAu6V7zTD9kQbPBwMzpYNNz/i88T9YlmxeuvK2lAfUEyzmijg2Mnha4D0B8/JhrGqW8xaR2Dy+rHeh+y3HhNMkO6QleueX93xlt2mo21nKU/Cr7pHfT33dFawzSLZnvZafsPS7BuMCpMNGdsrSxvEqRmfJqjMYkLWduiQ14tVYM5qiIfqFMwb530Ic72x7pnMHe6P4zC4g5u4SZQOzHG1Fvy0qj5vyW8hsB5skdVSpRD8TFnij8GgaJEbxK+ToZI3reu5EMXZU4Cg4tSQuys2QwhbgtyfOOsMZ6n0xrqevfgHeP1PZRqtZe3BJbWM1P5EKHr2uSZRFYTysWuJ9cW7SF+RXcjpdhZ/pF5LjHMpeJKeZUuJ89jTcSwW81DhHVGrLrZi6vA/0c3fQDAoO+YhJEJUt/zVWhEFcLXTmkC27pX/Q9+H5XKVvlkSAbz8E5aG/a0uxi+4zVBhX1qbS8z/e4R1nth+DodSeP39MI2T30ZK9/2vLB0s6kt; 4:+6bIDqivnDch6LRihGlPFlQmYyTiQjaLBvrXYE4qWSrPvYZYU5qt2KvEzNPoxDh3NLFxFhes0V8VDD5qJX5/+JZYJQ4bl8or6fCZuBO4sNhxCI1KGPRtvM6koKPg6ke29zOSLI2xeWHV29quUQn6y2is5jOIx75leCB79u4qTwCTbXuWBwOQp8bl7njy5ZliKjTJMKJUGsWo/6p0y94m9xKv1OJ3dbaDnvDXkNPtNnyPLecJqd3VxG2CZB6W7ciJZ49IaWXynSK+8qtnJarPBP0SQzHhuBZMNz6brO3LETmsS0wD9XdZxsu2seEWb6jQ 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)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123564045)(20161123560045)(20161123562045)(6072148)(201708071742011); SRVR:HK2PR0601MB1873; BCL:0; PCL:0; RULEID:; SRVR:HK2PR0601MB1873; X-Forefront-PRVS: 0567A15835 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(376002)(346002)(396003)(39860400002)(366004)(39380400002)(189003)(199004)(305945005)(2906002)(4326008)(106356001)(6486002)(53936002)(25786009)(6116002)(7736002)(23726003)(3846002)(97736004)(58126008)(16586007)(478600001)(53416004)(316002)(105586002)(47776003)(16526019)(186003)(36756003)(66066001)(83506002)(52116002)(8676002)(69596002)(81166006)(8936002)(81156014)(50466002)(68736007)(76176011)(5660300001)(7696005)(86362001)(59450400001)(386003)(26005)(6916009)(2950100002)(21314002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:HK2PR0601MB1873; 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; HK2PR0601MB1873; 23:Rs/u7msdYTqSXAoao/DiAOEir96QxJ8/D0cyzBN?= =?us-ascii?Q?alcCUysmsswt9hq1BOTd1XG4ttVlCdOTH4sqfTfn0mKmEEScYs+LJBk7fHeI?= =?us-ascii?Q?KJ5BZ+hGWSwlOeg8H5tgWqCtdTc6aikiGpBmdwcUrW7lzgAc8fpYIEdn5A2G?= =?us-ascii?Q?fGKwikSouPaB2F4dSXXRsT/6OcWQzLnU/GGY1QdZmEUBqAdaLDwiGoEttL/g?= =?us-ascii?Q?xCZmK2emlgj9dCfsI4JlCWybJ1SoDNWrkYb6fbP9IFkMmdzZdtSAkqE/q/dX?= =?us-ascii?Q?nM+vIpUWIBZXCeGQLUmjcnniTT3FATSiWwDykpsDs+72VaX6kf1vETaQG3/f?= =?us-ascii?Q?AsZSUY9tgsAamOpx9evnbuNeDDgVIWQedAaQdZj0meUET2RKnL8qZkpE3hw3?= =?us-ascii?Q?xI1GonkflPq1DZ24JfIu/KnxNb2otTtVPuRVNYbZmHTckgu273lsrTvO84Hp?= =?us-ascii?Q?KdLoljLfWGqBHW6L+fsnGmeJUYrJwBKEG1NzYllArcLWTZvM3g+Axz6y4t24?= =?us-ascii?Q?5mWrOyYVVQ5WFh+Q+B0P4vIGUK8ulHCepzGUd7QnKTGv2bXQJ0u36lR9Yzi2?= =?us-ascii?Q?iXF+ZiyryBJ1A6we5TB2DMEChFgGfYg2w1+RHzLWOhOHBWi5RJ9o1Io0M3Eb?= =?us-ascii?Q?zYLIdF8yOEU8pLHSbagpzM20zmfMb3WC+MTvhIYDOQ1AUj7VMnNglQ8p031h?= =?us-ascii?Q?3NV5n8aoyYmbZbNLmbYZuvop1xVuNapGyncz+it0jDZ5HQq3gSWOMFDUCWI4?= =?us-ascii?Q?okAQglQj2GvgbDJNFICC+46r1pMDhBwOtiJG4y9kc02ZLVMYc9KoLKT3YyxT?= =?us-ascii?Q?eJWVEoPePgvM/sR7Ue4DaPq5KzqAip9SbnQKJGFGOFaPI1K4/reff79um9fn?= =?us-ascii?Q?PX+6QwsptYtiw1zFKWgBbhDCJbecqdQqBlAYezzyG6XCmrGtr5/YjCQUyBZJ?= =?us-ascii?Q?au/6tic25pYJFIebafoUoP14AGuIPtVicpJfaLf4fdFxGZDIK/5Uu+YK8ZYX?= =?us-ascii?Q?8r7OXRSBd70Js32e8U2egvWUTzhDxdSeh2wNtMOeQO8ELivvYx9M8UUfYisF?= =?us-ascii?Q?DUd2PCi/mmax0sIJ3XWRJdhuIogJ2itr3uovNbaSU8UFxO9d/pmmEGR3ziKX?= =?us-ascii?Q?/WSu6fP0hMwL5SPClanRM7cefUXDiEX3NeZgp2tzDBw6c8PzqrwJs3SwfWfO?= =?us-ascii?Q?3dgkmSy1/bFe7UTs=3D?= X-Microsoft-Exchange-Diagnostics: 1; HK2PR0601MB1873; 6:aUjPfYnurR50a3r0fYsPYijEI0qQKYWutRU/yLYnJV5Jmlaoo1R3Q0BxLqqhqYHQD9A9CVwEXGBP8kCA4hRrbnlNElmHPw6fl+2mu3aglccVwx5OnIp+nKLhks2f2Bx8DF1/JJeRV1tFl9KvcSCPczVGaliJilFHlRjeW//ps6/kl+fKymSkSLz4tMGD5fu3OvEKtIvcjpA1p+/+XTTooEmC1Uaton/Vu4MuVJrZoOEcLyluXbGalhlgcU7J/81M0hyIsheRZOkhRtrSOGdT29fYx4PjeUU0XziCbN8JPEi5ZsXhoTF5geUoaaItDroI1hMYcZNDX4zdJnvKQfrJWbZyUbTjkedm+8VPb3uaIiE=; 5:p2JPs8xo64tULro5Ti7rIvfbiOycDbljPQt1SSl0H5bT94ez5fuEYzH53sm8GY3FW0Y8FgALQXexLNL8WuPm4d7zm1MJLebJaNEzy+d1OlaMVxUmCvq3sQ3Z5gBPBGt68goJc1d4UlmzoWu2u7VNfWeM1nbyoJtF1jo5Tt0gfig=; 24:aZIKZGq/mOnH5O8OP0hn1sOddisAVMNSFZE5zcahvIn2vzdD7UTr0addA+fzkJzQ7iITZNljMBa/SH/EYtXsUp0w7bFwhfzSLmZ93D7/7ng=; 7:69/l/CDEfJvnD+dHpk78xmIZdn6X71umvgsuKj02KCHaqHROMoMRts7oTRlmGkwq6I4R0ayV+EgAzVTmT51d95Y5lFn0eL5/pBjMOwR4wlsTZoObQyGHWd0i3O/U2FeAAiBSJywxfI786nnayzTIZDgIWzEckXWzha/Mw/b6MeO9Rzj553FtqL3ddFjNhMR3HL+Q5N9a0TSiL/bEyNpeTpl8QmPnU6iM1IRX+bRCyyiXw6yfrRdteo3jDN4cO2YX SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HK2PR0601MB1873; 20:3CbMhO24NcwBDk39hRdd13xcQOQmpVnTHf0/QitN9W+sUhdYlQuHpAS1311qkc7EuRve6dnZIRfKbfrpichYxlZtSaKRMCb70rct3NpPpEXIcdolpq6tzIbU9cI4ai5lSSy6b4Uho1zSeVAqEUfgZxuij7V/wvmEjxwetRZJ1PA= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jan 2018 04:16:23.6507 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f380d89b-d793-440f-3c50-08d566cf0f09 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 Subject: [alsa-devel] [PATCH v2 115/186] ASoC: tscs42xx: 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/tscs42xx.c | 222 +++++++++++++++++++++----------------------- 1 file changed, 108 insertions(+), 114 deletions(-) diff --git a/sound/soc/codecs/tscs42xx.c b/sound/soc/codecs/tscs42xx.c index e7661d0..f4f8c61 100644 --- a/sound/soc/codecs/tscs42xx.c +++ b/sound/soc/codecs/tscs42xx.c @@ -91,15 +91,15 @@ static bool tscs42xx_precious(struct device *dev, unsigned int reg) }; #define MAX_PLL_LOCK_20MS_WAITS 1 -static bool plls_locked(struct snd_soc_codec *codec) +static bool plls_locked(struct snd_soc_component *component) { int ret; int count = MAX_PLL_LOCK_20MS_WAITS; do { - ret = snd_soc_read(codec, R_PLLCTL0); + ret = snd_soc_component_read32(component, R_PLLCTL0); if (ret < 0) { - dev_err(codec->dev, + dev_err(component->dev, "Failed to read PLL lock status (%d)\n", ret); return false; } else if (ret > 0) { @@ -131,10 +131,10 @@ static int sample_rate_to_pll_freq_out(int sample_rate) } #define DACCRSTAT_MAX_TRYS 10 -static int write_coeff_ram(struct snd_soc_codec *codec, u8 *coeff_ram, +static int write_coeff_ram(struct snd_soc_component *component, u8 *coeff_ram, unsigned int addr, unsigned int coeff_cnt) { - struct tscs42xx *tscs42xx = snd_soc_codec_get_drvdata(codec); + struct tscs42xx *tscs42xx = snd_soc_component_get_drvdata(component); int cnt; int trys; int ret; @@ -142,9 +142,9 @@ static int write_coeff_ram(struct snd_soc_codec *codec, u8 *coeff_ram, for (cnt = 0; cnt < coeff_cnt; cnt++, addr++) { for (trys = 0; trys < DACCRSTAT_MAX_TRYS; trys++) { - ret = snd_soc_read(codec, R_DACCRSTAT); + ret = snd_soc_component_read32(component, R_DACCRSTAT); if (ret < 0) { - dev_err(codec->dev, + dev_err(component->dev, "Failed to read stat (%d)\n", ret); return ret; } @@ -154,14 +154,14 @@ static int write_coeff_ram(struct snd_soc_codec *codec, u8 *coeff_ram, if (trys == DACCRSTAT_MAX_TRYS) { ret = -EIO; - dev_err(codec->dev, + dev_err(component->dev, "dac coefficient write error (%d)\n", ret); return ret; } ret = regmap_write(tscs42xx->regmap, R_DACCRADDR, addr); if (ret < 0) { - dev_err(codec->dev, + dev_err(component->dev, "Failed to write dac ram address (%d)\n", ret); return ret; } @@ -170,7 +170,7 @@ static int write_coeff_ram(struct snd_soc_codec *codec, u8 *coeff_ram, &coeff_ram[addr * COEFF_SIZE], COEFF_SIZE); if (ret < 0) { - dev_err(codec->dev, + dev_err(component->dev, "Failed to write dac ram (%d)\n", ret); return ret; } @@ -179,9 +179,9 @@ static int write_coeff_ram(struct snd_soc_codec *codec, u8 *coeff_ram, return 0; } -static int power_up_audio_plls(struct snd_soc_codec *codec) +static int power_up_audio_plls(struct snd_soc_component *component) { - struct tscs42xx *tscs42xx = snd_soc_codec_get_drvdata(codec); + struct tscs42xx *tscs42xx = snd_soc_component_get_drvdata(component); int freq_out; int ret; unsigned int mask; @@ -199,20 +199,20 @@ static int power_up_audio_plls(struct snd_soc_codec *codec) break; default: ret = -EINVAL; - dev_err(codec->dev, "Unrecognized PLL output freq (%d)\n", ret); + dev_err(component->dev, "Unrecognized PLL output freq (%d)\n", ret); return ret; } mutex_lock(&tscs42xx->pll_lock); - ret = snd_soc_update_bits(codec, R_PLLCTL1C, mask, val); + ret = snd_soc_component_update_bits(component, R_PLLCTL1C, mask, val); if (ret < 0) { - dev_err(codec->dev, "Failed to turn PLL on (%d)\n", ret); + dev_err(component->dev, "Failed to turn PLL on (%d)\n", ret); goto exit; } - if (!plls_locked(codec)) { - dev_err(codec->dev, "Failed to lock plls\n"); + if (!plls_locked(component)) { + dev_err(component->dev, "Failed to lock plls\n"); ret = -ENOMSG; goto exit; } @@ -224,25 +224,25 @@ static int power_up_audio_plls(struct snd_soc_codec *codec) return ret; } -static int power_down_audio_plls(struct snd_soc_codec *codec) +static int power_down_audio_plls(struct snd_soc_component *component) { - struct tscs42xx *tscs42xx = snd_soc_codec_get_drvdata(codec); + struct tscs42xx *tscs42xx = snd_soc_component_get_drvdata(component); int ret; mutex_lock(&tscs42xx->pll_lock); - ret = snd_soc_update_bits(codec, R_PLLCTL1C, + ret = snd_soc_component_update_bits(component, R_PLLCTL1C, RM_PLLCTL1C_PDB_PLL1, RV_PLLCTL1C_PDB_PLL1_DISABLE); if (ret < 0) { - dev_err(codec->dev, "Failed to turn PLL off (%d)\n", ret); + dev_err(component->dev, "Failed to turn PLL off (%d)\n", ret); goto exit; } - ret = snd_soc_update_bits(codec, R_PLLCTL1C, + ret = snd_soc_component_update_bits(component, R_PLLCTL1C, RM_PLLCTL1C_PDB_PLL2, RV_PLLCTL1C_PDB_PLL2_DISABLE); if (ret < 0) { - dev_err(codec->dev, "Failed to turn PLL off (%d)\n", ret); + dev_err(component->dev, "Failed to turn PLL off (%d)\n", ret); goto exit; } @@ -256,8 +256,8 @@ static int power_down_audio_plls(struct snd_soc_codec *codec) static int coeff_ram_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { - struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); - struct tscs42xx *tscs42xx = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol); + struct tscs42xx *tscs42xx = snd_soc_component_get_drvdata(component); struct coeff_ram_ctl *ctl = (struct coeff_ram_ctl *)kcontrol->private_value; struct soc_bytes_ext *params = &ctl->bytes_ext; @@ -275,8 +275,8 @@ static int coeff_ram_get(struct snd_kcontrol *kcontrol, static int coeff_ram_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { - struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); - struct tscs42xx *tscs42xx = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol); + struct tscs42xx *tscs42xx = snd_soc_component_get_drvdata(component); struct coeff_ram_ctl *ctl = (struct coeff_ram_ctl *)kcontrol->private_value; struct soc_bytes_ext *params = &ctl->bytes_ext; @@ -292,11 +292,11 @@ static int coeff_ram_put(struct snd_kcontrol *kcontrol, mutex_lock(&tscs42xx->pll_lock); - if (plls_locked(codec)) { - ret = write_coeff_ram(codec, tscs42xx->coeff_ram, + if (plls_locked(component)) { + ret = write_coeff_ram(component, tscs42xx->coeff_ram, ctl->addr, coeff_cnt); if (ret < 0) { - dev_err(codec->dev, + dev_err(component->dev, "Failed to flush coeff ram cache (%d)\n", ret); goto exit; } @@ -358,13 +358,13 @@ static int dapm_micb_event(struct snd_soc_dapm_widget *w, static int pll_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); int ret; if (SND_SOC_DAPM_EVENT_ON(event)) - ret = power_up_audio_plls(codec); + ret = power_up_audio_plls(component); else - ret = power_down_audio_plls(codec); + ret = power_down_audio_plls(component); return ret; } @@ -372,14 +372,14 @@ static int pll_event(struct snd_soc_dapm_widget *w, static int dac_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 tscs42xx *tscs42xx = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); + struct tscs42xx *tscs42xx = snd_soc_component_get_drvdata(component); int ret; mutex_lock(&tscs42xx->coeff_ram_lock); if (tscs42xx->coeff_ram_synced == false) { - ret = write_coeff_ram(codec, tscs42xx->coeff_ram, 0x00, + ret = write_coeff_ram(component, tscs42xx->coeff_ram, 0x00, COEFF_RAM_COEFF_COUNT); if (ret < 0) goto exit; @@ -790,7 +790,7 @@ static int bytes_info_ext(struct snd_kcontrol *kcontrol, R_DACMBCREL3L, 2), }; -static int setup_sample_format(struct snd_soc_codec *codec, +static int setup_sample_format(struct snd_soc_component *component, snd_pcm_format_t format) { unsigned int width; @@ -811,21 +811,21 @@ static int setup_sample_format(struct snd_soc_codec *codec, break; default: ret = -EINVAL; - dev_err(codec->dev, "Unsupported format width (%d)\n", ret); + dev_err(component->dev, "Unsupported format width (%d)\n", ret); return ret; } - ret = snd_soc_update_bits(codec, R_AIC1, RM_AIC1_WL, width); + ret = snd_soc_component_update_bits(component, R_AIC1, RM_AIC1_WL, width); if (ret < 0) { - dev_err(codec->dev, "Failed to set sample width (%d)\n", ret); + dev_err(component->dev, "Failed to set sample width (%d)\n", ret); return ret; } return 0; } -static int setup_sample_rate(struct snd_soc_codec *codec, unsigned int rate) +static int setup_sample_rate(struct snd_soc_component *component, unsigned int rate) { - struct tscs42xx *tscs42xx = snd_soc_codec_get_drvdata(codec); + struct tscs42xx *tscs42xx = snd_soc_component_get_drvdata(component); unsigned int br, bm; int ret; @@ -871,29 +871,29 @@ static int setup_sample_rate(struct snd_soc_codec *codec, unsigned int rate) bm = RV_DACSR_DBM_2; break; default: - dev_err(codec->dev, "Unsupported sample rate %d\n", rate); + dev_err(component->dev, "Unsupported sample rate %d\n", rate); return -EINVAL; } /* DAC and ADC share bit and frame clock */ - ret = snd_soc_update_bits(codec, R_DACSR, RM_DACSR_DBR, br); + ret = snd_soc_component_update_bits(component, R_DACSR, RM_DACSR_DBR, br); if (ret < 0) { - dev_err(codec->dev, "Failed to update register (%d)\n", ret); + dev_err(component->dev, "Failed to update register (%d)\n", ret); return ret; } - ret = snd_soc_update_bits(codec, R_DACSR, RM_DACSR_DBM, bm); + ret = snd_soc_component_update_bits(component, R_DACSR, RM_DACSR_DBM, bm); if (ret < 0) { - dev_err(codec->dev, "Failed to update register (%d)\n", ret); + dev_err(component->dev, "Failed to update register (%d)\n", ret); return ret; } - ret = snd_soc_update_bits(codec, R_ADCSR, RM_DACSR_DBR, br); + ret = snd_soc_component_update_bits(component, R_ADCSR, RM_DACSR_DBR, br); if (ret < 0) { - dev_err(codec->dev, "Failed to update register (%d)\n", ret); + dev_err(component->dev, "Failed to update register (%d)\n", ret); return ret; } - ret = snd_soc_update_bits(codec, R_ADCSR, RM_DACSR_DBM, bm); + ret = snd_soc_component_update_bits(component, R_ADCSR, RM_DACSR_DBM, bm); if (ret < 0) { - dev_err(codec->dev, "Failed to update register (%d)\n", ret); + dev_err(component->dev, "Failed to update register (%d)\n", ret); return ret; } @@ -1025,7 +1025,7 @@ static const struct pll_ctl *get_pll_ctl(int input_freq) return pll_ctl; } -static int set_pll_ctl_from_input_freq(struct snd_soc_codec *codec, +static int set_pll_ctl_from_input_freq(struct snd_soc_component *component, const int input_freq) { int ret; @@ -1035,18 +1035,18 @@ static int set_pll_ctl_from_input_freq(struct snd_soc_codec *codec, pll_ctl = get_pll_ctl(input_freq); if (!pll_ctl) { ret = -EINVAL; - dev_err(codec->dev, "No PLL input entry for %d (%d)\n", + dev_err(component->dev, "No PLL input entry for %d (%d)\n", input_freq, ret); return ret; } for (i = 0; i < PLL_REG_SETTINGS_COUNT; ++i) { - ret = snd_soc_update_bits(codec, + ret = snd_soc_component_update_bits(component, pll_ctl->settings[i].addr, pll_ctl->settings[i].mask, pll_ctl->settings[i].val); if (ret < 0) { - dev_err(codec->dev, "Failed to set pll ctl (%d)\n", + dev_err(component->dev, "Failed to set pll ctl (%d)\n", ret); return ret; } @@ -1059,33 +1059,33 @@ static int tscs42xx_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params, struct snd_soc_dai *codec_dai) { - struct snd_soc_codec *codec = codec_dai->codec; + struct snd_soc_component *component = codec_dai->component; int ret; - ret = setup_sample_format(codec, params_format(params)); + ret = setup_sample_format(component, params_format(params)); if (ret < 0) { - dev_err(codec->dev, "Failed to setup sample format (%d)\n", + dev_err(component->dev, "Failed to setup sample format (%d)\n", ret); return ret; } - ret = setup_sample_rate(codec, params_rate(params)); + ret = setup_sample_rate(component, params_rate(params)); if (ret < 0) { - dev_err(codec->dev, "Failed to setup sample rate (%d)\n", ret); + dev_err(component->dev, "Failed to setup sample rate (%d)\n", ret); return ret; } return 0; } -static inline int dac_mute(struct snd_soc_codec *codec) +static inline int dac_mute(struct snd_soc_component *component) { int ret; - ret = snd_soc_update_bits(codec, R_CNVRTR1, RM_CNVRTR1_DACMU, + ret = snd_soc_component_update_bits(component, R_CNVRTR1, RM_CNVRTR1_DACMU, RV_CNVRTR1_DACMU_ENABLE); if (ret < 0) { - dev_err(codec->dev, "Failed to mute DAC (%d)\n", + dev_err(component->dev, "Failed to mute DAC (%d)\n", ret); return ret; } @@ -1093,14 +1093,14 @@ static inline int dac_mute(struct snd_soc_codec *codec) return 0; } -static inline int dac_unmute(struct snd_soc_codec *codec) +static inline int dac_unmute(struct snd_soc_component *component) { int ret; - ret = snd_soc_update_bits(codec, R_CNVRTR1, RM_CNVRTR1_DACMU, + ret = snd_soc_component_update_bits(component, R_CNVRTR1, RM_CNVRTR1_DACMU, RV_CNVRTR1_DACMU_DISABLE); if (ret < 0) { - dev_err(codec->dev, "Failed to unmute DAC (%d)\n", + dev_err(component->dev, "Failed to unmute DAC (%d)\n", ret); return ret; } @@ -1108,14 +1108,14 @@ static inline int dac_unmute(struct snd_soc_codec *codec) return 0; } -static inline int adc_mute(struct snd_soc_codec *codec) +static inline int adc_mute(struct snd_soc_component *component) { int ret; - ret = snd_soc_update_bits(codec, R_CNVRTR0, RM_CNVRTR0_ADCMU, + ret = snd_soc_component_update_bits(component, R_CNVRTR0, RM_CNVRTR0_ADCMU, RV_CNVRTR0_ADCMU_ENABLE); if (ret < 0) { - dev_err(codec->dev, "Failed to mute ADC (%d)\n", + dev_err(component->dev, "Failed to mute ADC (%d)\n", ret); return ret; } @@ -1123,14 +1123,14 @@ static inline int adc_mute(struct snd_soc_codec *codec) return 0; } -static inline int adc_unmute(struct snd_soc_codec *codec) +static inline int adc_unmute(struct snd_soc_component *component) { int ret; - ret = snd_soc_update_bits(codec, R_CNVRTR0, RM_CNVRTR0_ADCMU, + ret = snd_soc_component_update_bits(component, R_CNVRTR0, RM_CNVRTR0_ADCMU, RV_CNVRTR0_ADCMU_DISABLE); if (ret < 0) { - dev_err(codec->dev, "Failed to unmute ADC (%d)\n", + dev_err(component->dev, "Failed to unmute ADC (%d)\n", ret); return ret; } @@ -1140,19 +1140,19 @@ static inline int adc_unmute(struct snd_soc_codec *codec) static int tscs42xx_mute_stream(struct snd_soc_dai *dai, int mute, int stream) { - struct snd_soc_codec *codec = dai->codec; + struct snd_soc_component *component = dai->component; int ret; if (mute) if (stream == SNDRV_PCM_STREAM_PLAYBACK) - ret = dac_mute(codec); + ret = dac_mute(component); else - ret = adc_mute(codec); + ret = adc_mute(component); else if (stream == SNDRV_PCM_STREAM_PLAYBACK) - ret = dac_unmute(codec); + ret = dac_unmute(component); else - ret = adc_unmute(codec); + ret = adc_unmute(component); return ret; } @@ -1160,23 +1160,23 @@ static int tscs42xx_mute_stream(struct snd_soc_dai *dai, int mute, int stream) static int tscs42xx_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; int ret; /* Slave mode not supported since it needs always-on frame clock */ switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { case SND_SOC_DAIFMT_CBM_CFM: - ret = snd_soc_update_bits(codec, R_AIC1, RM_AIC1_MS, + ret = snd_soc_component_update_bits(component, R_AIC1, RM_AIC1_MS, RV_AIC1_MS_MASTER); if (ret < 0) { - dev_err(codec->dev, + dev_err(component->dev, "Failed to set codec DAI master (%d)\n", ret); return ret; } break; default: ret = -EINVAL; - dev_err(codec->dev, "Unsupported format (%d)\n", ret); + dev_err(component->dev, "Unsupported format (%d)\n", ret); return ret; } @@ -1186,8 +1186,8 @@ static int tscs42xx_set_dai_fmt(struct snd_soc_dai *codec_dai, static int tscs42xx_set_dai_bclk_ratio(struct snd_soc_dai *codec_dai, unsigned int ratio) { - struct snd_soc_codec *codec = codec_dai->codec; - struct tscs42xx *tscs42xx = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = codec_dai->component; + struct tscs42xx *tscs42xx = snd_soc_component_get_drvdata(component); unsigned int value; int ret = 0; @@ -1202,18 +1202,18 @@ static int tscs42xx_set_dai_bclk_ratio(struct snd_soc_dai *codec_dai, value = RV_DACSR_DBCM_64; break; default: - dev_err(codec->dev, "Unsupported bclk ratio (%d)\n", ret); + dev_err(component->dev, "Unsupported bclk ratio (%d)\n", ret); return -EINVAL; } - ret = snd_soc_update_bits(codec, R_DACSR, RM_DACSR_DBCM, value); + ret = snd_soc_component_update_bits(component, R_DACSR, RM_DACSR_DBCM, value); if (ret < 0) { - dev_err(codec->dev, "Failed to set DAC BCLK ratio (%d)\n", ret); + dev_err(component->dev, "Failed to set DAC BCLK ratio (%d)\n", ret); return ret; } - ret = snd_soc_update_bits(codec, R_ADCSR, RM_ADCSR_ABCM, value); + ret = snd_soc_component_update_bits(component, R_ADCSR, RM_ADCSR_ABCM, value); if (ret < 0) { - dev_err(codec->dev, "Failed to set ADC BCLK ratio (%d)\n", ret); + dev_err(component->dev, "Failed to set ADC BCLK ratio (%d)\n", ret); return ret; } @@ -1229,40 +1229,40 @@ static int tscs42xx_set_dai_bclk_ratio(struct snd_soc_dai *codec_dai, static int tscs42xx_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 snd_soc_component *component = codec_dai->component; int ret; switch (clk_id) { case TSCS42XX_PLL_SRC_XTAL: case TSCS42XX_PLL_SRC_MCLK1: - ret = snd_soc_write(codec, R_PLLREFSEL, + ret = snd_soc_component_write(component, R_PLLREFSEL, RV_PLLREFSEL_PLL1_REF_SEL_XTAL_MCLK1 | RV_PLLREFSEL_PLL2_REF_SEL_XTAL_MCLK1); if (ret < 0) { - dev_err(codec->dev, + dev_err(component->dev, "Failed to set pll reference input (%d)\n", ret); return ret; } break; case TSCS42XX_PLL_SRC_MCLK2: - ret = snd_soc_write(codec, R_PLLREFSEL, + ret = snd_soc_component_write(component, R_PLLREFSEL, RV_PLLREFSEL_PLL1_REF_SEL_MCLK2 | RV_PLLREFSEL_PLL2_REF_SEL_MCLK2); if (ret < 0) { - dev_err(codec->dev, + dev_err(component->dev, "Failed to set PLL reference (%d)\n", ret); return ret; } break; default: - dev_err(codec->dev, "pll src is unsupported\n"); + dev_err(component->dev, "pll src is unsupported\n"); return -EINVAL; } - ret = set_pll_ctl_from_input_freq(codec, freq); + ret = set_pll_ctl_from_input_freq(component, freq); if (ret < 0) { - dev_err(codec->dev, + dev_err(component->dev, "Failed to setup PLL input freq (%d)\n", ret); return ret; } @@ -1304,15 +1304,17 @@ static int part_is_valid(struct tscs42xx *tscs42xx) }; } -static struct snd_soc_codec_driver soc_codec_dev_tscs42xx = { - .component_driver = { - .dapm_widgets = tscs42xx_dapm_widgets, - .num_dapm_widgets = ARRAY_SIZE(tscs42xx_dapm_widgets), - .dapm_routes = tscs42xx_intercon, - .num_dapm_routes = ARRAY_SIZE(tscs42xx_intercon), - .controls = tscs42xx_snd_controls, - .num_controls = ARRAY_SIZE(tscs42xx_snd_controls), - }, +static struct snd_soc_component_driver soc_codec_dev_tscs42xx = { + .dapm_widgets = tscs42xx_dapm_widgets, + .num_dapm_widgets = ARRAY_SIZE(tscs42xx_dapm_widgets), + .dapm_routes = tscs42xx_intercon, + .num_dapm_routes = ARRAY_SIZE(tscs42xx_intercon), + .controls = tscs42xx_snd_controls, + .num_controls = ARRAY_SIZE(tscs42xx_snd_controls), + .idle_bias_on = 1, + .use_pmdown_time = 1, + .endianness = 1, + .non_legacy_dai_naming = 1, }; static inline void init_coeff_ram_cache(struct tscs42xx *tscs42xx) @@ -1407,7 +1409,7 @@ static int tscs42xx_i2c_probe(struct i2c_client *i2c, mutex_init(&tscs42xx->coeff_ram_lock); mutex_init(&tscs42xx->pll_lock); - ret = snd_soc_register_codec(tscs42xx->dev, &soc_codec_dev_tscs42xx, + ret = devm_snd_soc_register_component(tscs42xx->dev, &soc_codec_dev_tscs42xx, &tscs42xx_dai, 1); if (ret) { dev_err(tscs42xx->dev, "Failed to register codec (%d)\n", ret); @@ -1417,13 +1419,6 @@ static int tscs42xx_i2c_probe(struct i2c_client *i2c, return 0; } -static int tscs42xx_i2c_remove(struct i2c_client *client) -{ - snd_soc_unregister_codec(&client->dev); - - return 0; -} - static const struct i2c_device_id tscs42xx_i2c_id[] = { { "tscs42A1", 0 }, { "tscs42A2", 0 }, @@ -1445,7 +1440,6 @@ static int tscs42xx_i2c_remove(struct i2c_client *client) .of_match_table = tscs42xx_of_match, }, .probe = tscs42xx_i2c_probe, - .remove = tscs42xx_i2c_remove, .id_table = tscs42xx_i2c_id, };