ALSA: hda - convert to hda_device_id
authorTakashi Iwai <tiwai@suse.de>
Thu, 1 Oct 2015 14:20:04 +0000 (16:20 +0200)
committerTakashi Iwai <tiwai@suse.de>
Tue, 20 Oct 2015 08:15:20 +0000 (10:15 +0200)
Finally we have a proper infrastructure to generate the modaliases
automatically, let's move to hda_device_id from the legacy
hda_codec_preset that contains basically the same information.

The patch function hook is stored in driver_data field, which is long,
and we need an explicit cast.  Other than that, the conversion is
mostly straightforward.  Each entry is even simplified using a macro,
and the lengthy (and error-prone) manual modaliases got removed.

As a result, we achieved a quite good diet:
 14 files changed, 407 insertions(+), 595 deletions(-)

Reviewed-by: Vinod Koul <vinod.koul@intel.com>
Tested-by: Subhransu S Prusty <subhransu.s.prusty@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
14 files changed:
sound/pci/hda/hda_bind.c
sound/pci/hda/hda_codec.h
sound/pci/hda/hda_generic.c
sound/pci/hda/patch_analog.c
sound/pci/hda/patch_ca0110.c
sound/pci/hda/patch_ca0132.c
sound/pci/hda/patch_cirrus.c
sound/pci/hda/patch_cmedia.c
sound/pci/hda/patch_conexant.c
sound/pci/hda/patch_hdmi.c
sound/pci/hda/patch_realtek.c
sound/pci/hda/patch_si3054.c
sound/pci/hda/patch_sigmatel.c
sound/pci/hda/patch_via.c

index 021bcce594473c0dcf38e8ac34a1fb50d323e15b..152acdaa0a45385b43876c1817b1e43bce2c138a 100644 (file)
 #include "hda_local.h"
 
 /*
- * find a matching codec preset
+ * find a matching codec id
  */
 static int hda_codec_match(struct hdac_device *dev, struct hdac_driver *drv)
 {
        struct hda_codec *codec = container_of(dev, struct hda_codec, core);
        struct hda_codec_driver *driver =
                container_of(drv, struct hda_codec_driver, core);
-       const struct hda_codec_preset *preset;
+       const struct hda_device_id *list;
        /* check probe_id instead of vendor_id if set */
        u32 id = codec->probe_id ? codec->probe_id : codec->core.vendor_id;
+       u32 rev_id = codec->core.revision_id;
 
-       for (preset = driver->preset; preset->id; preset++) {
-               if (preset->id == id &&
-                   (!preset->rev || preset->rev == codec->core.revision_id)) {
-                       codec->preset = preset;
+       for (list = driver->id; list->vendor_id; list++) {
+               if (list->vendor_id == id &&
+                   (!list->rev_id || list->rev_id == rev_id)) {
+                       codec->preset = list;
                        return 1;
                }
        }
@@ -77,6 +78,7 @@ static int hda_codec_driver_probe(struct device *dev)
 {
        struct hda_codec *codec = dev_to_hda_codec(dev);
        struct module *owner = dev->driver->owner;
+       hda_codec_patch_t patch;
        int err;
 
        if (WARN_ON(!codec->preset))
@@ -94,9 +96,12 @@ static int hda_codec_driver_probe(struct device *dev)
                goto error;
        }
 
-       err = codec->preset->patch(codec);
-       if (err < 0)
-               goto error_module;
+       patch = (hda_codec_patch_t)codec->preset->driver_data;
+       if (patch) {
+               err = patch(codec);
+               if (err < 0)
+                       goto error_module;
+       }
 
        err = snd_hda_codec_build_pcms(codec);
        if (err < 0)
@@ -173,11 +178,10 @@ static inline bool codec_probed(struct hda_codec *codec)
 static void codec_bind_module(struct hda_codec *codec)
 {
 #ifdef MODULE
-       request_module("snd-hda-codec-id:%08x", codec->core.vendor_id);
-       if (codec_probed(codec))
-               return;
-       request_module("snd-hda-codec-id:%04x*",
-                      (codec->core.vendor_id >> 16) & 0xffff);
+       char modalias[32];
+
+       snd_hdac_codec_modalias(&codec->core, modalias, sizeof(modalias));
+       request_module(modalias);
        if (codec_probed(codec))
                return;
 #endif
index 891864ac60f58603cf496a26d81876ff7fc2c30a..055a80522282be5b3f1da3fae5b6440e6009f2cc 100644 (file)
@@ -22,6 +22,7 @@
 #define __SOUND_HDA_CODEC_H
 
 #include <linux/kref.h>
+#include <linux/mod_devicetable.h>
 #include <sound/info.h>
 #include <sound/control.h>
 #include <sound/pcm.h>
@@ -80,19 +81,21 @@ struct hda_bus {
  * Known codecs have the patch to build and set up the controls/PCMs
  * better than the generic parser.
  */
-struct hda_codec_preset {
-       unsigned int id;
-       unsigned int rev;
-       const char *name;
-       int (*patch)(struct hda_codec *codec);
-};
+typedef int (*hda_codec_patch_t)(struct hda_codec *);
        
 #define HDA_CODEC_ID_GENERIC_HDMI      0x00000101
 #define HDA_CODEC_ID_GENERIC           0x00000201
 
+#define HDA_CODEC_REV_ENTRY(_vid, _rev, _name, _patch) \
+       { .vendor_id = (_vid), .rev_id = (_rev), .name = (_name), \
+         .api_version = HDA_DEV_LEGACY, \
+         .driver_data = (unsigned long)(_patch) }
+#define HDA_CODEC_ENTRY(_vid, _name, _patch) \
+       HDA_CODEC_REV_ENTRY(_vid, 0, _name, _patch)
+
 struct hda_codec_driver {
        struct hdac_driver core;
-       const struct hda_codec_preset *preset;
+       const struct hda_device_id *id;
 };
 
 int __hda_codec_driver_register(struct hda_codec_driver *drv, const char *name,
@@ -183,7 +186,7 @@ struct hda_codec {
        u32 probe_id; /* overridden id for probing */
 
        /* detected preset */
-       const struct hda_codec_preset *preset;
+       const struct hda_device_id *preset;
        const char *modelname;  /* model name for preset */
 
        /* set by patch */
index 24f91114a32cc73f54d72d8b008db51935519893..c6e8a651cea1357df06a2934d1854c926f6e50c4 100644 (file)
@@ -5877,13 +5877,14 @@ error:
        return err;
 }
 
-static const struct hda_codec_preset snd_hda_preset_generic[] = {
-       { .id = HDA_CODEC_ID_GENERIC, .patch = snd_hda_parse_generic_codec },
+static const struct hda_device_id snd_hda_id_generic[] = {
+       HDA_CODEC_ENTRY(HDA_CODEC_ID_GENERIC, "Generic", snd_hda_parse_generic_codec),
        {} /* terminator */
 };
+MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_generic);
 
 static struct hda_codec_driver generic_driver = {
-       .preset = snd_hda_preset_generic,
+       .id = snd_hda_id_generic,
 };
 
 module_hda_codec_driver(generic_driver);
index c033a4ee65470fb592e77836437262063f00f125..e0fb8c6d1bc274e4ff5f6a8bf55afa9852bf9026 100644 (file)
@@ -1165,32 +1165,31 @@ static int patch_ad1882(struct hda_codec *codec)
 /*
  * patch entries
  */
-static const struct hda_codec_preset snd_hda_preset_analog[] = {
-       { .id = 0x11d4184a, .name = "AD1884A", .patch = patch_ad1884 },
-       { .id = 0x11d41882, .name = "AD1882", .patch = patch_ad1882 },
-       { .id = 0x11d41883, .name = "AD1883", .patch = patch_ad1884 },
-       { .id = 0x11d41884, .name = "AD1884", .patch = patch_ad1884 },
-       { .id = 0x11d4194a, .name = "AD1984A", .patch = patch_ad1884 },
-       { .id = 0x11d4194b, .name = "AD1984B", .patch = patch_ad1884 },
-       { .id = 0x11d41981, .name = "AD1981", .patch = patch_ad1981 },
-       { .id = 0x11d41983, .name = "AD1983", .patch = patch_ad1983 },
-       { .id = 0x11d41984, .name = "AD1984", .patch = patch_ad1884 },
-       { .id = 0x11d41986, .name = "AD1986A", .patch = patch_ad1986a },
-       { .id = 0x11d41988, .name = "AD1988", .patch = patch_ad1988 },
-       { .id = 0x11d4198b, .name = "AD1988B", .patch = patch_ad1988 },
-       { .id = 0x11d4882a, .name = "AD1882A", .patch = patch_ad1882 },
-       { .id = 0x11d4989a, .name = "AD1989A", .patch = patch_ad1988 },
-       { .id = 0x11d4989b, .name = "AD1989B", .patch = patch_ad1988 },
+static const struct hda_device_id snd_hda_id_analog[] = {
+       HDA_CODEC_ENTRY(0x11d4184a, "AD1884A", patch_ad1884),
+       HDA_CODEC_ENTRY(0x11d41882, "AD1882", patch_ad1882),
+       HDA_CODEC_ENTRY(0x11d41883, "AD1883", patch_ad1884),
+       HDA_CODEC_ENTRY(0x11d41884, "AD1884", patch_ad1884),
+       HDA_CODEC_ENTRY(0x11d4194a, "AD1984A", patch_ad1884),
+       HDA_CODEC_ENTRY(0x11d4194b, "AD1984B", patch_ad1884),
+       HDA_CODEC_ENTRY(0x11d41981, "AD1981", patch_ad1981),
+       HDA_CODEC_ENTRY(0x11d41983, "AD1983", patch_ad1983),
+       HDA_CODEC_ENTRY(0x11d41984, "AD1984", patch_ad1884),
+       HDA_CODEC_ENTRY(0x11d41986, "AD1986A", patch_ad1986a),
+       HDA_CODEC_ENTRY(0x11d41988, "AD1988", patch_ad1988),
+       HDA_CODEC_ENTRY(0x11d4198b, "AD1988B", patch_ad1988),
+       HDA_CODEC_ENTRY(0x11d4882a, "AD1882A", patch_ad1882),
+       HDA_CODEC_ENTRY(0x11d4989a, "AD1989A", patch_ad1988),
+       HDA_CODEC_ENTRY(0x11d4989b, "AD1989B", patch_ad1988),
        {} /* terminator */
 };
-
-MODULE_ALIAS("snd-hda-codec-id:11d4*");
+MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_analog);
 
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("Analog Devices HD-audio codec");
 
 static struct hda_codec_driver analog_driver = {
-       .preset = snd_hda_preset_analog,
+       .id = snd_hda_id_analog,
 };
 
 module_hda_codec_driver(analog_driver);
index 484bbf4134cd127e8b9a9cf03bbc66ab361755f6..c2d9ee9cfdc00900aee82957fee356442710faa3 100644 (file)
@@ -83,22 +83,19 @@ static int patch_ca0110(struct hda_codec *codec)
 /*
  * patch entries
  */
-static const struct hda_codec_preset snd_hda_preset_ca0110[] = {
-       { .id = 0x1102000a, .name = "CA0110-IBG", .patch = patch_ca0110 },
-       { .id = 0x1102000b, .name = "CA0110-IBG", .patch = patch_ca0110 },
-       { .id = 0x1102000d, .name = "SB0880 X-Fi", .patch = patch_ca0110 },
+static const struct hda_device_id snd_hda_id_ca0110[] = {
+       HDA_CODEC_ENTRY(0x1102000a, "CA0110-IBG", patch_ca0110),
+       HDA_CODEC_ENTRY(0x1102000b, "CA0110-IBG", patch_ca0110),
+       HDA_CODEC_ENTRY(0x1102000d, "SB0880 X-Fi", patch_ca0110),
        {} /* terminator */
 };
-
-MODULE_ALIAS("snd-hda-codec-id:1102000a");
-MODULE_ALIAS("snd-hda-codec-id:1102000b");
-MODULE_ALIAS("snd-hda-codec-id:1102000d");
+MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_ca0110);
 
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("Creative CA0110-IBG HD-audio codec");
 
 static struct hda_codec_driver ca0110_driver = {
-       .preset = snd_hda_preset_ca0110,
+       .id = snd_hda_id_ca0110,
 };
 
 module_hda_codec_driver(ca0110_driver);
index 186792fe226e08d95d8bb67c959e0fbd7d86bd25..3a02e5c14d09b7321cc2604fb88a2ca0a05bde31 100644 (file)
@@ -4778,18 +4778,17 @@ static int patch_ca0132(struct hda_codec *codec)
 /*
  * patch entries
  */
-static struct hda_codec_preset snd_hda_preset_ca0132[] = {
-       { .id = 0x11020011, .name = "CA0132",     .patch = patch_ca0132 },
+static struct hda_device_id snd_hda_id_ca0132[] = {
+       HDA_CODEC_ENTRY(0x11020011, "CA0132", patch_ca0132),
        {} /* terminator */
 };
-
-MODULE_ALIAS("snd-hda-codec-id:11020011");
+MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_ca0132);
 
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("Creative Sound Core3D codec");
 
 static struct hda_codec_driver ca0132_driver = {
-       .preset = snd_hda_preset_ca0132,
+       .id = snd_hda_id_ca0132,
 };
 
 module_hda_codec_driver(ca0132_driver);
index 01c464a468f6b5ef506387fecb77297fdf9f3d90..a12ae8ac091451261a2ba613543677fabedb8cd0 100644 (file)
@@ -1201,26 +1201,21 @@ static int patch_cs4213(struct hda_codec *codec)
 /*
  * patch entries
  */
-static const struct hda_codec_preset snd_hda_preset_cirrus[] = {
-       { .id = 0x10134206, .name = "CS4206", .patch = patch_cs420x },
-       { .id = 0x10134207, .name = "CS4207", .patch = patch_cs420x },
-       { .id = 0x10134208, .name = "CS4208", .patch = patch_cs4208 },
-       { .id = 0x10134210, .name = "CS4210", .patch = patch_cs4210 },
-       { .id = 0x10134213, .name = "CS4213", .patch = patch_cs4213 },
+static const struct hda_device_id snd_hda_id_cirrus[] = {
+       HDA_CODEC_ENTRY(0x10134206, "CS4206", patch_cs420x),
+       HDA_CODEC_ENTRY(0x10134207, "CS4207", patch_cs420x),
+       HDA_CODEC_ENTRY(0x10134208, "CS4208", patch_cs4208),
+       HDA_CODEC_ENTRY(0x10134210, "CS4210", patch_cs4210),
+       HDA_CODEC_ENTRY(0x10134213, "CS4213", patch_cs4213),
        {} /* terminator */
 };
-
-MODULE_ALIAS("snd-hda-codec-id:10134206");
-MODULE_ALIAS("snd-hda-codec-id:10134207");
-MODULE_ALIAS("snd-hda-codec-id:10134208");
-MODULE_ALIAS("snd-hda-codec-id:10134210");
-MODULE_ALIAS("snd-hda-codec-id:10134213");
+MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_cirrus);
 
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("Cirrus Logic HD-audio codec");
 
 static struct hda_codec_driver cirrus_driver = {
-       .preset = snd_hda_preset_cirrus,
+       .id = snd_hda_id_cirrus,
 };
 
 module_hda_codec_driver(cirrus_driver);
index f5ed078710f8494918786657613180f1d75a2286..1b2195dd2b26588d8075f79b14636cef1ced47b3 100644 (file)
@@ -123,22 +123,19 @@ static int patch_cmi8888(struct hda_codec *codec)
 /*
  * patch entries
  */
-static const struct hda_codec_preset snd_hda_preset_cmedia[] = {
-       { .id = 0x13f68888, .name = "CMI8888", .patch = patch_cmi8888 },
-       { .id = 0x13f69880, .name = "CMI9880", .patch = patch_cmi9880 },
-       { .id = 0x434d4980, .name = "CMI9880", .patch = patch_cmi9880 },
+static const struct hda_device_id snd_hda_id_cmedia[] = {
+       HDA_CODEC_ENTRY(0x13f68888, "CMI8888", patch_cmi8888),
+       HDA_CODEC_ENTRY(0x13f69880, "CMI9880", patch_cmi9880),
+       HDA_CODEC_ENTRY(0x434d4980, "CMI9880", patch_cmi9880),
        {} /* terminator */
 };
-
-MODULE_ALIAS("snd-hda-codec-id:13f68888");
-MODULE_ALIAS("snd-hda-codec-id:13f69880");
-MODULE_ALIAS("snd-hda-codec-id:434d4980");
+MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_cmedia);
 
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("C-Media HD-audio codec");
 
 static struct hda_codec_driver cmedia_driver = {
-       .preset = snd_hda_preset_cmedia,
+       .id = snd_hda_id_cmedia,
 };
 
 module_hda_codec_driver(cmedia_driver);
index 2f0ec7c45fc70d6232339761e5773349d24213a9..c8b8ef5246a6f94c99b281c837e220e118dbf8a9 100644 (file)
@@ -954,100 +954,44 @@ static int patch_conexant_auto(struct hda_codec *codec)
 /*
  */
 
-static const struct hda_codec_preset snd_hda_preset_conexant[] = {
-       { .id = 0x14f15045, .name = "CX20549 (Venice)",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f15047, .name = "CX20551 (Waikiki)",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f15051, .name = "CX20561 (Hermosa)",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f15066, .name = "CX20582 (Pebble)",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f15067, .name = "CX20583 (Pebble HSF)",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f15068, .name = "CX20584",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f15069, .name = "CX20585",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f1506c, .name = "CX20588",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f1506e, .name = "CX20590",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f15097, .name = "CX20631",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f15098, .name = "CX20632",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f150a1, .name = "CX20641",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f150a2, .name = "CX20642",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f150ab, .name = "CX20651",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f150ac, .name = "CX20652",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f150b8, .name = "CX20664",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f150b9, .name = "CX20665",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f150f1, .name = "CX20721",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f150f2, .name = "CX20722",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f150f3, .name = "CX20723",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f150f4, .name = "CX20724",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f1510f, .name = "CX20751/2",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f15110, .name = "CX20751/2",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f15111, .name = "CX20753/4",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f15113, .name = "CX20755",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f15114, .name = "CX20756",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f15115, .name = "CX20757",
-         .patch = patch_conexant_auto },
-       { .id = 0x14f151d7, .name = "CX20952",
-         .patch = patch_conexant_auto },
+static const struct hda_device_id snd_hda_id_conexant[] = {
+       HDA_CODEC_ENTRY(0x14f15045, "CX20549 (Venice)", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f15047, "CX20551 (Waikiki)", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f15051, "CX20561 (Hermosa)", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f15066, "CX20582 (Pebble)", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f15067, "CX20583 (Pebble HSF)", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f15068, "CX20584", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f15069, "CX20585", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f1506c, "CX20588", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f1506e, "CX20590", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f15097, "CX20631", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f15098, "CX20632", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f150a1, "CX20641", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f150a2, "CX20642", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f150ab, "CX20651", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f150ac, "CX20652", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f150b8, "CX20664", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f150b9, "CX20665", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f150f1, "CX20721", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f150f2, "CX20722", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f150f3, "CX20723", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f150f4, "CX20724", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f1510f, "CX20751/2", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f15110, "CX20751/2", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f15111, "CX20753/4", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f15113, "CX20755", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f15114, "CX20756", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f15115, "CX20757", patch_conexant_auto),
+       HDA_CODEC_ENTRY(0x14f151d7, "CX20952", patch_conexant_auto),
        {} /* terminator */
 };
-
-MODULE_ALIAS("snd-hda-codec-id:14f15045");
-MODULE_ALIAS("snd-hda-codec-id:14f15047");
-MODULE_ALIAS("snd-hda-codec-id:14f15051");
-MODULE_ALIAS("snd-hda-codec-id:14f15066");
-MODULE_ALIAS("snd-hda-codec-id:14f15067");
-MODULE_ALIAS("snd-hda-codec-id:14f15068");
-MODULE_ALIAS("snd-hda-codec-id:14f15069");
-MODULE_ALIAS("snd-hda-codec-id:14f1506c");
-MODULE_ALIAS("snd-hda-codec-id:14f1506e");
-MODULE_ALIAS("snd-hda-codec-id:14f15097");
-MODULE_ALIAS("snd-hda-codec-id:14f15098");
-MODULE_ALIAS("snd-hda-codec-id:14f150a1");
-MODULE_ALIAS("snd-hda-codec-id:14f150a2");
-MODULE_ALIAS("snd-hda-codec-id:14f150ab");
-MODULE_ALIAS("snd-hda-codec-id:14f150ac");
-MODULE_ALIAS("snd-hda-codec-id:14f150b8");
-MODULE_ALIAS("snd-hda-codec-id:14f150b9");
-MODULE_ALIAS("snd-hda-codec-id:14f150f1");
-MODULE_ALIAS("snd-hda-codec-id:14f150f2");
-MODULE_ALIAS("snd-hda-codec-id:14f150f3");
-MODULE_ALIAS("snd-hda-codec-id:14f150f4");
-MODULE_ALIAS("snd-hda-codec-id:14f1510f");
-MODULE_ALIAS("snd-hda-codec-id:14f15110");
-MODULE_ALIAS("snd-hda-codec-id:14f15111");
-MODULE_ALIAS("snd-hda-codec-id:14f15113");
-MODULE_ALIAS("snd-hda-codec-id:14f15114");
-MODULE_ALIAS("snd-hda-codec-id:14f15115");
-MODULE_ALIAS("snd-hda-codec-id:14f151d7");
+MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_conexant);
 
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("Conexant HD-audio codec");
 
 static struct hda_codec_driver conexant_driver = {
-       .preset = snd_hda_preset_conexant,
+       .id = snd_hda_id_conexant,
 };
 
 module_hda_codec_driver(conexant_driver);
index 3a2d4a5a171467b2bca7ec293e80b696ebba5f6d..f503a883bef31d0fd55a38dd816f70609edcaf82 100644 (file)
@@ -2580,7 +2580,7 @@ static int simple_playback_pcm_open(struct hda_pcm_stream *hinfo,
        struct hdmi_spec *spec = codec->spec;
        struct snd_pcm_hw_constraint_list *hw_constraints_channels = NULL;
 
-       switch (codec->preset->id) {
+       switch (codec->preset->vendor_id) {
        case 0x10de0002:
        case 0x10de0003:
        case 0x10de0005:
@@ -2898,7 +2898,7 @@ static int nvhdmi_7x_8ch_build_controls(struct hda_codec *codec)
                                     snd_pcm_alt_chmaps, 8, 0, &chmap);
        if (err < 0)
                return err;
-       switch (codec->preset->id) {
+       switch (codec->preset->vendor_id) {
        case 0x10de0002:
        case 0x10de0003:
        case 0x10de0005:
@@ -3506,138 +3506,77 @@ static int patch_via_hdmi(struct hda_codec *codec)
 /*
  * patch entries
  */
-static const struct hda_codec_preset snd_hda_preset_hdmi[] = {
-{ .id = 0x1002793c, .name = "RS600 HDMI",      .patch = patch_atihdmi },
-{ .id = 0x10027919, .name = "RS600 HDMI",      .patch = patch_atihdmi },
-{ .id = 0x1002791a, .name = "RS690/780 HDMI",  .patch = patch_atihdmi },
-{ .id = 0x1002aa01, .name = "R6xx HDMI",       .patch = patch_atihdmi },
-{ .id = 0x10951390, .name = "SiI1390 HDMI",    .patch = patch_generic_hdmi },
-{ .id = 0x10951392, .name = "SiI1392 HDMI",    .patch = patch_generic_hdmi },
-{ .id = 0x17e80047, .name = "Chrontel HDMI",   .patch = patch_generic_hdmi },
-{ .id = 0x10de0002, .name = "MCP77/78 HDMI",   .patch = patch_nvhdmi_8ch_7x },
-{ .id = 0x10de0003, .name = "MCP77/78 HDMI",   .patch = patch_nvhdmi_8ch_7x },
-{ .id = 0x10de0005, .name = "MCP77/78 HDMI",   .patch = patch_nvhdmi_8ch_7x },
-{ .id = 0x10de0006, .name = "MCP77/78 HDMI",   .patch = patch_nvhdmi_8ch_7x },
-{ .id = 0x10de0007, .name = "MCP79/7A HDMI",   .patch = patch_nvhdmi_8ch_7x },
-{ .id = 0x10de000a, .name = "GPU 0a HDMI/DP",  .patch = patch_nvhdmi },
-{ .id = 0x10de000b, .name = "GPU 0b HDMI/DP",  .patch = patch_nvhdmi },
-{ .id = 0x10de000c, .name = "MCP89 HDMI",      .patch = patch_nvhdmi },
-{ .id = 0x10de000d, .name = "GPU 0d HDMI/DP",  .patch = patch_nvhdmi },
-{ .id = 0x10de0010, .name = "GPU 10 HDMI/DP",  .patch = patch_nvhdmi },
-{ .id = 0x10de0011, .name = "GPU 11 HDMI/DP",  .patch = patch_nvhdmi },
-{ .id = 0x10de0012, .name = "GPU 12 HDMI/DP",  .patch = patch_nvhdmi },
-{ .id = 0x10de0013, .name = "GPU 13 HDMI/DP",  .patch = patch_nvhdmi },
-{ .id = 0x10de0014, .name = "GPU 14 HDMI/DP",  .patch = patch_nvhdmi },
-{ .id = 0x10de0015, .name = "GPU 15 HDMI/DP",  .patch = patch_nvhdmi },
-{ .id = 0x10de0016, .name = "GPU 16 HDMI/DP",  .patch = patch_nvhdmi },
+static const struct hda_device_id snd_hda_id_hdmi[] = {
+HDA_CODEC_ENTRY(0x1002793c, "RS600 HDMI",      patch_atihdmi),
+HDA_CODEC_ENTRY(0x10027919, "RS600 HDMI",      patch_atihdmi),
+HDA_CODEC_ENTRY(0x1002791a, "RS690/780 HDMI",  patch_atihdmi),
+HDA_CODEC_ENTRY(0x1002aa01, "R6xx HDMI",       patch_atihdmi),
+HDA_CODEC_ENTRY(0x10951390, "SiI1390 HDMI",    patch_generic_hdmi),
+HDA_CODEC_ENTRY(0x10951392, "SiI1392 HDMI",    patch_generic_hdmi),
+HDA_CODEC_ENTRY(0x17e80047, "Chrontel HDMI",   patch_generic_hdmi),
+HDA_CODEC_ENTRY(0x10de0002, "MCP77/78 HDMI",   patch_nvhdmi_8ch_7x),
+HDA_CODEC_ENTRY(0x10de0003, "MCP77/78 HDMI",   patch_nvhdmi_8ch_7x),
+HDA_CODEC_ENTRY(0x10de0005, "MCP77/78 HDMI",   patch_nvhdmi_8ch_7x),
+HDA_CODEC_ENTRY(0x10de0006, "MCP77/78 HDMI",   patch_nvhdmi_8ch_7x),
+HDA_CODEC_ENTRY(0x10de0007, "MCP79/7A HDMI",   patch_nvhdmi_8ch_7x),
+HDA_CODEC_ENTRY(0x10de000a, "GPU 0a HDMI/DP",  patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de000b, "GPU 0b HDMI/DP",  patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de000c, "MCP89 HDMI",      patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de000d, "GPU 0d HDMI/DP",  patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de0010, "GPU 10 HDMI/DP",  patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de0011, "GPU 11 HDMI/DP",  patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de0012, "GPU 12 HDMI/DP",  patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de0013, "GPU 13 HDMI/DP",  patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de0014, "GPU 14 HDMI/DP",  patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de0015, "GPU 15 HDMI/DP",  patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de0016, "GPU 16 HDMI/DP",  patch_nvhdmi),
 /* 17 is known to be absent */
-{ .id = 0x10de0018, .name = "GPU 18 HDMI/DP",  .patch = patch_nvhdmi },
-{ .id = 0x10de0019, .name = "GPU 19 HDMI/DP",  .patch = patch_nvhdmi },
-{ .id = 0x10de001a, .name = "GPU 1a HDMI/DP",  .patch = patch_nvhdmi },
-{ .id = 0x10de001b, .name = "GPU 1b HDMI/DP",  .patch = patch_nvhdmi },
-{ .id = 0x10de001c, .name = "GPU 1c HDMI/DP",  .patch = patch_nvhdmi },
-{ .id = 0x10de0020, .name = "Tegra30 HDMI",    .patch = patch_tegra_hdmi },
-{ .id = 0x10de0022, .name = "Tegra114 HDMI",   .patch = patch_tegra_hdmi },
-{ .id = 0x10de0028, .name = "Tegra124 HDMI",   .patch = patch_tegra_hdmi },
-{ .id = 0x10de0029, .name = "Tegra210 HDMI/DP",        .patch = patch_tegra_hdmi },
-{ .id = 0x10de0040, .name = "GPU 40 HDMI/DP",  .patch = patch_nvhdmi },
-{ .id = 0x10de0041, .name = "GPU 41 HDMI/DP",  .patch = patch_nvhdmi },
-{ .id = 0x10de0042, .name = "GPU 42 HDMI/DP",  .patch = patch_nvhdmi },
-{ .id = 0x10de0043, .name = "GPU 43 HDMI/DP",  .patch = patch_nvhdmi },
-{ .id = 0x10de0044, .name = "GPU 44 HDMI/DP",  .patch = patch_nvhdmi },
-{ .id = 0x10de0051, .name = "GPU 51 HDMI/DP",  .patch = patch_nvhdmi },
-{ .id = 0x10de0060, .name = "GPU 60 HDMI/DP",  .patch = patch_nvhdmi },
-{ .id = 0x10de0067, .name = "MCP67 HDMI",      .patch = patch_nvhdmi_2ch },
-{ .id = 0x10de0070, .name = "GPU 70 HDMI/DP",  .patch = patch_nvhdmi },
-{ .id = 0x10de0071, .name = "GPU 71 HDMI/DP",  .patch = patch_nvhdmi },
-{ .id = 0x10de0072, .name = "GPU 72 HDMI/DP",  .patch = patch_nvhdmi },
-{ .id = 0x10de007d, .name = "GPU 7d HDMI/DP",  .patch = patch_nvhdmi },
-{ .id = 0x10de8001, .name = "MCP73 HDMI",      .patch = patch_nvhdmi_2ch },
-{ .id = 0x11069f80, .name = "VX900 HDMI/DP",   .patch = patch_via_hdmi },
-{ .id = 0x11069f81, .name = "VX900 HDMI/DP",   .patch = patch_via_hdmi },
-{ .id = 0x11069f84, .name = "VX11 HDMI/DP",    .patch = patch_generic_hdmi },
-{ .id = 0x11069f85, .name = "VX11 HDMI/DP",    .patch = patch_generic_hdmi },
-{ .id = 0x80860054, .name = "IbexPeak HDMI",   .patch = patch_generic_hdmi },
-{ .id = 0x80862801, .name = "Bearlake HDMI",   .patch = patch_generic_hdmi },
-{ .id = 0x80862802, .name = "Cantiga HDMI",    .patch = patch_generic_hdmi },
-{ .id = 0x80862803, .name = "Eaglelake HDMI",  .patch = patch_generic_hdmi },
-{ .id = 0x80862804, .name = "IbexPeak HDMI",   .patch = patch_generic_hdmi },
-{ .id = 0x80862805, .name = "CougarPoint HDMI",        .patch = patch_generic_hdmi },
-{ .id = 0x80862806, .name = "PantherPoint HDMI", .patch = patch_generic_hdmi },
-{ .id = 0x80862807, .name = "Haswell HDMI",    .patch = patch_generic_hdmi },
-{ .id = 0x80862808, .name = "Broadwell HDMI",  .patch = patch_generic_hdmi },
-{ .id = 0x80862809, .name = "Skylake HDMI",    .patch = patch_generic_hdmi },
-{ .id = 0x8086280a, .name = "Broxton HDMI",    .patch = patch_generic_hdmi },
-{ .id = 0x80862880, .name = "CedarTrail HDMI", .patch = patch_generic_hdmi },
-{ .id = 0x80862882, .name = "Valleyview2 HDMI",        .patch = patch_generic_hdmi },
-{ .id = 0x80862883, .name = "Braswell HDMI",   .patch = patch_generic_hdmi },
-{ .id = 0x808629fb, .name = "Crestline HDMI",  .patch = patch_generic_hdmi },
+HDA_CODEC_ENTRY(0x10de0018, "GPU 18 HDMI/DP",  patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de0019, "GPU 19 HDMI/DP",  patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de001a, "GPU 1a HDMI/DP",  patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de001b, "GPU 1b HDMI/DP",  patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de001c, "GPU 1c HDMI/DP",  patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de0020, "Tegra30 HDMI",    patch_tegra_hdmi),
+HDA_CODEC_ENTRY(0x10de0022, "Tegra114 HDMI",   patch_tegra_hdmi),
+HDA_CODEC_ENTRY(0x10de0028, "Tegra124 HDMI",   patch_tegra_hdmi),
+HDA_CODEC_ENTRY(0x10de0029, "Tegra210 HDMI/DP",        patch_tegra_hdmi),
+HDA_CODEC_ENTRY(0x10de0040, "GPU 40 HDMI/DP",  patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de0041, "GPU 41 HDMI/DP",  patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de0042, "GPU 42 HDMI/DP",  patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de0043, "GPU 43 HDMI/DP",  patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de0044, "GPU 44 HDMI/DP",  patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de0051, "GPU 51 HDMI/DP",  patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de0060, "GPU 60 HDMI/DP",  patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de0067, "MCP67 HDMI",      patch_nvhdmi_2ch),
+HDA_CODEC_ENTRY(0x10de0070, "GPU 70 HDMI/DP",  patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de0071, "GPU 71 HDMI/DP",  patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de0072, "GPU 72 HDMI/DP",  patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de007d, "GPU 7d HDMI/DP",  patch_nvhdmi),
+HDA_CODEC_ENTRY(0x10de8001, "MCP73 HDMI",      patch_nvhdmi_2ch),
+HDA_CODEC_ENTRY(0x11069f80, "VX900 HDMI/DP",   patch_via_hdmi),
+HDA_CODEC_ENTRY(0x11069f81, "VX900 HDMI/DP",   patch_via_hdmi),
+HDA_CODEC_ENTRY(0x11069f84, "VX11 HDMI/DP",    patch_generic_hdmi),
+HDA_CODEC_ENTRY(0x11069f85, "VX11 HDMI/DP",    patch_generic_hdmi),
+HDA_CODEC_ENTRY(0x80860054, "IbexPeak HDMI",   patch_generic_hdmi),
+HDA_CODEC_ENTRY(0x80862801, "Bearlake HDMI",   patch_generic_hdmi),
+HDA_CODEC_ENTRY(0x80862802, "Cantiga HDMI",    patch_generic_hdmi),
+HDA_CODEC_ENTRY(0x80862803, "Eaglelake HDMI",  patch_generic_hdmi),
+HDA_CODEC_ENTRY(0x80862804, "IbexPeak HDMI",   patch_generic_hdmi),
+HDA_CODEC_ENTRY(0x80862805, "CougarPoint HDMI",        patch_generic_hdmi),
+HDA_CODEC_ENTRY(0x80862806, "PantherPoint HDMI", patch_generic_hdmi),
+HDA_CODEC_ENTRY(0x80862807, "Haswell HDMI",    patch_generic_hdmi),
+HDA_CODEC_ENTRY(0x80862808, "Broadwell HDMI",  patch_generic_hdmi),
+HDA_CODEC_ENTRY(0x80862809, "Skylake HDMI",    patch_generic_hdmi),
+HDA_CODEC_ENTRY(0x8086280a, "Broxton HDMI",    patch_generic_hdmi),
+HDA_CODEC_ENTRY(0x80862880, "CedarTrail HDMI", patch_generic_hdmi),
+HDA_CODEC_ENTRY(0x80862882, "Valleyview2 HDMI",        patch_generic_hdmi),
+HDA_CODEC_ENTRY(0x80862883, "Braswell HDMI",   patch_generic_hdmi),
+HDA_CODEC_ENTRY(0x808629fb, "Crestline HDMI",  patch_generic_hdmi),
 /* special ID for generic HDMI */
-{ .id = HDA_CODEC_ID_GENERIC_HDMI, .patch = patch_generic_hdmi },
+HDA_CODEC_ENTRY(HDA_CODEC_ID_GENERIC_HDMI, "Generic HDMI", patch_generic_hdmi),
 {} /* terminator */
 };
-
-MODULE_ALIAS("snd-hda-codec-id:1002793c");
-MODULE_ALIAS("snd-hda-codec-id:10027919");
-MODULE_ALIAS("snd-hda-codec-id:1002791a");
-MODULE_ALIAS("snd-hda-codec-id:1002aa01");
-MODULE_ALIAS("snd-hda-codec-id:10951390");
-MODULE_ALIAS("snd-hda-codec-id:10951392");
-MODULE_ALIAS("snd-hda-codec-id:10de0002");
-MODULE_ALIAS("snd-hda-codec-id:10de0003");
-MODULE_ALIAS("snd-hda-codec-id:10de0005");
-MODULE_ALIAS("snd-hda-codec-id:10de0006");
-MODULE_ALIAS("snd-hda-codec-id:10de0007");
-MODULE_ALIAS("snd-hda-codec-id:10de000a");
-MODULE_ALIAS("snd-hda-codec-id:10de000b");
-MODULE_ALIAS("snd-hda-codec-id:10de000c");
-MODULE_ALIAS("snd-hda-codec-id:10de000d");
-MODULE_ALIAS("snd-hda-codec-id:10de0010");
-MODULE_ALIAS("snd-hda-codec-id:10de0011");
-MODULE_ALIAS("snd-hda-codec-id:10de0012");
-MODULE_ALIAS("snd-hda-codec-id:10de0013");
-MODULE_ALIAS("snd-hda-codec-id:10de0014");
-MODULE_ALIAS("snd-hda-codec-id:10de0015");
-MODULE_ALIAS("snd-hda-codec-id:10de0016");
-MODULE_ALIAS("snd-hda-codec-id:10de0018");
-MODULE_ALIAS("snd-hda-codec-id:10de0019");
-MODULE_ALIAS("snd-hda-codec-id:10de001a");
-MODULE_ALIAS("snd-hda-codec-id:10de001b");
-MODULE_ALIAS("snd-hda-codec-id:10de001c");
-MODULE_ALIAS("snd-hda-codec-id:10de0028");
-MODULE_ALIAS("snd-hda-codec-id:10de0040");
-MODULE_ALIAS("snd-hda-codec-id:10de0041");
-MODULE_ALIAS("snd-hda-codec-id:10de0042");
-MODULE_ALIAS("snd-hda-codec-id:10de0043");
-MODULE_ALIAS("snd-hda-codec-id:10de0044");
-MODULE_ALIAS("snd-hda-codec-id:10de0051");
-MODULE_ALIAS("snd-hda-codec-id:10de0060");
-MODULE_ALIAS("snd-hda-codec-id:10de0067");
-MODULE_ALIAS("snd-hda-codec-id:10de0070");
-MODULE_ALIAS("snd-hda-codec-id:10de0071");
-MODULE_ALIAS("snd-hda-codec-id:10de0072");
-MODULE_ALIAS("snd-hda-codec-id:10de007d");
-MODULE_ALIAS("snd-hda-codec-id:10de8001");
-MODULE_ALIAS("snd-hda-codec-id:11069f80");
-MODULE_ALIAS("snd-hda-codec-id:11069f81");
-MODULE_ALIAS("snd-hda-codec-id:11069f84");
-MODULE_ALIAS("snd-hda-codec-id:11069f85");
-MODULE_ALIAS("snd-hda-codec-id:17e80047");
-MODULE_ALIAS("snd-hda-codec-id:80860054");
-MODULE_ALIAS("snd-hda-codec-id:80862801");
-MODULE_ALIAS("snd-hda-codec-id:80862802");
-MODULE_ALIAS("snd-hda-codec-id:80862803");
-MODULE_ALIAS("snd-hda-codec-id:80862804");
-MODULE_ALIAS("snd-hda-codec-id:80862805");
-MODULE_ALIAS("snd-hda-codec-id:80862806");
-MODULE_ALIAS("snd-hda-codec-id:80862807");
-MODULE_ALIAS("snd-hda-codec-id:80862808");
-MODULE_ALIAS("snd-hda-codec-id:80862809");
-MODULE_ALIAS("snd-hda-codec-id:8086280a");
-MODULE_ALIAS("snd-hda-codec-id:80862880");
-MODULE_ALIAS("snd-hda-codec-id:80862882");
-MODULE_ALIAS("snd-hda-codec-id:80862883");
-MODULE_ALIAS("snd-hda-codec-id:808629fb");
+MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_hdmi);
 
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("HDMI HD-audio codec");
@@ -3646,7 +3585,7 @@ MODULE_ALIAS("snd-hda-codec-nvhdmi");
 MODULE_ALIAS("snd-hda-codec-atihdmi");
 
 static struct hda_codec_driver hdmi_driver = {
-       .preset = snd_hda_preset_hdmi,
+       .id = snd_hda_id_hdmi,
 };
 
 module_hda_codec_driver(hdmi_driver);
index e1ffb0202ebc81315c9238a7f7c4ec719d6993a6..0214b7df6d9dc2576bd333cf7cdd9756936f31ec 100644 (file)
@@ -6617,78 +6617,70 @@ static int patch_alc680(struct hda_codec *codec)
 /*
  * patch entries
  */
-static const struct hda_codec_preset snd_hda_preset_realtek[] = {
-       { .id = 0x10ec0221, .name = "ALC221", .patch = patch_alc269 },
-       { .id = 0x10ec0231, .name = "ALC231", .patch = patch_alc269 },
-       { .id = 0x10ec0233, .name = "ALC233", .patch = patch_alc269 },
-       { .id = 0x10ec0235, .name = "ALC233", .patch = patch_alc269 },
-       { .id = 0x10ec0255, .name = "ALC255", .patch = patch_alc269 },
-       { .id = 0x10ec0256, .name = "ALC256", .patch = patch_alc269 },
-       { .id = 0x10ec0260, .name = "ALC260", .patch = patch_alc260 },
-       { .id = 0x10ec0262, .name = "ALC262", .patch = patch_alc262 },
-       { .id = 0x10ec0267, .name = "ALC267", .patch = patch_alc268 },
-       { .id = 0x10ec0268, .name = "ALC268", .patch = patch_alc268 },
-       { .id = 0x10ec0269, .name = "ALC269", .patch = patch_alc269 },
-       { .id = 0x10ec0270, .name = "ALC270", .patch = patch_alc269 },
-       { .id = 0x10ec0272, .name = "ALC272", .patch = patch_alc662 },
-       { .id = 0x10ec0275, .name = "ALC275", .patch = patch_alc269 },
-       { .id = 0x10ec0276, .name = "ALC276", .patch = patch_alc269 },
-       { .id = 0x10ec0280, .name = "ALC280", .patch = patch_alc269 },
-       { .id = 0x10ec0282, .name = "ALC282", .patch = patch_alc269 },
-       { .id = 0x10ec0283, .name = "ALC283", .patch = patch_alc269 },
-       { .id = 0x10ec0284, .name = "ALC284", .patch = patch_alc269 },
-       { .id = 0x10ec0285, .name = "ALC285", .patch = patch_alc269 },
-       { .id = 0x10ec0286, .name = "ALC286", .patch = patch_alc269 },
-       { .id = 0x10ec0288, .name = "ALC288", .patch = patch_alc269 },
-       { .id = 0x10ec0290, .name = "ALC290", .patch = patch_alc269 },
-       { .id = 0x10ec0292, .name = "ALC292", .patch = patch_alc269 },
-       { .id = 0x10ec0293, .name = "ALC293", .patch = patch_alc269 },
-       { .id = 0x10ec0298, .name = "ALC298", .patch = patch_alc269 },
-       { .id = 0x10ec0861, .rev = 0x100340, .name = "ALC660",
-         .patch = patch_alc861 },
-       { .id = 0x10ec0660, .name = "ALC660-VD", .patch = patch_alc861vd },
-       { .id = 0x10ec0861, .name = "ALC861", .patch = patch_alc861 },
-       { .id = 0x10ec0862, .name = "ALC861-VD", .patch = patch_alc861vd },
-       { .id = 0x10ec0662, .rev = 0x100002, .name = "ALC662 rev2",
-         .patch = patch_alc882 },
-       { .id = 0x10ec0662, .rev = 0x100101, .name = "ALC662 rev1",
-         .patch = patch_alc662 },
-       { .id = 0x10ec0662, .rev = 0x100300, .name = "ALC662 rev3",
-         .patch = patch_alc662 },
-       { .id = 0x10ec0663, .name = "ALC663", .patch = patch_alc662 },
-       { .id = 0x10ec0665, .name = "ALC665", .patch = patch_alc662 },
-       { .id = 0x10ec0667, .name = "ALC667", .patch = patch_alc662 },
-       { .id = 0x10ec0668, .name = "ALC668", .patch = patch_alc662 },
-       { .id = 0x10ec0670, .name = "ALC670", .patch = patch_alc662 },
-       { .id = 0x10ec0671, .name = "ALC671", .patch = patch_alc662 },
-       { .id = 0x10ec0680, .name = "ALC680", .patch = patch_alc680 },
-       { .id = 0x10ec0867, .name = "ALC891", .patch = patch_alc882 },
-       { .id = 0x10ec0880, .name = "ALC880", .patch = patch_alc880 },
-       { .id = 0x10ec0882, .name = "ALC882", .patch = patch_alc882 },
-       { .id = 0x10ec0883, .name = "ALC883", .patch = patch_alc882 },
-       { .id = 0x10ec0885, .rev = 0x100101, .name = "ALC889A",
-         .patch = patch_alc882 },
-       { .id = 0x10ec0885, .rev = 0x100103, .name = "ALC889A",
-         .patch = patch_alc882 },
-       { .id = 0x10ec0885, .name = "ALC885", .patch = patch_alc882 },
-       { .id = 0x10ec0887, .name = "ALC887", .patch = patch_alc882 },
-       { .id = 0x10ec0888, .rev = 0x100101, .name = "ALC1200",
-         .patch = patch_alc882 },
-       { .id = 0x10ec0888, .name = "ALC888", .patch = patch_alc882 },
-       { .id = 0x10ec0889, .name = "ALC889", .patch = patch_alc882 },
-       { .id = 0x10ec0892, .name = "ALC892", .patch = patch_alc662 },
-       { .id = 0x10ec0899, .name = "ALC898", .patch = patch_alc882 },
-       { .id = 0x10ec0900, .name = "ALC1150", .patch = patch_alc882 },
+static const struct hda_device_id snd_hda_id_realtek[] = {
+       HDA_CODEC_ENTRY(0x10ec0221, "ALC221", patch_alc269),
+       HDA_CODEC_ENTRY(0x10ec0231, "ALC231", patch_alc269),
+       HDA_CODEC_ENTRY(0x10ec0233, "ALC233", patch_alc269),
+       HDA_CODEC_ENTRY(0x10ec0235, "ALC233", patch_alc269),
+       HDA_CODEC_ENTRY(0x10ec0255, "ALC255", patch_alc269),
+       HDA_CODEC_ENTRY(0x10ec0256, "ALC256", patch_alc269),
+       HDA_CODEC_ENTRY(0x10ec0260, "ALC260", patch_alc260),
+       HDA_CODEC_ENTRY(0x10ec0262, "ALC262", patch_alc262),
+       HDA_CODEC_ENTRY(0x10ec0267, "ALC267", patch_alc268),
+       HDA_CODEC_ENTRY(0x10ec0268, "ALC268", patch_alc268),
+       HDA_CODEC_ENTRY(0x10ec0269, "ALC269", patch_alc269),
+       HDA_CODEC_ENTRY(0x10ec0270, "ALC270", patch_alc269),
+       HDA_CODEC_ENTRY(0x10ec0272, "ALC272", patch_alc662),
+       HDA_CODEC_ENTRY(0x10ec0275, "ALC275", patch_alc269),
+       HDA_CODEC_ENTRY(0x10ec0276, "ALC276", patch_alc269),
+       HDA_CODEC_ENTRY(0x10ec0280, "ALC280", patch_alc269),
+       HDA_CODEC_ENTRY(0x10ec0282, "ALC282", patch_alc269),
+       HDA_CODEC_ENTRY(0x10ec0283, "ALC283", patch_alc269),
+       HDA_CODEC_ENTRY(0x10ec0284, "ALC284", patch_alc269),
+       HDA_CODEC_ENTRY(0x10ec0285, "ALC285", patch_alc269),
+       HDA_CODEC_ENTRY(0x10ec0286, "ALC286", patch_alc269),
+       HDA_CODEC_ENTRY(0x10ec0288, "ALC288", patch_alc269),
+       HDA_CODEC_ENTRY(0x10ec0290, "ALC290", patch_alc269),
+       HDA_CODEC_ENTRY(0x10ec0292, "ALC292", patch_alc269),
+       HDA_CODEC_ENTRY(0x10ec0293, "ALC293", patch_alc269),
+       HDA_CODEC_ENTRY(0x10ec0298, "ALC298", patch_alc269),
+       HDA_CODEC_REV_ENTRY(0x10ec0861, 0x100340, "ALC660", patch_alc861),
+       HDA_CODEC_ENTRY(0x10ec0660, "ALC660-VD", patch_alc861vd),
+       HDA_CODEC_ENTRY(0x10ec0861, "ALC861", patch_alc861),
+       HDA_CODEC_ENTRY(0x10ec0862, "ALC861-VD", patch_alc861vd),
+       HDA_CODEC_REV_ENTRY(0x10ec0662, 0x100002, "ALC662 rev2", patch_alc882),
+       HDA_CODEC_REV_ENTRY(0x10ec0662, 0x100101, "ALC662 rev1", patch_alc662),
+       HDA_CODEC_REV_ENTRY(0x10ec0662, 0x100300, "ALC662 rev3", patch_alc662),
+       HDA_CODEC_ENTRY(0x10ec0663, "ALC663", patch_alc662),
+       HDA_CODEC_ENTRY(0x10ec0665, "ALC665", patch_alc662),
+       HDA_CODEC_ENTRY(0x10ec0667, "ALC667", patch_alc662),
+       HDA_CODEC_ENTRY(0x10ec0668, "ALC668", patch_alc662),
+       HDA_CODEC_ENTRY(0x10ec0670, "ALC670", patch_alc662),
+       HDA_CODEC_ENTRY(0x10ec0671, "ALC671", patch_alc662),
+       HDA_CODEC_ENTRY(0x10ec0680, "ALC680", patch_alc680),
+       HDA_CODEC_ENTRY(0x10ec0867, "ALC891", patch_alc882),
+       HDA_CODEC_ENTRY(0x10ec0880, "ALC880", patch_alc880),
+       HDA_CODEC_ENTRY(0x10ec0882, "ALC882", patch_alc882),
+       HDA_CODEC_ENTRY(0x10ec0883, "ALC883", patch_alc882),
+       HDA_CODEC_REV_ENTRY(0x10ec0885, 0x100101, "ALC889A", patch_alc882),
+       HDA_CODEC_REV_ENTRY(0x10ec0885, 0x100103, "ALC889A", patch_alc882),
+       HDA_CODEC_ENTRY(0x10ec0885, "ALC885", patch_alc882),
+       HDA_CODEC_ENTRY(0x10ec0887, "ALC887", patch_alc882),
+       HDA_CODEC_REV_ENTRY(0x10ec0888, 0x100101, "ALC1200", patch_alc882),
+       HDA_CODEC_ENTRY(0x10ec0888, "ALC888", patch_alc882),
+       HDA_CODEC_ENTRY(0x10ec0889, "ALC889", patch_alc882),
+       HDA_CODEC_ENTRY(0x10ec0892, "ALC892", patch_alc662),
+       HDA_CODEC_ENTRY(0x10ec0899, "ALC898", patch_alc882),
+       HDA_CODEC_ENTRY(0x10ec0900, "ALC1150", patch_alc882),
        {} /* terminator */
 };
-
-MODULE_ALIAS("snd-hda-codec-id:10ec*");
+MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_realtek);
 
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("Realtek HD-audio codec");
 
 static struct hda_codec_driver realtek_driver = {
-       .preset = snd_hda_preset_realtek,
+       .id = snd_hda_id_realtek,
 };
 
 module_hda_codec_driver(realtek_driver);
index 5104bebb228699f1a04e754429f57e31622a521a..ffda38c45509583dd9e43f5f119c5d835b23e05b 100644 (file)
@@ -289,41 +289,30 @@ static int patch_si3054(struct hda_codec *codec)
 /*
  * patch entries
  */
-static const struct hda_codec_preset snd_hda_preset_si3054[] = {
-       { .id = 0x163c3055, .name = "Si3054", .patch = patch_si3054 },
-       { .id = 0x163c3155, .name = "Si3054", .patch = patch_si3054 },
-       { .id = 0x11c13026, .name = "Si3054", .patch = patch_si3054 },
-       { .id = 0x11c13055, .name = "Si3054", .patch = patch_si3054 },
-       { .id = 0x11c13155, .name = "Si3054", .patch = patch_si3054 },
-       { .id = 0x10573055, .name = "Si3054", .patch = patch_si3054 },
-       { .id = 0x10573057, .name = "Si3054", .patch = patch_si3054 },
-       { .id = 0x10573155, .name = "Si3054", .patch = patch_si3054 },
+static const struct hda_device_id snd_hda_id_si3054[] = {
+       HDA_CODEC_ENTRY(0x163c3055, "Si3054", patch_si3054),
+       HDA_CODEC_ENTRY(0x163c3155, "Si3054", patch_si3054),
+       HDA_CODEC_ENTRY(0x11c13026, "Si3054", patch_si3054),
+       HDA_CODEC_ENTRY(0x11c13055, "Si3054", patch_si3054),
+       HDA_CODEC_ENTRY(0x11c13155, "Si3054", patch_si3054),
+       HDA_CODEC_ENTRY(0x10573055, "Si3054", patch_si3054),
+       HDA_CODEC_ENTRY(0x10573057, "Si3054", patch_si3054),
+       HDA_CODEC_ENTRY(0x10573155, "Si3054", patch_si3054),
        /* VIA HDA on Clevo m540 */
-       { .id = 0x11063288, .name = "Si3054", .patch = patch_si3054 },
+       HDA_CODEC_ENTRY(0x11063288, "Si3054", patch_si3054),
        /* Asus A8J Modem (SM56) */
-       { .id = 0x15433155, .name = "Si3054", .patch = patch_si3054 },
+       HDA_CODEC_ENTRY(0x15433155, "Si3054", patch_si3054),
        /* LG LW20 modem */
-       { .id = 0x18540018, .name = "Si3054", .patch = patch_si3054 },
+       HDA_CODEC_ENTRY(0x18540018, "Si3054", patch_si3054),
        {}
 };
-
-MODULE_ALIAS("snd-hda-codec-id:163c3055");
-MODULE_ALIAS("snd-hda-codec-id:163c3155");
-MODULE_ALIAS("snd-hda-codec-id:11c13026");
-MODULE_ALIAS("snd-hda-codec-id:11c13055");
-MODULE_ALIAS("snd-hda-codec-id:11c13155");
-MODULE_ALIAS("snd-hda-codec-id:10573055");
-MODULE_ALIAS("snd-hda-codec-id:10573057");
-MODULE_ALIAS("snd-hda-codec-id:10573155");
-MODULE_ALIAS("snd-hda-codec-id:11063288");
-MODULE_ALIAS("snd-hda-codec-id:15433155");
-MODULE_ALIAS("snd-hda-codec-id:18540018");
+MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_si3054);
 
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("Si3054 HD-audio modem codec");
 
 static struct hda_codec_driver si3054_driver = {
-       .preset = snd_hda_preset_si3054,
+       .id = snd_hda_id_si3054,
 };
 
 module_hda_codec_driver(si3054_driver);
index def5cc8dff0293c2f70c4c3fcf67da1aea1bf55e..08a0f6a35cca5305d106b8f07574d7cc9a7a5960 100644 (file)
@@ -5012,121 +5012,119 @@ static int patch_stac9872(struct hda_codec *codec)
 /*
  * patch entries
  */
-static const struct hda_codec_preset snd_hda_preset_sigmatel[] = {
-       { .id = 0x83847690, .name = "STAC9200", .patch = patch_stac9200 },
-       { .id = 0x83847882, .name = "STAC9220 A1", .patch = patch_stac922x },
-       { .id = 0x83847680, .name = "STAC9221 A1", .patch = patch_stac922x },
-       { .id = 0x83847880, .name = "STAC9220 A2", .patch = patch_stac922x },
-       { .id = 0x83847681, .name = "STAC9220D/9223D A2", .patch = patch_stac922x },
-       { .id = 0x83847682, .name = "STAC9221 A2", .patch = patch_stac922x },
-       { .id = 0x83847683, .name = "STAC9221D A2", .patch = patch_stac922x },
-       { .id = 0x83847618, .name = "STAC9227", .patch = patch_stac927x },
-       { .id = 0x83847619, .name = "STAC9227", .patch = patch_stac927x },
-       { .id = 0x83847616, .name = "STAC9228", .patch = patch_stac927x },
-       { .id = 0x83847617, .name = "STAC9228", .patch = patch_stac927x },
-       { .id = 0x83847614, .name = "STAC9229", .patch = patch_stac927x },
-       { .id = 0x83847615, .name = "STAC9229", .patch = patch_stac927x },
-       { .id = 0x83847620, .name = "STAC9274", .patch = patch_stac927x },
-       { .id = 0x83847621, .name = "STAC9274D", .patch = patch_stac927x },
-       { .id = 0x83847622, .name = "STAC9273X", .patch = patch_stac927x },
-       { .id = 0x83847623, .name = "STAC9273D", .patch = patch_stac927x },
-       { .id = 0x83847624, .name = "STAC9272X", .patch = patch_stac927x },
-       { .id = 0x83847625, .name = "STAC9272D", .patch = patch_stac927x },
-       { .id = 0x83847626, .name = "STAC9271X", .patch = patch_stac927x },
-       { .id = 0x83847627, .name = "STAC9271D", .patch = patch_stac927x },
-       { .id = 0x83847628, .name = "STAC9274X5NH", .patch = patch_stac927x },
-       { .id = 0x83847629, .name = "STAC9274D5NH", .patch = patch_stac927x },
-       { .id = 0x83847632, .name = "STAC9202",  .patch = patch_stac925x },
-       { .id = 0x83847633, .name = "STAC9202D", .patch = patch_stac925x },
-       { .id = 0x83847634, .name = "STAC9250", .patch = patch_stac925x },
-       { .id = 0x83847635, .name = "STAC9250D", .patch = patch_stac925x },
-       { .id = 0x83847636, .name = "STAC9251", .patch = patch_stac925x },
-       { .id = 0x83847637, .name = "STAC9250D", .patch = patch_stac925x },
-       { .id = 0x83847645, .name = "92HD206X", .patch = patch_stac927x },
-       { .id = 0x83847646, .name = "92HD206D", .patch = patch_stac927x },
-       /* The following does not take into account .id=0x83847661 when subsys =
-        * 104D0C00 which is STAC9225s. Because of this, some SZ Notebooks are
-        * currently not fully supported.
-        */
-       { .id = 0x83847661, .name = "CXD9872RD/K", .patch = patch_stac9872 },
-       { .id = 0x83847662, .name = "STAC9872AK", .patch = patch_stac9872 },
-       { .id = 0x83847664, .name = "CXD9872AKD", .patch = patch_stac9872 },
-       { .id = 0x83847698, .name = "STAC9205", .patch = patch_stac9205 },
-       { .id = 0x838476a0, .name = "STAC9205", .patch = patch_stac9205 },
-       { .id = 0x838476a1, .name = "STAC9205D", .patch = patch_stac9205 },
-       { .id = 0x838476a2, .name = "STAC9204", .patch = patch_stac9205 },
-       { .id = 0x838476a3, .name = "STAC9204D", .patch = patch_stac9205 },
-       { .id = 0x838476a4, .name = "STAC9255", .patch = patch_stac9205 },
-       { .id = 0x838476a5, .name = "STAC9255D", .patch = patch_stac9205 },
-       { .id = 0x838476a6, .name = "STAC9254", .patch = patch_stac9205 },
-       { .id = 0x838476a7, .name = "STAC9254D", .patch = patch_stac9205 },
-       { .id = 0x111d7603, .name = "92HD75B3X5", .patch = patch_stac92hd71bxx},
-       { .id = 0x111d7604, .name = "92HD83C1X5", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d76d4, .name = "92HD83C1C5", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d7605, .name = "92HD81B1X5", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d76d5, .name = "92HD81B1C5", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d76d1, .name = "92HD87B1/3", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d76d9, .name = "92HD87B2/4", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d7666, .name = "92HD88B3", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d7667, .name = "92HD88B1", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d7668, .name = "92HD88B2", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d7669, .name = "92HD88B4", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d7608, .name = "92HD75B2X5", .patch = patch_stac92hd71bxx},
-       { .id = 0x111d7674, .name = "92HD73D1X5", .patch = patch_stac92hd73xx },
-       { .id = 0x111d7675, .name = "92HD73C1X5", .patch = patch_stac92hd73xx },
-       { .id = 0x111d7676, .name = "92HD73E1X5", .patch = patch_stac92hd73xx },
-       { .id = 0x111d7695, .name = "92HD95", .patch = patch_stac92hd95 },
-       { .id = 0x111d76b0, .name = "92HD71B8X", .patch = patch_stac92hd71bxx },
-       { .id = 0x111d76b1, .name = "92HD71B8X", .patch = patch_stac92hd71bxx },
-       { .id = 0x111d76b2, .name = "92HD71B7X", .patch = patch_stac92hd71bxx },
-       { .id = 0x111d76b3, .name = "92HD71B7X", .patch = patch_stac92hd71bxx },
-       { .id = 0x111d76b4, .name = "92HD71B6X", .patch = patch_stac92hd71bxx },
-       { .id = 0x111d76b5, .name = "92HD71B6X", .patch = patch_stac92hd71bxx },
-       { .id = 0x111d76b6, .name = "92HD71B5X", .patch = patch_stac92hd71bxx },
-       { .id = 0x111d76b7, .name = "92HD71B5X", .patch = patch_stac92hd71bxx },
-       { .id = 0x111d76c0, .name = "92HD89C3", .patch = patch_stac92hd73xx },
-       { .id = 0x111d76c1, .name = "92HD89C2", .patch = patch_stac92hd73xx },
-       { .id = 0x111d76c2, .name = "92HD89C1", .patch = patch_stac92hd73xx },
-       { .id = 0x111d76c3, .name = "92HD89B3", .patch = patch_stac92hd73xx },
-       { .id = 0x111d76c4, .name = "92HD89B2", .patch = patch_stac92hd73xx },
-       { .id = 0x111d76c5, .name = "92HD89B1", .patch = patch_stac92hd73xx },
-       { .id = 0x111d76c6, .name = "92HD89E3", .patch = patch_stac92hd73xx },
-       { .id = 0x111d76c7, .name = "92HD89E2", .patch = patch_stac92hd73xx },
-       { .id = 0x111d76c8, .name = "92HD89E1", .patch = patch_stac92hd73xx },
-       { .id = 0x111d76c9, .name = "92HD89D3", .patch = patch_stac92hd73xx },
-       { .id = 0x111d76ca, .name = "92HD89D2", .patch = patch_stac92hd73xx },
-       { .id = 0x111d76cb, .name = "92HD89D1", .patch = patch_stac92hd73xx },
-       { .id = 0x111d76cc, .name = "92HD89F3", .patch = patch_stac92hd73xx },
-       { .id = 0x111d76cd, .name = "92HD89F2", .patch = patch_stac92hd73xx },
-       { .id = 0x111d76ce, .name = "92HD89F1", .patch = patch_stac92hd73xx },
-       { .id = 0x111d76df, .name = "92HD93BXX", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d76e0, .name = "92HD91BXX", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d76e3, .name = "92HD98BXX", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d76e5, .name = "92HD99BXX", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d76e7, .name = "92HD90BXX", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d76e8, .name = "92HD66B1X5", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d76e9, .name = "92HD66B2X5", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d76ea, .name = "92HD66B3X5", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d76eb, .name = "92HD66C1X5", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d76ec, .name = "92HD66C2X5", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d76ed, .name = "92HD66C3X5", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d76ee, .name = "92HD66B1X3", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d76ef, .name = "92HD66B2X3", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d76f0, .name = "92HD66B3X3", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d76f1, .name = "92HD66C1X3", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d76f2, .name = "92HD66C2X3", .patch = patch_stac92hd83xxx},
-       { .id = 0x111d76f3, .name = "92HD66C3/65", .patch = patch_stac92hd83xxx},
+static const struct hda_device_id snd_hda_id_sigmatel[] = {
+       HDA_CODEC_ENTRY(0x83847690, "STAC9200", patch_stac9200),
+       HDA_CODEC_ENTRY(0x83847882, "STAC9220 A1", patch_stac922x),
+       HDA_CODEC_ENTRY(0x83847680, "STAC9221 A1", patch_stac922x),
+       HDA_CODEC_ENTRY(0x83847880, "STAC9220 A2", patch_stac922x),
+       HDA_CODEC_ENTRY(0x83847681, "STAC9220D/9223D A2", patch_stac922x),
+       HDA_CODEC_ENTRY(0x83847682, "STAC9221 A2", patch_stac922x),
+       HDA_CODEC_ENTRY(0x83847683, "STAC9221D A2", patch_stac922x),
+       HDA_CODEC_ENTRY(0x83847618, "STAC9227", patch_stac927x),
+       HDA_CODEC_ENTRY(0x83847619, "STAC9227", patch_stac927x),
+       HDA_CODEC_ENTRY(0x83847616, "STAC9228", patch_stac927x),
+       HDA_CODEC_ENTRY(0x83847617, "STAC9228", patch_stac927x),
+       HDA_CODEC_ENTRY(0x83847614, "STAC9229", patch_stac927x),
+       HDA_CODEC_ENTRY(0x83847615, "STAC9229", patch_stac927x),
+       HDA_CODEC_ENTRY(0x83847620, "STAC9274", patch_stac927x),
+       HDA_CODEC_ENTRY(0x83847621, "STAC9274D", patch_stac927x),
+       HDA_CODEC_ENTRY(0x83847622, "STAC9273X", patch_stac927x),
+       HDA_CODEC_ENTRY(0x83847623, "STAC9273D", patch_stac927x),
+       HDA_CODEC_ENTRY(0x83847624, "STAC9272X", patch_stac927x),
+       HDA_CODEC_ENTRY(0x83847625, "STAC9272D", patch_stac927x),
+       HDA_CODEC_ENTRY(0x83847626, "STAC9271X", patch_stac927x),
+       HDA_CODEC_ENTRY(0x83847627, "STAC9271D", patch_stac927x),
+       HDA_CODEC_ENTRY(0x83847628, "STAC9274X5NH", patch_stac927x),
+       HDA_CODEC_ENTRY(0x83847629, "STAC9274D5NH", patch_stac927x),
+       HDA_CODEC_ENTRY(0x83847632, "STAC9202",  patch_stac925x),
+       HDA_CODEC_ENTRY(0x83847633, "STAC9202D", patch_stac925x),
+       HDA_CODEC_ENTRY(0x83847634, "STAC9250", patch_stac925x),
+       HDA_CODEC_ENTRY(0x83847635, "STAC9250D", patch_stac925x),
+       HDA_CODEC_ENTRY(0x83847636, "STAC9251", patch_stac925x),
+       HDA_CODEC_ENTRY(0x83847637, "STAC9250D", patch_stac925x),
+       HDA_CODEC_ENTRY(0x83847645, "92HD206X", patch_stac927x),
+       HDA_CODEC_ENTRY(0x83847646, "92HD206D", patch_stac927x),
+       /* The following does not take into account .id=0x83847661 when subsys =
+        * 104D0C00 which is STAC9225s. Because of this, some SZ Notebooks are
+        * currently not fully supported.
+        */
+       HDA_CODEC_ENTRY(0x83847661, "CXD9872RD/K", patch_stac9872),
+       HDA_CODEC_ENTRY(0x83847662, "STAC9872AK", patch_stac9872),
+       HDA_CODEC_ENTRY(0x83847664, "CXD9872AKD", patch_stac9872),
+       HDA_CODEC_ENTRY(0x83847698, "STAC9205", patch_stac9205),
+       HDA_CODEC_ENTRY(0x838476a0, "STAC9205", patch_stac9205),
+       HDA_CODEC_ENTRY(0x838476a1, "STAC9205D", patch_stac9205),
+       HDA_CODEC_ENTRY(0x838476a2, "STAC9204", patch_stac9205),
+       HDA_CODEC_ENTRY(0x838476a3, "STAC9204D", patch_stac9205),
+       HDA_CODEC_ENTRY(0x838476a4, "STAC9255", patch_stac9205),
+       HDA_CODEC_ENTRY(0x838476a5, "STAC9255D", patch_stac9205),
+       HDA_CODEC_ENTRY(0x838476a6, "STAC9254", patch_stac9205),
+       HDA_CODEC_ENTRY(0x838476a7, "STAC9254D", patch_stac9205),
+       HDA_CODEC_ENTRY(0x111d7603, "92HD75B3X5", patch_stac92hd71bxx),
+       HDA_CODEC_ENTRY(0x111d7604, "92HD83C1X5", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d76d4, "92HD83C1C5", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d7605, "92HD81B1X5", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d76d5, "92HD81B1C5", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d76d1, "92HD87B1/3", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d76d9, "92HD87B2/4", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d7666, "92HD88B3", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d7667, "92HD88B1", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d7668, "92HD88B2", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d7669, "92HD88B4", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d7608, "92HD75B2X5", patch_stac92hd71bxx),
+       HDA_CODEC_ENTRY(0x111d7674, "92HD73D1X5", patch_stac92hd73xx),
+       HDA_CODEC_ENTRY(0x111d7675, "92HD73C1X5", patch_stac92hd73xx),
+       HDA_CODEC_ENTRY(0x111d7676, "92HD73E1X5", patch_stac92hd73xx),
+       HDA_CODEC_ENTRY(0x111d7695, "92HD95", patch_stac92hd95),
+       HDA_CODEC_ENTRY(0x111d76b0, "92HD71B8X", patch_stac92hd71bxx),
+       HDA_CODEC_ENTRY(0x111d76b1, "92HD71B8X", patch_stac92hd71bxx),
+       HDA_CODEC_ENTRY(0x111d76b2, "92HD71B7X", patch_stac92hd71bxx),
+       HDA_CODEC_ENTRY(0x111d76b3, "92HD71B7X", patch_stac92hd71bxx),
+       HDA_CODEC_ENTRY(0x111d76b4, "92HD71B6X", patch_stac92hd71bxx),
+       HDA_CODEC_ENTRY(0x111d76b5, "92HD71B6X", patch_stac92hd71bxx),
+       HDA_CODEC_ENTRY(0x111d76b6, "92HD71B5X", patch_stac92hd71bxx),
+       HDA_CODEC_ENTRY(0x111d76b7, "92HD71B5X", patch_stac92hd71bxx),
+       HDA_CODEC_ENTRY(0x111d76c0, "92HD89C3", patch_stac92hd73xx),
+       HDA_CODEC_ENTRY(0x111d76c1, "92HD89C2", patch_stac92hd73xx),
+       HDA_CODEC_ENTRY(0x111d76c2, "92HD89C1", patch_stac92hd73xx),
+       HDA_CODEC_ENTRY(0x111d76c3, "92HD89B3", patch_stac92hd73xx),
+       HDA_CODEC_ENTRY(0x111d76c4, "92HD89B2", patch_stac92hd73xx),
+       HDA_CODEC_ENTRY(0x111d76c5, "92HD89B1", patch_stac92hd73xx),
+       HDA_CODEC_ENTRY(0x111d76c6, "92HD89E3", patch_stac92hd73xx),
+       HDA_CODEC_ENTRY(0x111d76c7, "92HD89E2", patch_stac92hd73xx),
+       HDA_CODEC_ENTRY(0x111d76c8, "92HD89E1", patch_stac92hd73xx),
+       HDA_CODEC_ENTRY(0x111d76c9, "92HD89D3", patch_stac92hd73xx),
+       HDA_CODEC_ENTRY(0x111d76ca, "92HD89D2", patch_stac92hd73xx),
+       HDA_CODEC_ENTRY(0x111d76cb, "92HD89D1", patch_stac92hd73xx),
+       HDA_CODEC_ENTRY(0x111d76cc, "92HD89F3", patch_stac92hd73xx),
+       HDA_CODEC_ENTRY(0x111d76cd, "92HD89F2", patch_stac92hd73xx),
+       HDA_CODEC_ENTRY(0x111d76ce, "92HD89F1", patch_stac92hd73xx),
+       HDA_CODEC_ENTRY(0x111d76df, "92HD93BXX", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d76e0, "92HD91BXX", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d76e3, "92HD98BXX", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d76e5, "92HD99BXX", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d76e7, "92HD90BXX", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d76e8, "92HD66B1X5", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d76e9, "92HD66B2X5", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d76ea, "92HD66B3X5", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d76eb, "92HD66C1X5", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d76ec, "92HD66C2X5", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d76ed, "92HD66C3X5", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d76ee, "92HD66B1X3", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d76ef, "92HD66B2X3", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d76f0, "92HD66B3X3", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d76f1, "92HD66C1X3", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d76f2, "92HD66C2X3", patch_stac92hd83xxx),
+       HDA_CODEC_ENTRY(0x111d76f3, "92HD66C3/65", patch_stac92hd83xxx),
        {} /* terminator */
 };
-
-MODULE_ALIAS("snd-hda-codec-id:8384*");
-MODULE_ALIAS("snd-hda-codec-id:111d*");
+MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_sigmatel);
 
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("IDT/Sigmatel HD-audio codec");
 
 static struct hda_codec_driver sigmatel_driver = {
-       .preset = snd_hda_preset_sigmatel,
+       .id = snd_hda_id_sigmatel,
 };
 
 module_hda_codec_driver(sigmatel_driver);
index d714a57e94600501a6807d8e96219ce77e572328..fc30d1e8aa76a6b2aa9ca1de992b5a1c937bb971 100644 (file)
@@ -1200,109 +1200,64 @@ static int patch_vt3476(struct hda_codec *codec)
 /*
  * patch entries
  */
-static const struct hda_codec_preset snd_hda_preset_via[] = {
-       { .id = 0x11061708, .name = "VT1708", .patch = patch_vt1708},
-       { .id = 0x11061709, .name = "VT1708", .patch = patch_vt1708},
-       { .id = 0x1106170a, .name = "VT1708", .patch = patch_vt1708},
-       { .id = 0x1106170b, .name = "VT1708", .patch = patch_vt1708},
-       { .id = 0x1106e710, .name = "VT1709 10-Ch",
-         .patch = patch_vt1709},
-       { .id = 0x1106e711, .name = "VT1709 10-Ch",
-         .patch = patch_vt1709},
-       { .id = 0x1106e712, .name = "VT1709 10-Ch",
-         .patch = patch_vt1709},
-       { .id = 0x1106e713, .name = "VT1709 10-Ch",
-         .patch = patch_vt1709},
-       { .id = 0x1106e714, .name = "VT1709 6-Ch",
-         .patch = patch_vt1709},
-       { .id = 0x1106e715, .name = "VT1709 6-Ch",
-         .patch = patch_vt1709},
-       { .id = 0x1106e716, .name = "VT1709 6-Ch",
-         .patch = patch_vt1709},
-       { .id = 0x1106e717, .name = "VT1709 6-Ch",
-         .patch = patch_vt1709},
-       { .id = 0x1106e720, .name = "VT1708B 8-Ch",
-         .patch = patch_vt1708B},
-       { .id = 0x1106e721, .name = "VT1708B 8-Ch",
-         .patch = patch_vt1708B},
-       { .id = 0x1106e722, .name = "VT1708B 8-Ch",
-         .patch = patch_vt1708B},
-       { .id = 0x1106e723, .name = "VT1708B 8-Ch",
-         .patch = patch_vt1708B},
-       { .id = 0x1106e724, .name = "VT1708B 4-Ch",
-         .patch = patch_vt1708B},
-       { .id = 0x1106e725, .name = "VT1708B 4-Ch",
-         .patch = patch_vt1708B},
-       { .id = 0x1106e726, .name = "VT1708B 4-Ch",
-         .patch = patch_vt1708B},
-       { .id = 0x1106e727, .name = "VT1708B 4-Ch",
-         .patch = patch_vt1708B},
-       { .id = 0x11060397, .name = "VT1708S",
-         .patch = patch_vt1708S},
-       { .id = 0x11061397, .name = "VT1708S",
-         .patch = patch_vt1708S},
-       { .id = 0x11062397, .name = "VT1708S",
-         .patch = patch_vt1708S},
-       { .id = 0x11063397, .name = "VT1708S",
-         .patch = patch_vt1708S},
-       { .id = 0x11064397, .name = "VT1705",
-         .patch = patch_vt1708S},
-       { .id = 0x11065397, .name = "VT1708S",
-         .patch = patch_vt1708S},
-       { .id = 0x11066397, .name = "VT1708S",
-         .patch = patch_vt1708S},
-       { .id = 0x11067397, .name = "VT1708S",
-         .patch = patch_vt1708S},
-       { .id = 0x11060398, .name = "VT1702",
-         .patch = patch_vt1702},
-       { .id = 0x11061398, .name = "VT1702",
-         .patch = patch_vt1702},
-       { .id = 0x11062398, .name = "VT1702",
-         .patch = patch_vt1702},
-       { .id = 0x11063398, .name = "VT1702",
-         .patch = patch_vt1702},
-       { .id = 0x11064398, .name = "VT1702",
-         .patch = patch_vt1702},
-       { .id = 0x11065398, .name = "VT1702",
-         .patch = patch_vt1702},
-       { .id = 0x11066398, .name = "VT1702",
-         .patch = patch_vt1702},
-       { .id = 0x11067398, .name = "VT1702",
-         .patch = patch_vt1702},
-       { .id = 0x11060428, .name = "VT1718S",
-         .patch = patch_vt1718S},
-       { .id = 0x11064428, .name = "VT1718S",
-         .patch = patch_vt1718S},
-       { .id = 0x11060441, .name = "VT2020",
-         .patch = patch_vt1718S},
-       { .id = 0x11064441, .name = "VT1828S",
-         .patch = patch_vt1718S},
-       { .id = 0x11060433, .name = "VT1716S",
-         .patch = patch_vt1716S},
-       { .id = 0x1106a721, .name = "VT1716S",
-         .patch = patch_vt1716S},
-       { .id = 0x11060438, .name = "VT2002P", .patch = patch_vt2002P},
-       { .id = 0x11064438, .name = "VT2002P", .patch = patch_vt2002P},
-       { .id = 0x11060448, .name = "VT1812", .patch = patch_vt1812},
-       { .id = 0x11060440, .name = "VT1818S",
-         .patch = patch_vt1708S},
-       { .id = 0x11060446, .name = "VT1802",
-               .patch = patch_vt2002P},
-       { .id = 0x11068446, .name = "VT1802",
-               .patch = patch_vt2002P},
-       { .id = 0x11064760, .name = "VT1705CF",
-               .patch = patch_vt3476},
-       { .id = 0x11064761, .name = "VT1708SCE",
-               .patch = patch_vt3476},
-       { .id = 0x11064762, .name = "VT1808",
-               .patch = patch_vt3476},
+static const struct hda_device_id snd_hda_id_via[] = {
+       HDA_CODEC_ENTRY(0x11061708, "VT1708", patch_vt1708),
+       HDA_CODEC_ENTRY(0x11061709, "VT1708", patch_vt1708),
+       HDA_CODEC_ENTRY(0x1106170a, "VT1708", patch_vt1708),
+       HDA_CODEC_ENTRY(0x1106170b, "VT1708", patch_vt1708),
+       HDA_CODEC_ENTRY(0x1106e710, "VT1709 10-Ch", patch_vt1709),
+       HDA_CODEC_ENTRY(0x1106e711, "VT1709 10-Ch", patch_vt1709),
+       HDA_CODEC_ENTRY(0x1106e712, "VT1709 10-Ch", patch_vt1709),
+       HDA_CODEC_ENTRY(0x1106e713, "VT1709 10-Ch", patch_vt1709),
+       HDA_CODEC_ENTRY(0x1106e714, "VT1709 6-Ch", patch_vt1709),
+       HDA_CODEC_ENTRY(0x1106e715, "VT1709 6-Ch", patch_vt1709),
+       HDA_CODEC_ENTRY(0x1106e716, "VT1709 6-Ch", patch_vt1709),
+       HDA_CODEC_ENTRY(0x1106e717, "VT1709 6-Ch", patch_vt1709),
+       HDA_CODEC_ENTRY(0x1106e720, "VT1708B 8-Ch", patch_vt1708B),
+       HDA_CODEC_ENTRY(0x1106e721, "VT1708B 8-Ch", patch_vt1708B),
+       HDA_CODEC_ENTRY(0x1106e722, "VT1708B 8-Ch", patch_vt1708B),
+       HDA_CODEC_ENTRY(0x1106e723, "VT1708B 8-Ch", patch_vt1708B),
+       HDA_CODEC_ENTRY(0x1106e724, "VT1708B 4-Ch", patch_vt1708B),
+       HDA_CODEC_ENTRY(0x1106e725, "VT1708B 4-Ch", patch_vt1708B),
+       HDA_CODEC_ENTRY(0x1106e726, "VT1708B 4-Ch", patch_vt1708B),
+       HDA_CODEC_ENTRY(0x1106e727, "VT1708B 4-Ch", patch_vt1708B),
+       HDA_CODEC_ENTRY(0x11060397, "VT1708S", patch_vt1708S),
+       HDA_CODEC_ENTRY(0x11061397, "VT1708S", patch_vt1708S),
+       HDA_CODEC_ENTRY(0x11062397, "VT1708S", patch_vt1708S),
+       HDA_CODEC_ENTRY(0x11063397, "VT1708S", patch_vt1708S),
+       HDA_CODEC_ENTRY(0x11064397, "VT1705", patch_vt1708S),
+       HDA_CODEC_ENTRY(0x11065397, "VT1708S", patch_vt1708S),
+       HDA_CODEC_ENTRY(0x11066397, "VT1708S", patch_vt1708S),
+       HDA_CODEC_ENTRY(0x11067397, "VT1708S", patch_vt1708S),
+       HDA_CODEC_ENTRY(0x11060398, "VT1702", patch_vt1702),
+       HDA_CODEC_ENTRY(0x11061398, "VT1702", patch_vt1702),
+       HDA_CODEC_ENTRY(0x11062398, "VT1702", patch_vt1702),
+       HDA_CODEC_ENTRY(0x11063398, "VT1702", patch_vt1702),
+       HDA_CODEC_ENTRY(0x11064398, "VT1702", patch_vt1702),
+       HDA_CODEC_ENTRY(0x11065398, "VT1702", patch_vt1702),
+       HDA_CODEC_ENTRY(0x11066398, "VT1702", patch_vt1702),
+       HDA_CODEC_ENTRY(0x11067398, "VT1702", patch_vt1702),
+       HDA_CODEC_ENTRY(0x11060428, "VT1718S", patch_vt1718S),
+       HDA_CODEC_ENTRY(0x11064428, "VT1718S", patch_vt1718S),
+       HDA_CODEC_ENTRY(0x11060441, "VT2020", patch_vt1718S),
+       HDA_CODEC_ENTRY(0x11064441, "VT1828S", patch_vt1718S),
+       HDA_CODEC_ENTRY(0x11060433, "VT1716S", patch_vt1716S),
+       HDA_CODEC_ENTRY(0x1106a721, "VT1716S", patch_vt1716S),
+       HDA_CODEC_ENTRY(0x11060438, "VT2002P", patch_vt2002P),
+       HDA_CODEC_ENTRY(0x11064438, "VT2002P", patch_vt2002P),
+       HDA_CODEC_ENTRY(0x11060448, "VT1812", patch_vt1812),
+       HDA_CODEC_ENTRY(0x11060440, "VT1818S", patch_vt1708S),
+       HDA_CODEC_ENTRY(0x11060446, "VT1802", patch_vt2002P),
+       HDA_CODEC_ENTRY(0x11068446, "VT1802", patch_vt2002P),
+       HDA_CODEC_ENTRY(0x11064760, "VT1705CF", patch_vt3476),
+       HDA_CODEC_ENTRY(0x11064761, "VT1708SCE", patch_vt3476),
+       HDA_CODEC_ENTRY(0x11064762, "VT1808", patch_vt3476),
        {} /* terminator */
 };
-
-MODULE_ALIAS("snd-hda-codec-id:1106*");
+MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_via);
 
 static struct hda_codec_driver via_driver = {
-       .preset = snd_hda_preset_via,
+       .id = snd_hda_id_via,
 };
 
 MODULE_LICENSE("GPL");