2
2
/*
3
3
* Universal Interface for Intel High Definition Audio Codec
4
4
*
5
- * HD audio interface patch for Silicon Labs 3054/5 modem codec
5
+ * HD audio codec driver for Silicon Labs 3054/5 modem codec
6
6
*
7
7
* Copyright (c) 2005 Sasha Khapyorsky <[email protected] >
8
8
* Takashi Iwai <[email protected] >
@@ -246,50 +246,48 @@ static int si3054_init(struct hda_codec *codec)
246
246
return 0 ;
247
247
}
248
248
249
- static void si3054_free (struct hda_codec * codec )
249
+ static void si3054_remove (struct hda_codec * codec )
250
250
{
251
251
kfree (codec -> spec );
252
252
}
253
253
254
-
255
254
/*
256
255
*/
257
256
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 )
266
258
{
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 )
269
261
return - ENOMEM ;
270
- codec -> spec = spec ;
271
- codec -> patch_ops = si3054_patch_ops ;
272
262
return 0 ;
273
263
}
274
264
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
+
275
273
/*
276
- * patch entries
274
+ * driver entries
277
275
*/
278
276
static 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" ),
287
285
/* VIA HDA on Clevo m540 */
288
- HDA_CODEC_ENTRY (0x11063288 , "Si3054" , patch_si3054 ),
286
+ HDA_CODEC_ID (0x11063288 , "Si3054" ),
289
287
/* Asus A8J Modem (SM56) */
290
- HDA_CODEC_ENTRY (0x15433155 , "Si3054" , patch_si3054 ),
288
+ HDA_CODEC_ID (0x15433155 , "Si3054" ),
291
289
/* LG LW20 modem */
292
- HDA_CODEC_ENTRY (0x18540018 , "Si3054" , patch_si3054 ),
290
+ HDA_CODEC_ID (0x18540018 , "Si3054" ),
293
291
{}
294
292
};
295
293
MODULE_DEVICE_TABLE (hdaudio , snd_hda_id_si3054 );
@@ -299,6 +297,7 @@ MODULE_DESCRIPTION("Si3054 HD-audio modem codec");
299
297
300
298
static struct hda_codec_driver si3054_driver = {
301
299
.id = snd_hda_id_si3054 ,
300
+ .ops = & si3054_codec_ops ,
302
301
};
303
302
304
303
module_hda_codec_driver (si3054_driver );
0 commit comments