22/*
33 * Universal Interface for Intel High Definition Audio Codec
44 *
5- * HD audio interface patch for Silicon Labs 3054/5 modem codec
5+ * HD audio codec driver for Silicon Labs 3054/5 modem codec
66 *
77 * Copyright (c) 2005 Sasha Khapyorsky <sashak@alsa-project.org>
88 * Takashi Iwai <tiwai@suse.de>
@@ -246,50 +246,48 @@ static int si3054_init(struct hda_codec *codec)
246246 return 0 ;
247247}
248248
249- static void si3054_free (struct hda_codec * codec )
249+ static void si3054_remove (struct hda_codec * codec )
250250{
251251 kfree (codec -> spec );
252252}
253253
254-
255254/*
256255 */
257256
258- static const struct hda_codec_ops si3054_patch_ops = {
259- .build_controls = si3054_build_controls ,
260- .build_pcms = si3054_build_pcms ,
261- .init = si3054_init ,
262- .free = si3054_free ,
263- };
264-
265- static int patch_si3054 (struct hda_codec * codec )
257+ static int si3054_probe (struct hda_codec * codec , const struct hda_device_id * id )
266258{
267- struct si3054_spec * spec = kzalloc (sizeof (* spec ), GFP_KERNEL );
268- if (spec == NULL )
259+ codec -> spec = kzalloc (sizeof (struct si3054_spec ), GFP_KERNEL );
260+ if (! codec -> spec )
269261 return - ENOMEM ;
270- codec -> spec = spec ;
271- codec -> patch_ops = si3054_patch_ops ;
272262 return 0 ;
273263}
274264
265+ static const struct hda_codec_ops si3054_codec_ops = {
266+ .probe = si3054_probe ,
267+ .remove = si3054_remove ,
268+ .build_controls = si3054_build_controls ,
269+ .build_pcms = si3054_build_pcms ,
270+ .init = si3054_init ,
271+ };
272+
275273/*
276- * patch entries
274+ * driver entries
277275 */
278276static const struct hda_device_id snd_hda_id_si3054 [] = {
279- HDA_CODEC_ENTRY (0x163c3055 , "Si3054" , patch_si3054 ),
280- HDA_CODEC_ENTRY (0x163c3155 , "Si3054" , patch_si3054 ),
281- HDA_CODEC_ENTRY (0x11c13026 , "Si3054" , patch_si3054 ),
282- HDA_CODEC_ENTRY (0x11c13055 , "Si3054" , patch_si3054 ),
283- HDA_CODEC_ENTRY (0x11c13155 , "Si3054" , patch_si3054 ),
284- HDA_CODEC_ENTRY (0x10573055 , "Si3054" , patch_si3054 ),
285- HDA_CODEC_ENTRY (0x10573057 , "Si3054" , patch_si3054 ),
286- HDA_CODEC_ENTRY (0x10573155 , "Si3054" , patch_si3054 ),
277+ HDA_CODEC_ID (0x163c3055 , "Si3054" ),
278+ HDA_CODEC_ID (0x163c3155 , "Si3054" ),
279+ HDA_CODEC_ID (0x11c13026 , "Si3054" ),
280+ HDA_CODEC_ID (0x11c13055 , "Si3054" ),
281+ HDA_CODEC_ID (0x11c13155 , "Si3054" ),
282+ HDA_CODEC_ID (0x10573055 , "Si3054" ),
283+ HDA_CODEC_ID (0x10573057 , "Si3054" ),
284+ HDA_CODEC_ID (0x10573155 , "Si3054" ),
287285 /* VIA HDA on Clevo m540 */
288- HDA_CODEC_ENTRY (0x11063288 , "Si3054" , patch_si3054 ),
286+ HDA_CODEC_ID (0x11063288 , "Si3054" ),
289287 /* Asus A8J Modem (SM56) */
290- HDA_CODEC_ENTRY (0x15433155 , "Si3054" , patch_si3054 ),
288+ HDA_CODEC_ID (0x15433155 , "Si3054" ),
291289 /* LG LW20 modem */
292- HDA_CODEC_ENTRY (0x18540018 , "Si3054" , patch_si3054 ),
290+ HDA_CODEC_ID (0x18540018 , "Si3054" ),
293291 {}
294292};
295293MODULE_DEVICE_TABLE (hdaudio , snd_hda_id_si3054 );
@@ -299,6 +297,7 @@ MODULE_DESCRIPTION("Si3054 HD-audio modem codec");
299297
300298static struct hda_codec_driver si3054_driver = {
301299 .id = snd_hda_id_si3054 ,
300+ .ops = & si3054_codec_ops ,
302301};
303302
304303module_hda_codec_driver (si3054_driver );
0 commit comments