From patchwork Fri Sep 1 06:36:53 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 9933577 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 B11A46016C for ; Fri, 1 Sep 2017 06:37:17 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A1C2128542 for ; Fri, 1 Sep 2017 06:37:17 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9678C28546; Fri, 1 Sep 2017 06:37:17 +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 B8DC828542 for ; Fri, 1 Sep 2017 06:37:16 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id 8895D26766E; Fri, 1 Sep 2017 08:37:08 +0200 (CEST) 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 ED36726766F; Fri, 1 Sep 2017 08:37:07 +0200 (CEST) Received: from relmlie3.idc.renesas.com (relmlor4.renesas.com [210.160.252.174]) by alsa0.perex.cz (Postfix) with ESMTP id 0BDC726761C for ; Fri, 1 Sep 2017 08:36:58 +0200 (CEST) Received: from unknown (HELO relmlir4.idc.renesas.com) ([10.200.68.154]) by relmlie3.idc.renesas.com with ESMTP; 01 Sep 2017 15:36:57 +0900 Received: from relmlii1.idc.renesas.com (relmlii1.idc.renesas.com [10.200.68.65]) by relmlir4.idc.renesas.com (Postfix) with ESMTP id 5FB3C72438; Fri, 1 Sep 2017 15:36:57 +0900 (JST) X-IronPort-AV: E=Sophos;i="5.41,456,1498489200"; d="scan'208";a="255518297" Received: from mail-sg2apc01lp0245.outbound.protection.outlook.com (HELO APC01-SG2-obe.outbound.protection.outlook.com) ([65.55.88.245]) by relmlii1.idc.renesas.com with ESMTP/TLS/AES256-SHA256; 01 Sep 2017 15:36:56 +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=okn6HmnsntBQGX3bufKl/Wb7EwNpf11kBH57lzjFKR8=; b=D1l+rUAtZC4pt1XrFOqcj/tY7uFqc4+Nar+IddqZO0SajNhK6+h5YwFaMgGZM3c1x0JlrSQxaEnVzjxQKypd18RHkHmZe4CqX8Iu7WyzrFXpfdX8c3b87mpXdbmqMC423Y8pVQPeKS5wzNrdZ5H/jXL0J0LGkNKpdEYQaNAJfpk= 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.13.10; Fri, 1 Sep 2017 06:36:53 +0000 Message-ID: <87k21jj5ia.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: <87r2vrj5lz.wl%kuninori.morimoto.gx@renesas.com> References: <873787ngjb.wl%kuninori.morimoto.gx@renesas.com> <87r2vrj5lz.wl%kuninori.morimoto.gx@renesas.com> MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Date: Fri, 1 Sep 2017 06:36:53 +0000 X-Originating-IP: [211.11.155.138] X-ClientProxiedBy: OS2PR01CA0121.jpnprd01.prod.outlook.com (2603:1096:602::15) To PS1PR0601MB1882.apcprd06.prod.outlook.com (2603:1096:803:8::20) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 93e9a3ce-c633-452b-74e0-08d4f103d5dd X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(48565401081)(300000503095)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:PS1PR0601MB1882; X-Microsoft-Exchange-Diagnostics: 1; PS1PR0601MB1882; 3:8rOKLKDVk92aDu0HQ26YdyqsDoTxJNQ/n8jj8WYTUSAxk2IHXTjdYAKr5USKtA9KAcNukrxVIprB/YHaNhReVFi5zQ6Jk9eD48YziQvXvtR2EFZzNaViUislfOvdZs489s0oenFIY30xCK3pXS/1gLWUvvBd8MXJF40QlO3uijWX5OFx4k/BrQqT8cZbDsf4d04DLQ/aG0uzt7nQ+Yz/w6b7UOGPzLtUhhXQWl462zvh7MuYYaNAkqstI0j08HXK; 25:zrAucK9wRQB6Zp+8lahBTI35qGvOw9icLYIfr+PCwcEJIlVd4ey8/aVb3FmbySPoU2ZUCqRQhFRYoMvTIgfV9rceUapWma0TsUgI3edPd5X8TnjLJB19D/xGJnJKMTVdU4ewMXvtjaeppRwKucExFsycpQCzqG80NZSPIXBK6MFhgnaaFfj9fDoPNEn4QpGnQXARVHS7Zwto2yN3i0mq5V0nJAwLOPMVmCRuBouBwerJDycmYf4yBd3WMp1gUZPKU7vXDWjaNQwQfUTekVvQsKM5ySHyTZxvVo03FTiSUuWGuRvM2LjTkYdMeGN+JUzL3GqAgC5tOj0gOcKKex9C2g==; 31:aaj6qNcnnPqnLJd39Iax/or67NDPARucbaQLQsMgjxqYDUv15ysnISkCg1aRApr9HC0NiXaMJ7Fwdkp8EY8E51k7OuJboks1/L51IUfvn65CME43T0wSKlaiJrTODcfYunI50Xk6o0AqWlka1p1qW26DS9rptA1l2KRjEeKEXQapcMIBLBbnEzvueeRvs3x1aCHiqtZgHxO+FhQxD5MUaRjqVo8+o789T8hpCeUWz+M= X-MS-TrafficTypeDiagnostic: PS1PR0601MB1882: X-Microsoft-Exchange-Diagnostics: 1; PS1PR0601MB1882; 20:2ga6FdbGj+6f5M0ctPUa+H9IqpwzsCLu1rF+lTdTHWi4t9NfwZ33pKkuRVbFGEJ2IQg/QUykwiHkJ1/jOOqk3me75n80PrpJnSvsXbYdlRIXiW0+kgbC//td6552hl1c905Mxm2Q2dy+qUYZbtV+d1u38+WGyy7dpQkIalPwWAMBUJekDmUrZu+Pvtr487qtBAAn6qRBrhBSmo5p63Kiyu2YL1nEBL8DLn9KM2qcFFnfqicb6FSwkGaDHiH3Ri92rqpO6v81iWkPiug8tq9w+sTpozt7wHuy8OgChEMPRPgr3eo3Nn9vI2Zr+KuiHu1I2cyFrolUd0dGme0J4uIpT7fR0tJurXGsuP3bjbYPqGl/RNtwUd0EK5cLw4D2DWK74Frnp56wtfIKETJyaHqdjrYICVuFAWhFC2UdUS1cSQJxhQqULxMjkTBRutnuCEbl9vfLCHiCi7/fpNHJolytnutBgiYD/hiGjexXcCnIuz0hpPlkiUSg6hzW8h64ubno; 4:QZbTWVEqn8XeQvZAyDmLzGvTRGBPzp30SjOL+V7nhnznicWyuO5ll2znpkeNDzmH+lN49SsTwZpIYXi2Vq95SBuhCjpzdQS9JoHTj9feObXHZJuqsFCOmwTdoI9r26RziQqVyn0hLN7A5wTn1QwNHRUa/6ytkaG5uHee7/6mjCvzIwDOBVxIIS9gEaF3HnSGuXyMAfSrdEYKEYVPL9WURsLXLTgMNrt96faXZe/Qnn14HB26sdAvuTIUK7oV1V1J5A9TEZkODTuu95YIW7THjtKTxpdNSrf+maHpzAbt0Us= X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(93006095)(93001095)(100000703101)(100105400095)(6055026)(6041248)(20161123560025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123562025)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:PS1PR0601MB1882; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:PS1PR0601MB1882; X-Forefront-PRVS: 0417A3FFD2 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(7370300001)(4630300001)(6009001)(39860400002)(199003)(189002)(7736002)(5660300001)(305945005)(105586002)(106356001)(42186005)(101416001)(53416004)(2950100002)(6916009)(4326008)(7350300001)(47776003)(33646002)(110136004)(478600001)(25786009)(23726003)(68736007)(54906002)(69596002)(8676002)(53936002)(6116002)(3846002)(36756003)(189998001)(50466002)(2906002)(81166006)(81156014)(86362001)(4001350100001)(66066001)(97736004)(6486002)(83506001)(54356999)(76176999)(50986999)(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:+eNETaGI9A1puTwN6jKFqwfzc5Ia/CAmvzO+UK+?= =?us-ascii?Q?nQepXRCUoBgII8E/6p4l521OyfJw2bIro4OapF6XQsc6EDWlXGPBjyiVtK9H?= =?us-ascii?Q?25BI1s+kHKV4/QPRKbgGO42CD5FHDJu7Kwlr5NtzQrwPKB1GHeBrS8ASnnuo?= =?us-ascii?Q?Ax/J9njybprHZCKhMOYTmnJbBt78wdNiH+t5M8wAT9JPHxALd/ciI6SDLDAl?= =?us-ascii?Q?xB/8d1z22lJDNzEJF7fWgznfrEYiJ/mwLH1DD+ROVC/FMKqWGqdncllH/bH9?= =?us-ascii?Q?fdfVM0YppjWnPNCJ/yc8SVoUAdwcBKjlfUX4C9Ug+6cJH2xw0Gj1Jz2Q9HI/?= =?us-ascii?Q?hWXvVMBXiQc6BgF5ogdscpj2H5l+7obNPtKcAL9JNRsimU925mTS4EpFJOsZ?= =?us-ascii?Q?tNoKFuXo8qJZQ/AHjYUeyTONWoaKGL/dPZR2eBnCQWSNMQKunyope/CD5Ppb?= =?us-ascii?Q?8+T1hs16SEqH+AtYKS7nUdAA4BHyfvmkkHAaMUzMs13hAD2/8C2O13lqbjUs?= =?us-ascii?Q?McZFhkNvu2Qb+nM7m/kybQGZH3vHRYMD8vUA5ydF1wRhTggpzaseOzg05JRI?= =?us-ascii?Q?8zs+Sl8YicLZDsumiEZ1LzJTauwxATxYtBCS1ur7gioRUtsohe5vTJMwGQBi?= =?us-ascii?Q?VZK6fmLmQja1JGnk8uxMuBG9aMzfv8R2AaU8EKZdn3tTE642ZPDGMv+ArWG3?= =?us-ascii?Q?5lcyHS7OFvrFhki67RJul3PWxiIISCH61X5eSoHt96ec/iwpz+PWRH89Ji3L?= =?us-ascii?Q?QiJ5MHoyfB32UC2AUtUhUE5O4EcRhLpJUgD07Be9Hrji3C1EeispV6NHLPTS?= =?us-ascii?Q?eu/5sUf9ELpvqFY1IXSU/AUJOfYEGA/9HDumED8ldn6VfG6jIZXGWGXkmU71?= =?us-ascii?Q?nIykU6YDsBUuygWE6ATfyYqkEBnxoY38dH3EERiz8e95HINV04mQijBRBgLc?= =?us-ascii?Q?HMrECaSWt2F90Vm/N0ZxamPnn5Wu1cTslke+715BcGxof7llQ7ZvAMFwZpCF?= =?us-ascii?Q?NTxuvl9JALmnPFed56ngzZX0BC5D6Y0eMDbZ0nifSjRvkYeFIu1vnHrqyMVK?= =?us-ascii?Q?bKanK4CgK/NrGNlIj1fFHjAy3tdHDR15ZRjMkA4hJno2PPbfn50gz2B+c6Jc?= =?us-ascii?Q?f6F1vCWRf5NeqJp0eRkPcKHFHJYc9ic9jKfdikpJoiIaJjatq6FYvlW9aPhZ?= =?us-ascii?Q?lYkqtx6zcOecKX/U=3D?= X-Microsoft-Exchange-Diagnostics: 1; PS1PR0601MB1882; 6:6D1ZVdzCW9K6X+KLOXX4R2izDAzsIh2HNEaD2rn4Apac9BUzNRIDPB144e1drgSEbgXLiC2Rhfw5BGywimM2JRpPTd5pYK8QaaiDnR4FjvcsKDv0YGquAYtoBA67T877ohzamBIlEmpsQC4nc3v9VJyqC32hNbj/yKRwy0ynDSYlyDEbTQcOyVBX26IYhwPgpBoptCts2Iqsmcpi7J9dGq5oRFScQCKvPAy0/DodA9iUq3YXzjT9T+i0tNRgpTBpIDXrcVS4ZobmyyZvIi0HYhZTAPQ3LRdeJ5qchX3ldels1TJPUCL7LD1nT9G6up5HLUuQ36KJRhqel8Q+TA7GbQ==; 5:Z49eQz4X6aUNeUtXMg4CBnASNvPzTzixRX6thuc4ZRuegcLLTgoyVpyhVACbX8ZH/cH7n2gIVg6r+9yn1cwW30Ltp66mI8Pn7xaV8440vU0AIEE9mjL3Svq5eN78BZKoNkbqe2pfGqwErTIXoh7l9Q==; 24:MkHKmylX3O74hZ37RNBH71Ms1YZhGTgI4iisoXqJutLVpvEQmScNcq4wjkT6L/8lTQikpzXNNYTsXDwd6ykK8neH9vU/8B8Q4EA40eAeMkA=; 7:4C9z4maNo8rt2r+FWYSvXYrFi3uE1oryJ9QxQ4FRZlPdynuXxEXGNwaQylcM8Tr1aCS+KrHxp1jr5yOQMiPtTtuM2npdjyZ9OG4OIwu6+WL0bLPCEtJqhinI+FQNKH67+2SvDrfkmR0fhMQfUSFMRZSYonV+YvDcUA8Vm6sxdmFAkpHszupsh2FWleEigcQJa3NldGftG3DZMmaHaMzgua8K0VyqRn09hgcEnpt6iA0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; PS1PR0601MB1882; 20:oT/PSTLyqNLjx+4dVLAzDtypcmHDL0xIZPHcJ+COQUlyG2VzPtriXQk6dHSHkQrohy9bHj7DMVXuqXmUUlJLTWt4m6nYOYIpLlhkLKpyISdwU5az8LZVIfI3+MnaCRFpiROS4RqJZOONQ4PWlXeL3CpBP2McTg1SekgU2eHxasE= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2017 06:36:53.7745 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: PS1PR0601MB1882 Cc: Linux-ALSA , Lars-Peter Subject: [alsa-devel] [SAMPLE 5/6] ASoC: convert codec to compoent on stac9766 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 Signed-off-by: Kuninori Morimoto --- sound/soc/codecs/stac9766.c | 77 +++++++++++++++++++++------------------------ 1 file changed, 36 insertions(+), 41 deletions(-) diff --git a/sound/soc/codecs/stac9766.c b/sound/soc/codecs/stac9766.c index c66363a..b9d6979 100644 --- a/sound/soc/codecs/stac9766.c +++ b/sound/soc/codecs/stac9766.c @@ -168,58 +168,58 @@ static SOC_ENUM_SINGLE_DECL(stac9766_stereo_mic_enum, static int ac97_analog_prepare(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) { - struct snd_soc_codec *codec = dai->codec; + struct snd_soc_component *component = dai->component; struct snd_pcm_runtime *runtime = substream->runtime; unsigned short reg; /* enable variable rate audio, disable SPDIF output */ - snd_soc_update_bits(codec, AC97_EXTENDED_STATUS, 0x5, 0x1); + snd_soc_component_update_bits(component, AC97_EXTENDED_STATUS, 0x5, 0x1); if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) reg = AC97_PCM_FRONT_DAC_RATE; else reg = AC97_PCM_LR_ADC_RATE; - return snd_soc_write(codec, reg, runtime->rate); + return snd_soc_component_write(component, reg, runtime->rate); } static int ac97_digital_prepare(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) { - struct snd_soc_codec *codec = dai->codec; + struct snd_soc_component *component = dai->component; struct snd_pcm_runtime *runtime = substream->runtime; unsigned short reg; - snd_soc_write(codec, AC97_SPDIF, 0x2002); + snd_soc_component_write(component, AC97_SPDIF, 0x2002); /* Enable VRA and SPDIF out */ - snd_soc_update_bits(codec, AC97_EXTENDED_STATUS, 0x5, 0x5); + snd_soc_component_update_bits(component, AC97_EXTENDED_STATUS, 0x5, 0x5); reg = AC97_PCM_FRONT_DAC_RATE; - return snd_soc_write(codec, reg, runtime->rate); + return snd_soc_component_write(component, reg, runtime->rate); } -static int stac9766_set_bias_level(struct snd_soc_codec *codec, +static int stac9766_set_bias_level(struct snd_soc_component *component, enum snd_soc_bias_level level) { switch (level) { case SND_SOC_BIAS_ON: /* full On */ case SND_SOC_BIAS_PREPARE: /* partial On */ case SND_SOC_BIAS_STANDBY: /* Off, with power */ - snd_soc_write(codec, AC97_POWERDOWN, 0x0000); + snd_soc_component_write(component, AC97_POWERDOWN, 0x0000); break; case SND_SOC_BIAS_OFF: /* Off, without power */ /* disable everything including AC link */ - snd_soc_write(codec, AC97_POWERDOWN, 0xffff); + snd_soc_component_write(component, AC97_POWERDOWN, 0xffff); break; } return 0; } -static int stac9766_codec_resume(struct snd_soc_codec *codec) +static int stac9766_component_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); return snd_ac97_reset(ac97, true, STAC9766_VENDOR_ID, STAC9766_VENDOR_ID_MASK); @@ -272,13 +272,13 @@ static int stac9766_codec_resume(struct snd_soc_codec *codec) } }; -static int stac9766_codec_probe(struct snd_soc_codec *codec) +static int stac9766_component_probe(struct snd_soc_component *component) { struct snd_ac97 *ac97; struct regmap *regmap; int ret; - ac97 = snd_soc_new_ac97_codec(codec, STAC9766_VENDOR_ID, + ac97 = snd_soc_new_ac97_component(component, STAC9766_VENDOR_ID, STAC9766_VENDOR_ID_MASK); if (IS_ERR(ac97)) return PTR_ERR(ac97); @@ -289,46 +289,42 @@ static int stac9766_codec_probe(struct snd_soc_codec *codec) goto err_free_ac97; } - snd_soc_codec_init_regmap(codec, regmap); - snd_soc_codec_set_drvdata(codec, ac97); + snd_soc_component_init_regmap(component, regmap); + snd_soc_component_set_drvdata(component, ac97); return 0; err_free_ac97: - snd_soc_free_ac97_codec(ac97); + snd_soc_free_ac97_component(ac97); return ret; } -static int stac9766_codec_remove(struct snd_soc_codec *codec) +static void stac9766_component_remove(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_soc_codec_exit_regmap(codec); - snd_soc_free_ac97_codec(ac97); - return 0; + snd_soc_component_exit_regmap(component); + snd_soc_free_ac97_component(ac97); } -static const struct snd_soc_codec_driver soc_codec_dev_stac9766 = { - .component_driver = { - .controls = stac9766_snd_ac97_controls, - .num_controls = ARRAY_SIZE(stac9766_snd_ac97_controls), - }, - .set_bias_level = stac9766_set_bias_level, - .suspend_bias_off = true, - .probe = stac9766_codec_probe, - .remove = stac9766_codec_remove, - .resume = stac9766_codec_resume, +static const struct snd_soc_component_driver soc_component_dev_stac9766 = { + .controls = stac9766_snd_ac97_controls, + .num_controls = ARRAY_SIZE(stac9766_snd_ac97_controls), + .set_bias_level = stac9766_set_bias_level, + .probe = stac9766_component_probe, + .remove = stac9766_component_remove, + .resume = stac9766_component_resume, + .suspend_bias_off = 1, + .idle_bias_on = 1, + .pmdown_time = 1, + .endianness = 1, + .non_legacy_dai_naming = 1, + }; static int stac9766_probe(struct platform_device *pdev) { - return snd_soc_register_codec(&pdev->dev, - &soc_codec_dev_stac9766, stac9766_dai, ARRAY_SIZE(stac9766_dai)); -} - -static int stac9766_remove(struct platform_device *pdev) -{ - snd_soc_unregister_codec(&pdev->dev); - return 0; + return devm_snd_soc_register_component(&pdev->dev, + &soc_component_dev_stac9766, stac9766_dai, ARRAY_SIZE(stac9766_dai)); } static struct platform_driver stac9766_codec_driver = { @@ -337,7 +333,6 @@ static int stac9766_remove(struct platform_device *pdev) }, .probe = stac9766_probe, - .remove = stac9766_remove, }; module_platform_driver(stac9766_codec_driver);