From patchwork Wed Dec 6 02:34:44 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 10094867 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 EECFA60329 for ; Wed, 6 Dec 2017 02:35:38 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EE91F200DF for ; Wed, 6 Dec 2017 02:35:38 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E33F228931; Wed, 6 Dec 2017 02:35:38 +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 B8491200DF for ; Wed, 6 Dec 2017 02:35:37 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id 2DCE82678D0; Wed, 6 Dec 2017 03:35:35 +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 AD3422678CC; Wed, 6 Dec 2017 03:35:33 +0100 (CET) Received: from relmlie1.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by alsa0.perex.cz (Postfix) with ESMTP id E078B2678D3 for ; Wed, 6 Dec 2017 03:34:47 +0100 (CET) Received: from unknown (HELO relmlir3.idc.renesas.com) ([10.200.68.153]) by relmlie1.idc.renesas.com with ESMTP; 06 Dec 2017 11:34:47 +0900 Received: from relmlii2.idc.renesas.com (relmlii2.idc.renesas.com [10.200.68.66]) by relmlir3.idc.renesas.com (Postfix) with ESMTP id 37DDE708C1; Wed, 6 Dec 2017 11:34:47 +0900 (JST) X-IronPort-AV: E=Sophos;i="5.45,366,1508770800"; d="scan'208";a="265527796" Received: from mail-pu1apc01lp0021.outbound.protection.outlook.com (HELO APC01-PU1-obe.outbound.protection.outlook.com) ([65.55.88.21]) by relmlii2.idc.renesas.com with ESMTP/TLS/AES256-SHA256; 06 Dec 2017 11:34:46 +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=Xc3bb1xQ5xSivd+6HzQAC0BoMphhpZDSoquNnmy0xGQ=; b=TR8LpqVcdDwKPE8KKNP7NPphCJses8gchX19r8+GDA0gceSr0j2zW+mAi+UyEuqqQsFNtGt/cUNPoMQRB1kMwyGUAWAUrc79gAXK+e4L9juAF4KsDQOdcLLQXQDfi7X5Ke47LoRYbDJQnVJ7Rlp4vrWxcemO0LmkBRF3efIk6KA= 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 HK2PR0601MB1876.apcprd06.prod.outlook.com (2603:1096:202:a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.282.5; Wed, 6 Dec 2017 02:34:44 +0000 Message-ID: <87d13szj6r.wl%kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto User-Agent: Wanderlust/2.15.9 Emacs/24.3 Mule/6.0 MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") To: Mark Brown In-Reply-To: <87mv2wzjb8.wl%kuninori.morimoto.gx@renesas.com> References: <87mv2wzjb8.wl%kuninori.morimoto.gx@renesas.com> Date: Wed, 6 Dec 2017 02:34:44 +0000 X-Originating-IP: [211.11.155.138] X-ClientProxiedBy: SG2PR0601CA0019.apcprd06.prod.outlook.com (2603:1096:3::29) To HK2PR0601MB1876.apcprd06.prod.outlook.com (2603:1096:202:a::20) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 427e9bc1-854e-4ea0-5d81-08d53c51e95c X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(5600026)(4604075)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(48565401081)(2017052603286); SRVR:HK2PR0601MB1876; X-Microsoft-Exchange-Diagnostics: 1; HK2PR0601MB1876; 3:K+tv2ZchY3FB5OvDXKOg/IfUs6U8YaRgQXNad4u/9jNnFDyWxNWjltJRBU1K44V8sKr+IgHM1SXI6HxvyK8WDj5IeiO7Af+t4UFDj38mo8jf+UT36zSscOPLH/a+vYxxfQ5utdD5s0lHWBsPZe7KfCchhD2L3XPpjHlw+utauPeofTPyDNyLGdjvM56ByjhRSk8RHkqp71xN7TxeIRDnDv+6upR+eJATjC1Sy7zu6Axf/xbhN2JPJ3Eo+OOoA5Rw; 25:6ZnB9nHBBa0heXtqzV9d5I3hkIlyeYHhz4SxM9SARTt7x/6N14kwtxhCHGDcz5WP6RIlLq5S0cHf4cUC3RLp6iSVSwJJzYmMaXBzNpZ/dz5PJ17pOIjl+jd+6k9SHS3YU3ohBdybK3XFbNXvE98lrfsqrWhqp7ZHGu27qj57ZjLu3razFFIk9jRZqXABBkY4TRmEf49m7cin0xKYD2qVT/Mbx0BjOPXVXAiHaqIse/zalUcaQB6T6eQuHATFkXF88i5uAIF4EXhJac2VM/XiOI3CKB86duF1qaPysBxg3LBP8nVzOdCKLYedrhqnQ96xtdZoA4UpSOHPlQsOTGfJbw==; 31:u0LFfBDYpE4YRzwFTlIBNv3Khz/9Wc0tV41tPWCvYjuXe+bPdjf5TgtOgkOywOZ8eFUaE6Crv4/YHP9+6H/V5+13Qhtdiu1+uMmofvzNB4Zbi2oKYPMf+2E1q0TWyMOLZ3AOucoiDk7FelBXjBL5CM+IFWKAif5iEbhACo+8J8jSPwKembsKEjHW17ySwEBazBT5WpaKLDdTwLBdhjfC//VXbevBk0RFsaqyWXBFYz8= X-MS-TrafficTypeDiagnostic: HK2PR0601MB1876: X-Microsoft-Exchange-Diagnostics: 1; HK2PR0601MB1876; 20:GY/i2zDw/WXTHzufQdJtkMSSxPjBwpel5SVonVmwEQ6+ugCKGiW6nnhxhn9qVX+IY4aYu7k61XlPsStlNydUs6XpIEpreYWMQkx83DriFp/iMlbsekQgyQ/5gFq8MEvMThaZUeDW9RvV3LPITB179pVmy4EkG92oayxJ0Q4Bjrkjnmt/T+A4lf5sI6b+3NQ1rzeoQ063Jktgoas3XzibjfG/Cd1iRQCupDU/NIUbZUdJEJMmCxG+vThUa5RBx5JR6KBFhZ2lIGonLKo5XUE5vbUuCViWMxaLaPAJ36UQI4n/BCXR1Bae1q/XgfMsaC9Nx1By6SJFa095PeBR1wNbIeZ+tckMBQyPXQgyLuws+dL9wa+0krBZ60zQ46u1dbhLd90MTtNP2qHlY0vrxZLn77Zcq2sS1XpxoPVIu1abp/qJjthUYE9/NpKa7N3iL+GnIv/s2ufmKgaAPEIFsnDT1fcetNPY6kbHaH5KJnvfa2/pi1TtwxfVMhyVNUqvQPJ9; 4:UU5VckktwChrptEw/yD5DEY3xzsPVJD9w9X7HUeZHYWrqXc+wb5aZVotQ1tte6AdQf/OMeqHo2WxoD03AYQ8ChHO+5GuRodB92B77PAiOx5VOJ98IrivGtlCReF5ZMvq//8yxLY6UpuG0IxDDDS9VBUXGO/dK3HZWdQpiN6vpoXC7ALX1ujEdXyhKuSB9IYDmfR6EcTBhsV8TCdsp7tjjHkGuIwrxXjZH8XpoXlU2u21pEAo4ttUV+C0XNOZfl5qV+xjHAkLj9dq5XWc32YsHwY3D714jppEXwbtFy4VtVGDJhrFuoQhb5x3hiebSPSf X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(2401047)(8121501046)(5005006)(10201501046)(3231022)(93006095)(93001095)(3002001)(6055026)(6041248)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123558100)(20161123555025)(20161123564025)(6072148)(201708071742011); SRVR:HK2PR0601MB1876; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HK2PR0601MB1876; X-Forefront-PRVS: 05134F8B4F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(346002)(366004)(376002)(39860400002)(189003)(199004)(68736007)(50466002)(105586002)(23726003)(4326008)(3846002)(33646002)(81156014)(16586007)(36756003)(58126008)(6116002)(81166006)(7696005)(86362001)(106356001)(8676002)(76176011)(52116002)(97736004)(478600001)(6486002)(8936002)(2906002)(53936002)(83506002)(5660300001)(16526018)(54906003)(101416001)(316002)(6916009)(25786009)(47776003)(53416004)(2950100002)(66066001)(305945005)(7736002)(69596002)(21314002)(16060500001)(309714004); DIR:OUT; SFP:1102; SCL:1; SRVR:HK2PR0601MB1876; 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; HK2PR0601MB1876; 23:nanIwo3BB3pCx3IdX8zK9lRw18uMmNaZO82qInk?= =?us-ascii?Q?KBlqT5Myt2+pjvp9H7AHoeL6HwOJRLvA+DfRe+YTS+Ow7hhuEz6cQs3Uzg+J?= =?us-ascii?Q?P8BWa0ZP4R445jTGSVwS+Y9qORDzoHAre82YN90hUuL3oMLbxVloQASX1x/N?= =?us-ascii?Q?Y59LHeFH+a1UacFQ1/BOc3rmsOnQ4wAbbKdV2h0NV2tNPLCKRVRlyjBrDsP3?= =?us-ascii?Q?fgJLsbZxZKiCMODuwaHkPtlCv7xqJlKcGxaLNIfceWh8aH1/B3Ogs/AwQnX5?= =?us-ascii?Q?Hskk6IwlkV1DHcj/7Q3/RmVMWTJUVPHj742EyntBTzPpDsuJreSdfhTz4Z48?= =?us-ascii?Q?bJf/aHYRW5zSxJRQ9b/4z6dzOdXw5XlxVQEuj88bFV794no3Iuyu0jvMTfmS?= =?us-ascii?Q?Chj+i+/YOCyAPAyY3RBXMa/1//VkeDAsJRb0as/oyqWcHQzRr8B8TL6kP8kR?= =?us-ascii?Q?nVdAXmqR1o5VAVfMakI3RKrMi4m2/6wpwySHfPJl6inGwUZaORAPDqOu63Wx?= =?us-ascii?Q?7eAypTwBzm7LjM+oenjtJKPBeHuPphazrNtnGevx6Dz7iRPR6bW0+XSyLGws?= =?us-ascii?Q?IUeRmWtkHu6t3M/i3FJbSugqjiCfA3dyGQ5oPhNpFDOBp3fAV3MpIvr+4Nt7?= =?us-ascii?Q?A0unR1Maen0ZJVn8YyAcFX4dJjdxYRM0Uhe7JPJl9F57UjcGx8LSzeqp8zQm?= =?us-ascii?Q?kLpZS6cBkGYbaV3HCgR72lolN202VAGQ27eCXYWYJXwpBxgVqm5yfRMLCyJt?= =?us-ascii?Q?1M+9QYlb7yMF8jwkBijq5ZE+IESHPf4yRC+Tb0rbPOVLAx39Z6GSutU/Isgw?= =?us-ascii?Q?9u8BwP1NyMyNnKzBDS9UgSnVAJpuQ60vbeaKTDl3kQ+rEoiYv8pZvFEG0SYL?= =?us-ascii?Q?WRnEp60KtiO9NiNjW1rmfpQ/T3gr3sxcLQi1FqhvCSrHL1EfYNyP5O3jUYxM?= =?us-ascii?Q?JB3f89fWWmQrxIOgGaahkBWwSBtVhcmg996p8b3WmkwRyKBuV3mdEiwi6Aow?= =?us-ascii?Q?Iq6v6uyvjbCuKXvKi7Hq2uvI8uUfibr9FMUQH6M+fpZpF7ZB4Gr/dpWYI34j?= =?us-ascii?Q?QEhfv43Kz23TFzmRc5nTwtn3hrxLFO0ochvcDfABCZpNDXEpr7bUcDaiBzE4?= =?us-ascii?Q?8EtmNQjyTQzC5R/eQdsEDEo7WBDZlGdZjnK68hzeotS7HeAKKMhfiNQ=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; HK2PR0601MB1876; 6:zKWda/UV0PAbiGSQdhVC0yIy03n1QYMLeMZOhH+J2LHsdLGc5+zAQsZiFXmQjCBXijmRMutdWVbfLSXTYK8wmxnz1IxssvJk9N1QiXovfIdOBpCOkp7VK7/kU5TF0klG2/xPqK80hTmp52cppEIAdijgdA7QEWFOOIUvAZaoh2gY7NY4VV5VZUnrGGnEWoA9c5IvBtMFunqfXa/rGnyk6kMyk3V/c+a2g9SHg0QG41k4bB/KEbebVe7os3j2TiuYNgq5YXC0NvlbjeEh4IdI8oXsGFt/gV7rAvEKF/umwUBnXCBVVsJRxhKuEk7ndusQVhPf1ozY6Ir6ClM5oNBp4wDPNzXl0+sxoDJSAy3jexA=; 5:Mv6UvdcFIDCs2kc5sBn9wZN3z54DI4VZoouYbjbsb4IVZAspHtqwZmadsWacoz1196K8X34YjQ3LWbSx4NVeEWDsdW4LHr1YKtcAUM8BzlTrprM2ha86mbYBjvxTuuePMX6v1+zwYUmX9ZoRWmBdqEQ6N9nyq9YLl94AFTroRF8=; 24:Kh7fmuWbwQGFK+7I9SXHmHUnxQz4ke9fSsjXenwCCAASz3zJQqE9vLvxuviBo9DKBmYyP6AUjFnCEVmmpiN3F0ZbzCmaTCotGmAFdVZgo3Q=; 7:PJGgIBusj6DoREg2IvydHu+evCllbmB12ELd7xG8k3K1U+7ixEZZbWxL93TcqcASsCWP1j1fpgYP0UdhNPFSt5/1ZhCNpahPaiMt1HqCUMvzSJinG55AwNj9pclBqXrmSJNJSGwkzEQSNn+NAnYLSAlbxoeWcFitXpzjnv/pTbivaIWv2h42DB19Dm6M4GFlaxqxtzWo1eKTTNWAqcxDbLLpkn3fkReOJjf6Ofi1+S/JcpE6r9kvu5N5P/E5tRou SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HK2PR0601MB1876; 20:93/1CKJWCGPACbnEKoS0R1vw3jtFThclLDRLRn9YAc2ZgcPx0gWu1tIAtYtV6xIFu7npLtwLM9CvXGdXjglCb/jwpbKkanTHcLVZia0BQ0lbH1+f3TbPb8J+JqJk+olN7EJ2TyVsx+q5g6k/bwwA6ySoM/a1hvnyf2V0ARX8r7w= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Dec 2017 02:34:44.0924 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 427e9bc1-854e-4ea0-5d81-08d53c51e95c X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK2PR0601MB1876 Cc: Linux-ALSA , Simon Subject: [alsa-devel] [PATCH 7/x][RFC] ASoC: ac97: 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 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 To keep compatibilty, this patch adds snd_soc_xxx_ac97_codec() macro. These will be removed when all codec code was removed. Signed-off-by: Kuninori Morimoto --- include/sound/soc.h | 13 ++++++-- sound/soc/codecs/ac97.c | 46 +++++++++++++-------------- sound/soc/soc-ac97.c | 84 ++++++++++++++++++++++++++----------------------- 3 files changed, 77 insertions(+), 66 deletions(-) diff --git a/include/sound/soc.h b/include/sound/soc.h index 22f479e..92ef770 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h @@ -586,10 +586,17 @@ int snd_soc_test_bits(struct snd_soc_codec *codec, unsigned int reg, unsigned int mask, unsigned int value); #ifdef CONFIG_SND_SOC_AC97_BUS -struct snd_ac97 *snd_soc_alloc_ac97_codec(struct snd_soc_codec *codec); -struct snd_ac97 *snd_soc_new_ac97_codec(struct snd_soc_codec *codec, +#define snd_soc_alloc_ac97_codec(codec) \ + snd_soc_alloc_ac97_component(&codec->component) +#define snd_soc_new_ac97_codec(codec, id, id_mask) \ + snd_soc_new_ac97_component(&codec->component, id, id_mask) +#define snd_soc_free_ac97_codec(ac97) \ + snd_soc_free_ac97_component(ac97) + +struct snd_ac97 *snd_soc_alloc_ac97_component(struct snd_soc_component *component); +struct snd_ac97 *snd_soc_new_ac97_component(struct snd_soc_component *component, unsigned int id, unsigned int id_mask); -void snd_soc_free_ac97_codec(struct snd_ac97 *ac97); +void snd_soc_free_ac97_component(struct snd_ac97 *ac97); int snd_soc_set_ac97_ops(struct snd_ac97_bus_ops *ops); int snd_soc_set_ac97_ops_of_reset(struct snd_ac97_bus_ops *ops, diff --git a/sound/soc/codecs/ac97.c b/sound/soc/codecs/ac97.c index 440b4ce..432206b 100644 --- a/sound/soc/codecs/ac97.c +++ b/sound/soc/codecs/ac97.c @@ -36,8 +36,8 @@ static int ac97_prepare(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) { - struct snd_soc_codec *codec = dai->codec; - struct snd_ac97 *ac97 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = dai->component; + struct snd_ac97 *ac97 = snd_soc_component_get_drvdata(component); int reg = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) ? AC97_PCM_FRONT_DAC_RATE : AC97_PCM_LR_ADC_RATE; @@ -65,7 +65,7 @@ static int ac97_prepare(struct snd_pcm_substream *substream, .ops = &ac97_dai_ops, }; -static int ac97_soc_probe(struct snd_soc_codec *codec) +static int ac97_soc_probe(struct snd_soc_component *component) { struct snd_ac97 *ac97; struct snd_ac97_bus *ac97_bus; @@ -73,7 +73,7 @@ static int ac97_soc_probe(struct snd_soc_codec *codec) int ret; /* add codec as bus device for standard ac97 */ - ret = snd_ac97_bus(codec->component.card->snd_card, 0, soc_ac97_ops, + ret = snd_ac97_bus(component->card->snd_card, 0, soc_ac97_ops, NULL, &ac97_bus); if (ret < 0) return ret; @@ -83,25 +83,25 @@ static int ac97_soc_probe(struct snd_soc_codec *codec) if (ret < 0) return ret; - snd_soc_codec_set_drvdata(codec, ac97); + snd_soc_component_set_drvdata(component, ac97); return 0; } #ifdef CONFIG_PM -static int ac97_soc_suspend(struct snd_soc_codec *codec) +static int ac97_soc_suspend(struct snd_soc_component *component) { - struct snd_ac97 *ac97 = snd_soc_codec_get_drvdata(codec); + struct snd_ac97 *ac97 = snd_soc_component_get_drvdata(component); snd_ac97_suspend(ac97); return 0; } -static int ac97_soc_resume(struct snd_soc_codec *codec) +static int ac97_soc_resume(struct snd_soc_component *component) { - struct snd_ac97 *ac97 = snd_soc_codec_get_drvdata(codec); + struct snd_ac97 *ac97 = snd_soc_component_get_drvdata(component); snd_ac97_resume(ac97); @@ -112,28 +112,28 @@ static int ac97_soc_resume(struct snd_soc_codec *codec) #define ac97_soc_resume NULL #endif -static const struct snd_soc_codec_driver soc_codec_dev_ac97 = { - .probe = ac97_soc_probe, - .suspend = ac97_soc_suspend, - .resume = ac97_soc_resume, - - .component_driver = { - .dapm_widgets = ac97_widgets, - .num_dapm_widgets = ARRAY_SIZE(ac97_widgets), - .dapm_routes = ac97_routes, - .num_dapm_routes = ARRAY_SIZE(ac97_routes), - }, +static const struct snd_soc_component_driver soc_component_dev_ac97 = { + .probe = ac97_soc_probe, + .suspend = ac97_soc_suspend, + .resume = ac97_soc_resume, + .dapm_widgets = ac97_widgets, + .num_dapm_widgets = ARRAY_SIZE(ac97_widgets), + .dapm_routes = ac97_routes, + .num_dapm_routes = ARRAY_SIZE(ac97_routes), + .idle_bias_on = 1, + .pmdown_time = 1, + .endianness = 1, + .non_legacy_dai_naming = 1, }; static int ac97_probe(struct platform_device *pdev) { - return snd_soc_register_codec(&pdev->dev, - &soc_codec_dev_ac97, &ac97_dai, 1); + return devm_snd_soc_register_component(&pdev->dev, + &soc_component_dev_ac97, &ac97_dai, 1); } static int ac97_remove(struct platform_device *pdev) { - snd_soc_unregister_codec(&pdev->dev); return 0; } diff --git a/sound/soc/soc-ac97.c b/sound/soc/soc-ac97.c index 36dae41..3f424f2 100644 --- a/sound/soc/soc-ac97.c +++ b/sound/soc/soc-ac97.c @@ -44,7 +44,7 @@ struct snd_ac97_gpio_priv { struct gpio_chip gpio_chip; #endif unsigned int gpios_set; - struct snd_soc_codec *codec; + struct snd_soc_component *component; }; static struct snd_ac97_bus soc_ac97_bus = { @@ -57,11 +57,11 @@ static void soc_ac97_device_release(struct device *dev) } #ifdef CONFIG_GPIOLIB -static inline struct snd_soc_codec *gpio_to_codec(struct gpio_chip *chip) +static inline struct snd_soc_component *gpio_to_component(struct gpio_chip *chip) { struct snd_ac97_gpio_priv *gpio_priv = gpiochip_get_data(chip); - return gpio_priv->codec; + return gpio_priv->component; } static int snd_soc_ac97_gpio_request(struct gpio_chip *chip, unsigned offset) @@ -75,20 +75,22 @@ static int snd_soc_ac97_gpio_request(struct gpio_chip *chip, unsigned offset) static int snd_soc_ac97_gpio_direction_in(struct gpio_chip *chip, unsigned offset) { - struct snd_soc_codec *codec = gpio_to_codec(chip); + struct snd_soc_component *component = gpio_to_component(chip); - dev_dbg(codec->dev, "set gpio %d to output\n", offset); - return snd_soc_update_bits(codec, AC97_GPIO_CFG, + dev_dbg(component->dev, "set gpio %d to output\n", offset); + return snd_soc_component_update_bits(component, AC97_GPIO_CFG, 1 << offset, 1 << offset); } static int snd_soc_ac97_gpio_get(struct gpio_chip *chip, unsigned offset) { - struct snd_soc_codec *codec = gpio_to_codec(chip); + struct snd_soc_component *component = gpio_to_component(chip); int ret; - ret = snd_soc_read(codec, AC97_GPIO_STATUS); - dev_dbg(codec->dev, "get gpio %d : %d\n", offset, + if (snd_soc_component_read(component, AC97_GPIO_STATUS, &ret) < 0) + ret = -1; + + dev_dbg(component->dev, "get gpio %d : %d\n", offset, ret < 0 ? ret : ret & (1 << offset)); return ret < 0 ? ret : !!(ret & (1 << offset)); @@ -98,22 +100,24 @@ static void snd_soc_ac97_gpio_set(struct gpio_chip *chip, unsigned offset, int value) { struct snd_ac97_gpio_priv *gpio_priv = gpiochip_get_data(chip); - struct snd_soc_codec *codec = gpio_to_codec(chip); + struct snd_soc_component *component = gpio_to_component(chip); gpio_priv->gpios_set &= ~(1 << offset); gpio_priv->gpios_set |= (!!value) << offset; - snd_soc_write(codec, AC97_GPIO_STATUS, gpio_priv->gpios_set); - dev_dbg(codec->dev, "set gpio %d to %d\n", offset, !!value); + snd_soc_component_write(component, AC97_GPIO_STATUS, + gpio_priv->gpios_set); + dev_dbg(component->dev, "set gpio %d to %d\n", offset, !!value); } static int snd_soc_ac97_gpio_direction_out(struct gpio_chip *chip, unsigned offset, int value) { - struct snd_soc_codec *codec = gpio_to_codec(chip); + struct snd_soc_component *component = gpio_to_component(chip); - dev_dbg(codec->dev, "set gpio %d to output\n", offset); + dev_dbg(component->dev, "set gpio %d to output\n", offset); snd_soc_ac97_gpio_set(chip, offset, value); - return snd_soc_update_bits(codec, AC97_GPIO_CFG, 1 << offset, 0); + return snd_soc_component_update_bits(component, AC97_GPIO_CFG, + 1 << offset, 0); } static const struct gpio_chip snd_soc_ac97_gpio_chip = { @@ -128,24 +132,24 @@ static int snd_soc_ac97_gpio_direction_out(struct gpio_chip *chip, }; static int snd_soc_ac97_init_gpio(struct snd_ac97 *ac97, - struct snd_soc_codec *codec) + struct snd_soc_component *component) { struct snd_ac97_gpio_priv *gpio_priv; int ret; - gpio_priv = devm_kzalloc(codec->dev, sizeof(*gpio_priv), GFP_KERNEL); + gpio_priv = devm_kzalloc(component->dev, sizeof(*gpio_priv), GFP_KERNEL); if (!gpio_priv) return -ENOMEM; ac97->gpio_priv = gpio_priv; - gpio_priv->codec = codec; + gpio_priv->component = component; gpio_priv->gpio_chip = snd_soc_ac97_gpio_chip; gpio_priv->gpio_chip.ngpio = AC97_NUM_GPIOS; - gpio_priv->gpio_chip.parent = codec->dev; + gpio_priv->gpio_chip.parent = component->dev; gpio_priv->gpio_chip.base = -1; ret = gpiochip_add_data(&gpio_priv->gpio_chip, gpio_priv); if (ret != 0) - dev_err(codec->dev, "Failed to add GPIOs: %d\n", ret); + dev_err(component->dev, "Failed to add GPIOs: %d\n", ret); return ret; } @@ -155,7 +159,7 @@ static void snd_soc_ac97_free_gpio(struct snd_ac97 *ac97) } #else static int snd_soc_ac97_init_gpio(struct snd_ac97 *ac97, - struct snd_soc_codec *codec) + struct snd_soc_component *component) { return 0; } @@ -166,8 +170,8 @@ static void snd_soc_ac97_free_gpio(struct snd_ac97 *ac97) #endif /** - * snd_soc_alloc_ac97_codec() - Allocate new a AC'97 device - * @codec: The CODEC for which to create the AC'97 device + * snd_soc_alloc_ac97_component() - Allocate new a AC'97 device + * @component: The COMPONENT for which to create the AC'97 device * * Allocated a new snd_ac97 device and intializes it, but does not yet register * it. The caller is responsible to either call device_add(&ac97->dev) to @@ -175,7 +179,7 @@ static void snd_soc_ac97_free_gpio(struct snd_ac97 *ac97) * * Returns: A snd_ac97 device or a PTR_ERR in case of an error. */ -struct snd_ac97 *snd_soc_alloc_ac97_codec(struct snd_soc_codec *codec) +struct snd_ac97 *snd_soc_alloc_ac97_component(struct snd_soc_component *component) { struct snd_ac97 *ac97; @@ -187,26 +191,26 @@ struct snd_ac97 *snd_soc_alloc_ac97_codec(struct snd_soc_codec *codec) ac97->num = 0; ac97->dev.bus = &ac97_bus_type; - ac97->dev.parent = codec->component.card->dev; + ac97->dev.parent = component->card->dev; ac97->dev.release = soc_ac97_device_release; dev_set_name(&ac97->dev, "%d-%d:%s", - codec->component.card->snd_card->number, 0, - codec->component.name); + component->card->snd_card->number, 0, + component->name); device_initialize(&ac97->dev); return ac97; } -EXPORT_SYMBOL(snd_soc_alloc_ac97_codec); +EXPORT_SYMBOL(snd_soc_alloc_ac97_component); /** - * snd_soc_new_ac97_codec - initailise AC97 device - * @codec: audio codec + * snd_soc_new_ac97_component - initailise AC97 device + * @component: audio component * @id: The expected device ID * @id_mask: Mask that is applied to the device ID before comparing with @id * - * Initialises AC97 codec resources for use by ad-hoc devices only. + * Initialises AC97 component resources for use by ad-hoc devices only. * * If @id is not 0 this function will reset the device, then read the ID from * the device and check if it matches the expected ID. If it doesn't match an @@ -214,20 +218,20 @@ struct snd_ac97 *snd_soc_alloc_ac97_codec(struct snd_soc_codec *codec) * * Returns: A PTR_ERR() on failure or a valid snd_ac97 struct on success. */ -struct snd_ac97 *snd_soc_new_ac97_codec(struct snd_soc_codec *codec, +struct snd_ac97 *snd_soc_new_ac97_component(struct snd_soc_component *component, unsigned int id, unsigned int id_mask) { struct snd_ac97 *ac97; int ret; - ac97 = snd_soc_alloc_ac97_codec(codec); + ac97 = snd_soc_alloc_ac97_component(component); if (IS_ERR(ac97)) return ac97; if (id) { ret = snd_ac97_reset(ac97, false, id, id_mask); if (ret < 0) { - dev_err(codec->dev, "Failed to reset AC97 device: %d\n", + dev_err(component->dev, "Failed to reset AC97 device: %d\n", ret); goto err_put_device; } @@ -237,7 +241,7 @@ struct snd_ac97 *snd_soc_new_ac97_codec(struct snd_soc_codec *codec, if (ret) goto err_put_device; - ret = snd_soc_ac97_init_gpio(ac97, codec); + ret = snd_soc_ac97_init_gpio(ac97, component); if (ret) goto err_put_device; @@ -247,22 +251,22 @@ struct snd_ac97 *snd_soc_new_ac97_codec(struct snd_soc_codec *codec, put_device(&ac97->dev); return ERR_PTR(ret); } -EXPORT_SYMBOL_GPL(snd_soc_new_ac97_codec); +EXPORT_SYMBOL_GPL(snd_soc_new_ac97_component); /** - * snd_soc_free_ac97_codec - free AC97 codec device + * snd_soc_free_ac97_component - free AC97 component device * @ac97: snd_ac97 device to be freed * - * Frees AC97 codec device resources. + * Frees AC97 component device resources. */ -void snd_soc_free_ac97_codec(struct snd_ac97 *ac97) +void snd_soc_free_ac97_component(struct snd_ac97 *ac97) { snd_soc_ac97_free_gpio(ac97); device_del(&ac97->dev); ac97->bus = NULL; put_device(&ac97->dev); } -EXPORT_SYMBOL_GPL(snd_soc_free_ac97_codec); +EXPORT_SYMBOL_GPL(snd_soc_free_ac97_component); static struct snd_ac97_reset_cfg snd_ac97_rst_cfg;