Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'topic/hda-modalias' into for-next

+482 -605
+8
include/linux/mod_devicetable.h
··· 219 219 __u8 proto; 220 220 }; 221 221 222 + struct hda_device_id { 223 + __u32 vendor_id; 224 + __u32 rev_id; 225 + __u8 api_version; 226 + const char *name; 227 + unsigned long driver_data; 228 + }; 229 + 222 230 /* 223 231 * Struct used for matching a device 224 232 */
+2 -10
include/sound/hdaudio.h
··· 21 21 struct hdac_device; 22 22 struct hdac_driver; 23 23 struct hdac_widget_tree; 24 + struct hda_device_id; 24 25 25 26 /* 26 27 * exported bus type 27 28 */ 28 29 extern struct bus_type snd_hda_bus_type; 29 - 30 - /* 31 - * HDA device table 32 - */ 33 - struct hda_device_id { 34 - __u32 vendor_id; 35 - __u32 rev_id; 36 - const char *name; 37 - unsigned long driver_data; 38 - }; 39 30 40 31 /* 41 32 * generic arrays ··· 109 118 int snd_hdac_device_register(struct hdac_device *codec); 110 119 void snd_hdac_device_unregister(struct hdac_device *codec); 111 120 int snd_hdac_device_set_chip_name(struct hdac_device *codec, const char *name); 121 + int snd_hdac_codec_modalias(struct hdac_device *hdac, char *buf, size_t size); 112 122 113 123 int snd_hdac_refresh_widgets(struct hdac_device *codec); 114 124 int snd_hdac_refresh_widget_sysfs(struct hdac_device *codec);
+7
include/sound/hdaudio_ext.h
··· 40 40 #define hbus_to_ebus(_bus) \ 41 41 container_of(_bus, struct hdac_ext_bus, bus) 42 42 43 + #define HDA_CODEC_REV_EXT_ENTRY(_vid, _rev, _name, drv_data) \ 44 + { .vendor_id = (_vid), .rev_id = (_rev), .name = (_name), \ 45 + .api_version = HDA_DEV_ASOC, \ 46 + .driver_data = (unsigned long)(drv_data) } 47 + #define HDA_CODEC_EXT_ENTRY(_vid, _revid, _name, _drv_data) \ 48 + HDA_CODEC_REV_EXT_ENTRY(_vid, _revid, _name, _drv_data) 49 + 43 50 int snd_hdac_ext_bus_parse_capabilities(struct hdac_ext_bus *sbus); 44 51 void snd_hdac_ext_bus_ppcap_enable(struct hdac_ext_bus *chip, bool enable); 45 52 void snd_hdac_ext_bus_ppcap_int_enable(struct hdac_ext_bus *chip, bool enable);
+5
scripts/mod/devicetable-offsets.c
··· 196 196 DEVID_FIELD(ulpi_device_id, vendor); 197 197 DEVID_FIELD(ulpi_device_id, product); 198 198 199 + DEVID(hda_device_id); 200 + DEVID_FIELD(hda_device_id, vendor_id); 201 + DEVID_FIELD(hda_device_id, rev_id); 202 + DEVID_FIELD(hda_device_id, api_version); 203 + 199 204 return 0; 200 205 }
+17
scripts/mod/file2alias.c
··· 1250 1250 } 1251 1251 ADD_TO_DEVTABLE("ulpi", ulpi_device_id, do_ulpi_entry); 1252 1252 1253 + /* Looks like: hdaudio:vNrNaN */ 1254 + static int do_hda_entry(const char *filename, void *symval, char *alias) 1255 + { 1256 + DEF_FIELD(symval, hda_device_id, vendor_id); 1257 + DEF_FIELD(symval, hda_device_id, rev_id); 1258 + DEF_FIELD(symval, hda_device_id, api_version); 1259 + 1260 + strcpy(alias, "hdaudio:"); 1261 + ADD(alias, "v", vendor_id != 0, vendor_id); 1262 + ADD(alias, "r", rev_id != 0, rev_id); 1263 + ADD(alias, "a", api_version != 0, api_version); 1264 + 1265 + add_wildcard(alias); 1266 + return 1; 1267 + } 1268 + ADD_TO_DEVTABLE("hdaudio", hda_device_id, do_hda_entry); 1269 + 1253 1270 /* Does namelen bytes of name exactly match the symbol? */ 1254 1271 static bool sym_is(const char *name, unsigned namelen, const char *symbol) 1255 1272 {
+13
sound/hda/hda_bus_type.c
··· 4 4 #include <linux/init.h> 5 5 #include <linux/device.h> 6 6 #include <linux/module.h> 7 + #include <linux/mod_devicetable.h> 7 8 #include <linux/export.h> 8 9 #include <sound/hdaudio.h> 9 10 ··· 64 63 return 1; 65 64 } 66 65 66 + static int hda_uevent(struct device *dev, struct kobj_uevent_env *env) 67 + { 68 + char modalias[32]; 69 + 70 + snd_hdac_codec_modalias(dev_to_hdac_dev(dev), modalias, 71 + sizeof(modalias)); 72 + if (add_uevent_var(env, "MODALIAS=%s", modalias)) 73 + return -ENOMEM; 74 + return 0; 75 + } 76 + 67 77 struct bus_type snd_hda_bus_type = { 68 78 .name = "hdaudio", 69 79 .match = hda_bus_match, 80 + .uevent = hda_uevent, 70 81 }; 71 82 EXPORT_SYMBOL_GPL(snd_hda_bus_type); 72 83
+15
sound/hda/hdac_device.c
··· 186 186 EXPORT_SYMBOL_GPL(snd_hdac_device_set_chip_name); 187 187 188 188 /** 189 + * snd_hdac_codec_modalias - give the module alias name 190 + * @codec: HDAC device 191 + * @buf: string buffer to store 192 + * @size: string buffer size 193 + * 194 + * Returns the size of string, like snprintf(), or a negative error code. 195 + */ 196 + int snd_hdac_codec_modalias(struct hdac_device *codec, char *buf, size_t size) 197 + { 198 + return snprintf(buf, size, "hdaudio:v%08Xr%08Xa%02X\n", 199 + codec->vendor_id, codec->revision_id, codec->type); 200 + } 201 + EXPORT_SYMBOL_GPL(snd_hdac_codec_modalias); 202 + 203 + /** 189 204 * snd_hdac_make_cmd - compose a 32bit command word to be sent to the 190 205 * HD-audio controller 191 206 * @codec: the codec object
+8
sound/hda/hdac_sysfs.c
··· 45 45 CODEC_ATTR_STR(vendor_name); 46 46 CODEC_ATTR_STR(chip_name); 47 47 48 + static ssize_t modalias_show(struct device *dev, struct device_attribute *attr, 49 + char *buf) 50 + { 51 + return snd_hdac_codec_modalias(dev_to_hdac_dev(dev), buf, 256); 52 + } 53 + static DEVICE_ATTR_RO(modalias); 54 + 48 55 static struct attribute *hdac_dev_attrs[] = { 49 56 &dev_attr_type.attr, 50 57 &dev_attr_vendor_id.attr, ··· 61 54 &dev_attr_mfg.attr, 62 55 &dev_attr_vendor_name.attr, 63 56 &dev_attr_chip_name.attr, 57 + &dev_attr_modalias.attr, 64 58 NULL 65 59 }; 66 60
+18 -14
sound/pci/hda/hda_bind.c
··· 15 15 #include "hda_local.h" 16 16 17 17 /* 18 - * find a matching codec preset 18 + * find a matching codec id 19 19 */ 20 20 static int hda_codec_match(struct hdac_device *dev, struct hdac_driver *drv) 21 21 { 22 22 struct hda_codec *codec = container_of(dev, struct hda_codec, core); 23 23 struct hda_codec_driver *driver = 24 24 container_of(drv, struct hda_codec_driver, core); 25 - const struct hda_codec_preset *preset; 25 + const struct hda_device_id *list; 26 26 /* check probe_id instead of vendor_id if set */ 27 27 u32 id = codec->probe_id ? codec->probe_id : codec->core.vendor_id; 28 + u32 rev_id = codec->core.revision_id; 28 29 29 - for (preset = driver->preset; preset->id; preset++) { 30 - if (preset->id == id && 31 - (!preset->rev || preset->rev == codec->core.revision_id)) { 32 - codec->preset = preset; 30 + for (list = driver->id; list->vendor_id; list++) { 31 + if (list->vendor_id == id && 32 + (!list->rev_id || list->rev_id == rev_id)) { 33 + codec->preset = list; 33 34 return 1; 34 35 } 35 36 } ··· 78 77 { 79 78 struct hda_codec *codec = dev_to_hda_codec(dev); 80 79 struct module *owner = dev->driver->owner; 80 + hda_codec_patch_t patch; 81 81 int err; 82 82 83 83 if (WARN_ON(!codec->preset)) ··· 96 94 goto error; 97 95 } 98 96 99 - err = codec->preset->patch(codec); 100 - if (err < 0) 101 - goto error_module; 97 + patch = (hda_codec_patch_t)codec->preset->driver_data; 98 + if (patch) { 99 + err = patch(codec); 100 + if (err < 0) 101 + goto error_module; 102 + } 102 103 103 104 err = snd_hda_codec_build_pcms(codec); 104 105 if (err < 0) ··· 178 173 static void codec_bind_module(struct hda_codec *codec) 179 174 { 180 175 #ifdef MODULE 181 - request_module("snd-hda-codec-id:%08x", codec->core.vendor_id); 182 - if (codec_probed(codec)) 183 - return; 184 - request_module("snd-hda-codec-id:%04x*", 185 - (codec->core.vendor_id >> 16) & 0xffff); 176 + char modalias[32]; 177 + 178 + snd_hdac_codec_modalias(&codec->core, modalias, sizeof(modalias)); 179 + request_module(modalias); 186 180 if (codec_probed(codec)) 187 181 return; 188 182 #endif
+11 -8
sound/pci/hda/hda_codec.h
··· 22 22 #define __SOUND_HDA_CODEC_H 23 23 24 24 #include <linux/kref.h> 25 + #include <linux/mod_devicetable.h> 25 26 #include <sound/info.h> 26 27 #include <sound/control.h> 27 28 #include <sound/pcm.h> ··· 82 81 * Known codecs have the patch to build and set up the controls/PCMs 83 82 * better than the generic parser. 84 83 */ 85 - struct hda_codec_preset { 86 - unsigned int id; 87 - unsigned int rev; 88 - const char *name; 89 - int (*patch)(struct hda_codec *codec); 90 - }; 84 + typedef int (*hda_codec_patch_t)(struct hda_codec *); 91 85 92 86 #define HDA_CODEC_ID_GENERIC_HDMI 0x00000101 93 87 #define HDA_CODEC_ID_GENERIC 0x00000201 94 88 89 + #define HDA_CODEC_REV_ENTRY(_vid, _rev, _name, _patch) \ 90 + { .vendor_id = (_vid), .rev_id = (_rev), .name = (_name), \ 91 + .api_version = HDA_DEV_LEGACY, \ 92 + .driver_data = (unsigned long)(_patch) } 93 + #define HDA_CODEC_ENTRY(_vid, _name, _patch) \ 94 + HDA_CODEC_REV_ENTRY(_vid, 0, _name, _patch) 95 + 95 96 struct hda_codec_driver { 96 97 struct hdac_driver core; 97 - const struct hda_codec_preset *preset; 98 + const struct hda_device_id *id; 98 99 }; 99 100 100 101 int __hda_codec_driver_register(struct hda_codec_driver *drv, const char *name, ··· 187 184 u32 probe_id; /* overridden id for probing */ 188 185 189 186 /* detected preset */ 190 - const struct hda_codec_preset *preset; 187 + const struct hda_device_id *preset; 191 188 const char *modelname; /* model name for preset */ 192 189 193 190 /* set by patch */
+4 -3
sound/pci/hda/hda_generic.c
··· 5877 5877 return err; 5878 5878 } 5879 5879 5880 - static const struct hda_codec_preset snd_hda_preset_generic[] = { 5881 - { .id = HDA_CODEC_ID_GENERIC, .patch = snd_hda_parse_generic_codec }, 5880 + static const struct hda_device_id snd_hda_id_generic[] = { 5881 + HDA_CODEC_ENTRY(HDA_CODEC_ID_GENERIC, "Generic", snd_hda_parse_generic_codec), 5882 5882 {} /* terminator */ 5883 5883 }; 5884 + MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_generic); 5884 5885 5885 5886 static struct hda_codec_driver generic_driver = { 5886 - .preset = snd_hda_preset_generic, 5887 + .id = snd_hda_id_generic, 5887 5888 }; 5888 5889 5889 5890 module_hda_codec_driver(generic_driver);
+18 -19
sound/pci/hda/patch_analog.c
··· 1165 1165 /* 1166 1166 * patch entries 1167 1167 */ 1168 - static const struct hda_codec_preset snd_hda_preset_analog[] = { 1169 - { .id = 0x11d4184a, .name = "AD1884A", .patch = patch_ad1884 }, 1170 - { .id = 0x11d41882, .name = "AD1882", .patch = patch_ad1882 }, 1171 - { .id = 0x11d41883, .name = "AD1883", .patch = patch_ad1884 }, 1172 - { .id = 0x11d41884, .name = "AD1884", .patch = patch_ad1884 }, 1173 - { .id = 0x11d4194a, .name = "AD1984A", .patch = patch_ad1884 }, 1174 - { .id = 0x11d4194b, .name = "AD1984B", .patch = patch_ad1884 }, 1175 - { .id = 0x11d41981, .name = "AD1981", .patch = patch_ad1981 }, 1176 - { .id = 0x11d41983, .name = "AD1983", .patch = patch_ad1983 }, 1177 - { .id = 0x11d41984, .name = "AD1984", .patch = patch_ad1884 }, 1178 - { .id = 0x11d41986, .name = "AD1986A", .patch = patch_ad1986a }, 1179 - { .id = 0x11d41988, .name = "AD1988", .patch = patch_ad1988 }, 1180 - { .id = 0x11d4198b, .name = "AD1988B", .patch = patch_ad1988 }, 1181 - { .id = 0x11d4882a, .name = "AD1882A", .patch = patch_ad1882 }, 1182 - { .id = 0x11d4989a, .name = "AD1989A", .patch = patch_ad1988 }, 1183 - { .id = 0x11d4989b, .name = "AD1989B", .patch = patch_ad1988 }, 1168 + static const struct hda_device_id snd_hda_id_analog[] = { 1169 + HDA_CODEC_ENTRY(0x11d4184a, "AD1884A", patch_ad1884), 1170 + HDA_CODEC_ENTRY(0x11d41882, "AD1882", patch_ad1882), 1171 + HDA_CODEC_ENTRY(0x11d41883, "AD1883", patch_ad1884), 1172 + HDA_CODEC_ENTRY(0x11d41884, "AD1884", patch_ad1884), 1173 + HDA_CODEC_ENTRY(0x11d4194a, "AD1984A", patch_ad1884), 1174 + HDA_CODEC_ENTRY(0x11d4194b, "AD1984B", patch_ad1884), 1175 + HDA_CODEC_ENTRY(0x11d41981, "AD1981", patch_ad1981), 1176 + HDA_CODEC_ENTRY(0x11d41983, "AD1983", patch_ad1983), 1177 + HDA_CODEC_ENTRY(0x11d41984, "AD1984", patch_ad1884), 1178 + HDA_CODEC_ENTRY(0x11d41986, "AD1986A", patch_ad1986a), 1179 + HDA_CODEC_ENTRY(0x11d41988, "AD1988", patch_ad1988), 1180 + HDA_CODEC_ENTRY(0x11d4198b, "AD1988B", patch_ad1988), 1181 + HDA_CODEC_ENTRY(0x11d4882a, "AD1882A", patch_ad1882), 1182 + HDA_CODEC_ENTRY(0x11d4989a, "AD1989A", patch_ad1988), 1183 + HDA_CODEC_ENTRY(0x11d4989b, "AD1989B", patch_ad1988), 1184 1184 {} /* terminator */ 1185 1185 }; 1186 - 1187 - MODULE_ALIAS("snd-hda-codec-id:11d4*"); 1186 + MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_analog); 1188 1187 1189 1188 MODULE_LICENSE("GPL"); 1190 1189 MODULE_DESCRIPTION("Analog Devices HD-audio codec"); 1191 1190 1192 1191 static struct hda_codec_driver analog_driver = { 1193 - .preset = snd_hda_preset_analog, 1192 + .id = snd_hda_id_analog, 1194 1193 }; 1195 1194 1196 1195 module_hda_codec_driver(analog_driver);
+6 -9
sound/pci/hda/patch_ca0110.c
··· 83 83 /* 84 84 * patch entries 85 85 */ 86 - static const struct hda_codec_preset snd_hda_preset_ca0110[] = { 87 - { .id = 0x1102000a, .name = "CA0110-IBG", .patch = patch_ca0110 }, 88 - { .id = 0x1102000b, .name = "CA0110-IBG", .patch = patch_ca0110 }, 89 - { .id = 0x1102000d, .name = "SB0880 X-Fi", .patch = patch_ca0110 }, 86 + static const struct hda_device_id snd_hda_id_ca0110[] = { 87 + HDA_CODEC_ENTRY(0x1102000a, "CA0110-IBG", patch_ca0110), 88 + HDA_CODEC_ENTRY(0x1102000b, "CA0110-IBG", patch_ca0110), 89 + HDA_CODEC_ENTRY(0x1102000d, "SB0880 X-Fi", patch_ca0110), 90 90 {} /* terminator */ 91 91 }; 92 - 93 - MODULE_ALIAS("snd-hda-codec-id:1102000a"); 94 - MODULE_ALIAS("snd-hda-codec-id:1102000b"); 95 - MODULE_ALIAS("snd-hda-codec-id:1102000d"); 92 + MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_ca0110); 96 93 97 94 MODULE_LICENSE("GPL"); 98 95 MODULE_DESCRIPTION("Creative CA0110-IBG HD-audio codec"); 99 96 100 97 static struct hda_codec_driver ca0110_driver = { 101 - .preset = snd_hda_preset_ca0110, 98 + .id = snd_hda_id_ca0110, 102 99 }; 103 100 104 101 module_hda_codec_driver(ca0110_driver);
+4 -5
sound/pci/hda/patch_ca0132.c
··· 4778 4778 /* 4779 4779 * patch entries 4780 4780 */ 4781 - static struct hda_codec_preset snd_hda_preset_ca0132[] = { 4782 - { .id = 0x11020011, .name = "CA0132", .patch = patch_ca0132 }, 4781 + static struct hda_device_id snd_hda_id_ca0132[] = { 4782 + HDA_CODEC_ENTRY(0x11020011, "CA0132", patch_ca0132), 4783 4783 {} /* terminator */ 4784 4784 }; 4785 - 4786 - MODULE_ALIAS("snd-hda-codec-id:11020011"); 4785 + MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_ca0132); 4787 4786 4788 4787 MODULE_LICENSE("GPL"); 4789 4788 MODULE_DESCRIPTION("Creative Sound Core3D codec"); 4790 4789 4791 4790 static struct hda_codec_driver ca0132_driver = { 4792 - .preset = snd_hda_preset_ca0132, 4791 + .id = snd_hda_id_ca0132, 4793 4792 }; 4794 4793 4795 4794 module_hda_codec_driver(ca0132_driver);
+8 -13
sound/pci/hda/patch_cirrus.c
··· 1201 1201 /* 1202 1202 * patch entries 1203 1203 */ 1204 - static const struct hda_codec_preset snd_hda_preset_cirrus[] = { 1205 - { .id = 0x10134206, .name = "CS4206", .patch = patch_cs420x }, 1206 - { .id = 0x10134207, .name = "CS4207", .patch = patch_cs420x }, 1207 - { .id = 0x10134208, .name = "CS4208", .patch = patch_cs4208 }, 1208 - { .id = 0x10134210, .name = "CS4210", .patch = patch_cs4210 }, 1209 - { .id = 0x10134213, .name = "CS4213", .patch = patch_cs4213 }, 1204 + static const struct hda_device_id snd_hda_id_cirrus[] = { 1205 + HDA_CODEC_ENTRY(0x10134206, "CS4206", patch_cs420x), 1206 + HDA_CODEC_ENTRY(0x10134207, "CS4207", patch_cs420x), 1207 + HDA_CODEC_ENTRY(0x10134208, "CS4208", patch_cs4208), 1208 + HDA_CODEC_ENTRY(0x10134210, "CS4210", patch_cs4210), 1209 + HDA_CODEC_ENTRY(0x10134213, "CS4213", patch_cs4213), 1210 1210 {} /* terminator */ 1211 1211 }; 1212 - 1213 - MODULE_ALIAS("snd-hda-codec-id:10134206"); 1214 - MODULE_ALIAS("snd-hda-codec-id:10134207"); 1215 - MODULE_ALIAS("snd-hda-codec-id:10134208"); 1216 - MODULE_ALIAS("snd-hda-codec-id:10134210"); 1217 - MODULE_ALIAS("snd-hda-codec-id:10134213"); 1212 + MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_cirrus); 1218 1213 1219 1214 MODULE_LICENSE("GPL"); 1220 1215 MODULE_DESCRIPTION("Cirrus Logic HD-audio codec"); 1221 1216 1222 1217 static struct hda_codec_driver cirrus_driver = { 1223 - .preset = snd_hda_preset_cirrus, 1218 + .id = snd_hda_id_cirrus, 1224 1219 }; 1225 1220 1226 1221 module_hda_codec_driver(cirrus_driver);
+6 -9
sound/pci/hda/patch_cmedia.c
··· 123 123 /* 124 124 * patch entries 125 125 */ 126 - static const struct hda_codec_preset snd_hda_preset_cmedia[] = { 127 - { .id = 0x13f68888, .name = "CMI8888", .patch = patch_cmi8888 }, 128 - { .id = 0x13f69880, .name = "CMI9880", .patch = patch_cmi9880 }, 129 - { .id = 0x434d4980, .name = "CMI9880", .patch = patch_cmi9880 }, 126 + static const struct hda_device_id snd_hda_id_cmedia[] = { 127 + HDA_CODEC_ENTRY(0x13f68888, "CMI8888", patch_cmi8888), 128 + HDA_CODEC_ENTRY(0x13f69880, "CMI9880", patch_cmi9880), 129 + HDA_CODEC_ENTRY(0x434d4980, "CMI9880", patch_cmi9880), 130 130 {} /* terminator */ 131 131 }; 132 - 133 - MODULE_ALIAS("snd-hda-codec-id:13f68888"); 134 - MODULE_ALIAS("snd-hda-codec-id:13f69880"); 135 - MODULE_ALIAS("snd-hda-codec-id:434d4980"); 132 + MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_cmedia); 136 133 137 134 MODULE_LICENSE("GPL"); 138 135 MODULE_DESCRIPTION("C-Media HD-audio codec"); 139 136 140 137 static struct hda_codec_driver cmedia_driver = { 141 - .preset = snd_hda_preset_cmedia, 138 + .id = snd_hda_id_cmedia, 142 139 }; 143 140 144 141 module_hda_codec_driver(cmedia_driver);
+31 -87
sound/pci/hda/patch_conexant.c
··· 954 954 /* 955 955 */ 956 956 957 - static const struct hda_codec_preset snd_hda_preset_conexant[] = { 958 - { .id = 0x14f15045, .name = "CX20549 (Venice)", 959 - .patch = patch_conexant_auto }, 960 - { .id = 0x14f15047, .name = "CX20551 (Waikiki)", 961 - .patch = patch_conexant_auto }, 962 - { .id = 0x14f15051, .name = "CX20561 (Hermosa)", 963 - .patch = patch_conexant_auto }, 964 - { .id = 0x14f15066, .name = "CX20582 (Pebble)", 965 - .patch = patch_conexant_auto }, 966 - { .id = 0x14f15067, .name = "CX20583 (Pebble HSF)", 967 - .patch = patch_conexant_auto }, 968 - { .id = 0x14f15068, .name = "CX20584", 969 - .patch = patch_conexant_auto }, 970 - { .id = 0x14f15069, .name = "CX20585", 971 - .patch = patch_conexant_auto }, 972 - { .id = 0x14f1506c, .name = "CX20588", 973 - .patch = patch_conexant_auto }, 974 - { .id = 0x14f1506e, .name = "CX20590", 975 - .patch = patch_conexant_auto }, 976 - { .id = 0x14f15097, .name = "CX20631", 977 - .patch = patch_conexant_auto }, 978 - { .id = 0x14f15098, .name = "CX20632", 979 - .patch = patch_conexant_auto }, 980 - { .id = 0x14f150a1, .name = "CX20641", 981 - .patch = patch_conexant_auto }, 982 - { .id = 0x14f150a2, .name = "CX20642", 983 - .patch = patch_conexant_auto }, 984 - { .id = 0x14f150ab, .name = "CX20651", 985 - .patch = patch_conexant_auto }, 986 - { .id = 0x14f150ac, .name = "CX20652", 987 - .patch = patch_conexant_auto }, 988 - { .id = 0x14f150b8, .name = "CX20664", 989 - .patch = patch_conexant_auto }, 990 - { .id = 0x14f150b9, .name = "CX20665", 991 - .patch = patch_conexant_auto }, 992 - { .id = 0x14f150f1, .name = "CX20721", 993 - .patch = patch_conexant_auto }, 994 - { .id = 0x14f150f2, .name = "CX20722", 995 - .patch = patch_conexant_auto }, 996 - { .id = 0x14f150f3, .name = "CX20723", 997 - .patch = patch_conexant_auto }, 998 - { .id = 0x14f150f4, .name = "CX20724", 999 - .patch = patch_conexant_auto }, 1000 - { .id = 0x14f1510f, .name = "CX20751/2", 1001 - .patch = patch_conexant_auto }, 1002 - { .id = 0x14f15110, .name = "CX20751/2", 1003 - .patch = patch_conexant_auto }, 1004 - { .id = 0x14f15111, .name = "CX20753/4", 1005 - .patch = patch_conexant_auto }, 1006 - { .id = 0x14f15113, .name = "CX20755", 1007 - .patch = patch_conexant_auto }, 1008 - { .id = 0x14f15114, .name = "CX20756", 1009 - .patch = patch_conexant_auto }, 1010 - { .id = 0x14f15115, .name = "CX20757", 1011 - .patch = patch_conexant_auto }, 1012 - { .id = 0x14f151d7, .name = "CX20952", 1013 - .patch = patch_conexant_auto }, 957 + static const struct hda_device_id snd_hda_id_conexant[] = { 958 + HDA_CODEC_ENTRY(0x14f15045, "CX20549 (Venice)", patch_conexant_auto), 959 + HDA_CODEC_ENTRY(0x14f15047, "CX20551 (Waikiki)", patch_conexant_auto), 960 + HDA_CODEC_ENTRY(0x14f15051, "CX20561 (Hermosa)", patch_conexant_auto), 961 + HDA_CODEC_ENTRY(0x14f15066, "CX20582 (Pebble)", patch_conexant_auto), 962 + HDA_CODEC_ENTRY(0x14f15067, "CX20583 (Pebble HSF)", patch_conexant_auto), 963 + HDA_CODEC_ENTRY(0x14f15068, "CX20584", patch_conexant_auto), 964 + HDA_CODEC_ENTRY(0x14f15069, "CX20585", patch_conexant_auto), 965 + HDA_CODEC_ENTRY(0x14f1506c, "CX20588", patch_conexant_auto), 966 + HDA_CODEC_ENTRY(0x14f1506e, "CX20590", patch_conexant_auto), 967 + HDA_CODEC_ENTRY(0x14f15097, "CX20631", patch_conexant_auto), 968 + HDA_CODEC_ENTRY(0x14f15098, "CX20632", patch_conexant_auto), 969 + HDA_CODEC_ENTRY(0x14f150a1, "CX20641", patch_conexant_auto), 970 + HDA_CODEC_ENTRY(0x14f150a2, "CX20642", patch_conexant_auto), 971 + HDA_CODEC_ENTRY(0x14f150ab, "CX20651", patch_conexant_auto), 972 + HDA_CODEC_ENTRY(0x14f150ac, "CX20652", patch_conexant_auto), 973 + HDA_CODEC_ENTRY(0x14f150b8, "CX20664", patch_conexant_auto), 974 + HDA_CODEC_ENTRY(0x14f150b9, "CX20665", patch_conexant_auto), 975 + HDA_CODEC_ENTRY(0x14f150f1, "CX20721", patch_conexant_auto), 976 + HDA_CODEC_ENTRY(0x14f150f2, "CX20722", patch_conexant_auto), 977 + HDA_CODEC_ENTRY(0x14f150f3, "CX20723", patch_conexant_auto), 978 + HDA_CODEC_ENTRY(0x14f150f4, "CX20724", patch_conexant_auto), 979 + HDA_CODEC_ENTRY(0x14f1510f, "CX20751/2", patch_conexant_auto), 980 + HDA_CODEC_ENTRY(0x14f15110, "CX20751/2", patch_conexant_auto), 981 + HDA_CODEC_ENTRY(0x14f15111, "CX20753/4", patch_conexant_auto), 982 + HDA_CODEC_ENTRY(0x14f15113, "CX20755", patch_conexant_auto), 983 + HDA_CODEC_ENTRY(0x14f15114, "CX20756", patch_conexant_auto), 984 + HDA_CODEC_ENTRY(0x14f15115, "CX20757", patch_conexant_auto), 985 + HDA_CODEC_ENTRY(0x14f151d7, "CX20952", patch_conexant_auto), 1014 986 {} /* terminator */ 1015 987 }; 1016 - 1017 - MODULE_ALIAS("snd-hda-codec-id:14f15045"); 1018 - MODULE_ALIAS("snd-hda-codec-id:14f15047"); 1019 - MODULE_ALIAS("snd-hda-codec-id:14f15051"); 1020 - MODULE_ALIAS("snd-hda-codec-id:14f15066"); 1021 - MODULE_ALIAS("snd-hda-codec-id:14f15067"); 1022 - MODULE_ALIAS("snd-hda-codec-id:14f15068"); 1023 - MODULE_ALIAS("snd-hda-codec-id:14f15069"); 1024 - MODULE_ALIAS("snd-hda-codec-id:14f1506c"); 1025 - MODULE_ALIAS("snd-hda-codec-id:14f1506e"); 1026 - MODULE_ALIAS("snd-hda-codec-id:14f15097"); 1027 - MODULE_ALIAS("snd-hda-codec-id:14f15098"); 1028 - MODULE_ALIAS("snd-hda-codec-id:14f150a1"); 1029 - MODULE_ALIAS("snd-hda-codec-id:14f150a2"); 1030 - MODULE_ALIAS("snd-hda-codec-id:14f150ab"); 1031 - MODULE_ALIAS("snd-hda-codec-id:14f150ac"); 1032 - MODULE_ALIAS("snd-hda-codec-id:14f150b8"); 1033 - MODULE_ALIAS("snd-hda-codec-id:14f150b9"); 1034 - MODULE_ALIAS("snd-hda-codec-id:14f150f1"); 1035 - MODULE_ALIAS("snd-hda-codec-id:14f150f2"); 1036 - MODULE_ALIAS("snd-hda-codec-id:14f150f3"); 1037 - MODULE_ALIAS("snd-hda-codec-id:14f150f4"); 1038 - MODULE_ALIAS("snd-hda-codec-id:14f1510f"); 1039 - MODULE_ALIAS("snd-hda-codec-id:14f15110"); 1040 - MODULE_ALIAS("snd-hda-codec-id:14f15111"); 1041 - MODULE_ALIAS("snd-hda-codec-id:14f15113"); 1042 - MODULE_ALIAS("snd-hda-codec-id:14f15114"); 1043 - MODULE_ALIAS("snd-hda-codec-id:14f15115"); 1044 - MODULE_ALIAS("snd-hda-codec-id:14f151d7"); 988 + MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_conexant); 1045 989 1046 990 MODULE_LICENSE("GPL"); 1047 991 MODULE_DESCRIPTION("Conexant HD-audio codec"); 1048 992 1049 993 static struct hda_codec_driver conexant_driver = { 1050 - .preset = snd_hda_preset_conexant, 994 + .id = snd_hda_id_conexant, 1051 995 }; 1052 996 1053 997 module_hda_codec_driver(conexant_driver);
+70 -131
sound/pci/hda/patch_hdmi.c
··· 2580 2580 struct hdmi_spec *spec = codec->spec; 2581 2581 struct snd_pcm_hw_constraint_list *hw_constraints_channels = NULL; 2582 2582 2583 - switch (codec->preset->id) { 2583 + switch (codec->preset->vendor_id) { 2584 2584 case 0x10de0002: 2585 2585 case 0x10de0003: 2586 2586 case 0x10de0005: ··· 2898 2898 snd_pcm_alt_chmaps, 8, 0, &chmap); 2899 2899 if (err < 0) 2900 2900 return err; 2901 - switch (codec->preset->id) { 2901 + switch (codec->preset->vendor_id) { 2902 2902 case 0x10de0002: 2903 2903 case 0x10de0003: 2904 2904 case 0x10de0005: ··· 3506 3506 /* 3507 3507 * patch entries 3508 3508 */ 3509 - static const struct hda_codec_preset snd_hda_preset_hdmi[] = { 3510 - { .id = 0x1002793c, .name = "RS600 HDMI", .patch = patch_atihdmi }, 3511 - { .id = 0x10027919, .name = "RS600 HDMI", .patch = patch_atihdmi }, 3512 - { .id = 0x1002791a, .name = "RS690/780 HDMI", .patch = patch_atihdmi }, 3513 - { .id = 0x1002aa01, .name = "R6xx HDMI", .patch = patch_atihdmi }, 3514 - { .id = 0x10951390, .name = "SiI1390 HDMI", .patch = patch_generic_hdmi }, 3515 - { .id = 0x10951392, .name = "SiI1392 HDMI", .patch = patch_generic_hdmi }, 3516 - { .id = 0x17e80047, .name = "Chrontel HDMI", .patch = patch_generic_hdmi }, 3517 - { .id = 0x10de0002, .name = "MCP77/78 HDMI", .patch = patch_nvhdmi_8ch_7x }, 3518 - { .id = 0x10de0003, .name = "MCP77/78 HDMI", .patch = patch_nvhdmi_8ch_7x }, 3519 - { .id = 0x10de0005, .name = "MCP77/78 HDMI", .patch = patch_nvhdmi_8ch_7x }, 3520 - { .id = 0x10de0006, .name = "MCP77/78 HDMI", .patch = patch_nvhdmi_8ch_7x }, 3521 - { .id = 0x10de0007, .name = "MCP79/7A HDMI", .patch = patch_nvhdmi_8ch_7x }, 3522 - { .id = 0x10de000a, .name = "GPU 0a HDMI/DP", .patch = patch_nvhdmi }, 3523 - { .id = 0x10de000b, .name = "GPU 0b HDMI/DP", .patch = patch_nvhdmi }, 3524 - { .id = 0x10de000c, .name = "MCP89 HDMI", .patch = patch_nvhdmi }, 3525 - { .id = 0x10de000d, .name = "GPU 0d HDMI/DP", .patch = patch_nvhdmi }, 3526 - { .id = 0x10de0010, .name = "GPU 10 HDMI/DP", .patch = patch_nvhdmi }, 3527 - { .id = 0x10de0011, .name = "GPU 11 HDMI/DP", .patch = patch_nvhdmi }, 3528 - { .id = 0x10de0012, .name = "GPU 12 HDMI/DP", .patch = patch_nvhdmi }, 3529 - { .id = 0x10de0013, .name = "GPU 13 HDMI/DP", .patch = patch_nvhdmi }, 3530 - { .id = 0x10de0014, .name = "GPU 14 HDMI/DP", .patch = patch_nvhdmi }, 3531 - { .id = 0x10de0015, .name = "GPU 15 HDMI/DP", .patch = patch_nvhdmi }, 3532 - { .id = 0x10de0016, .name = "GPU 16 HDMI/DP", .patch = patch_nvhdmi }, 3509 + static const struct hda_device_id snd_hda_id_hdmi[] = { 3510 + HDA_CODEC_ENTRY(0x1002793c, "RS600 HDMI", patch_atihdmi), 3511 + HDA_CODEC_ENTRY(0x10027919, "RS600 HDMI", patch_atihdmi), 3512 + HDA_CODEC_ENTRY(0x1002791a, "RS690/780 HDMI", patch_atihdmi), 3513 + HDA_CODEC_ENTRY(0x1002aa01, "R6xx HDMI", patch_atihdmi), 3514 + HDA_CODEC_ENTRY(0x10951390, "SiI1390 HDMI", patch_generic_hdmi), 3515 + HDA_CODEC_ENTRY(0x10951392, "SiI1392 HDMI", patch_generic_hdmi), 3516 + HDA_CODEC_ENTRY(0x17e80047, "Chrontel HDMI", patch_generic_hdmi), 3517 + HDA_CODEC_ENTRY(0x10de0002, "MCP77/78 HDMI", patch_nvhdmi_8ch_7x), 3518 + HDA_CODEC_ENTRY(0x10de0003, "MCP77/78 HDMI", patch_nvhdmi_8ch_7x), 3519 + HDA_CODEC_ENTRY(0x10de0005, "MCP77/78 HDMI", patch_nvhdmi_8ch_7x), 3520 + HDA_CODEC_ENTRY(0x10de0006, "MCP77/78 HDMI", patch_nvhdmi_8ch_7x), 3521 + HDA_CODEC_ENTRY(0x10de0007, "MCP79/7A HDMI", patch_nvhdmi_8ch_7x), 3522 + HDA_CODEC_ENTRY(0x10de000a, "GPU 0a HDMI/DP", patch_nvhdmi), 3523 + HDA_CODEC_ENTRY(0x10de000b, "GPU 0b HDMI/DP", patch_nvhdmi), 3524 + HDA_CODEC_ENTRY(0x10de000c, "MCP89 HDMI", patch_nvhdmi), 3525 + HDA_CODEC_ENTRY(0x10de000d, "GPU 0d HDMI/DP", patch_nvhdmi), 3526 + HDA_CODEC_ENTRY(0x10de0010, "GPU 10 HDMI/DP", patch_nvhdmi), 3527 + HDA_CODEC_ENTRY(0x10de0011, "GPU 11 HDMI/DP", patch_nvhdmi), 3528 + HDA_CODEC_ENTRY(0x10de0012, "GPU 12 HDMI/DP", patch_nvhdmi), 3529 + HDA_CODEC_ENTRY(0x10de0013, "GPU 13 HDMI/DP", patch_nvhdmi), 3530 + HDA_CODEC_ENTRY(0x10de0014, "GPU 14 HDMI/DP", patch_nvhdmi), 3531 + HDA_CODEC_ENTRY(0x10de0015, "GPU 15 HDMI/DP", patch_nvhdmi), 3532 + HDA_CODEC_ENTRY(0x10de0016, "GPU 16 HDMI/DP", patch_nvhdmi), 3533 3533 /* 17 is known to be absent */ 3534 - { .id = 0x10de0018, .name = "GPU 18 HDMI/DP", .patch = patch_nvhdmi }, 3535 - { .id = 0x10de0019, .name = "GPU 19 HDMI/DP", .patch = patch_nvhdmi }, 3536 - { .id = 0x10de001a, .name = "GPU 1a HDMI/DP", .patch = patch_nvhdmi }, 3537 - { .id = 0x10de001b, .name = "GPU 1b HDMI/DP", .patch = patch_nvhdmi }, 3538 - { .id = 0x10de001c, .name = "GPU 1c HDMI/DP", .patch = patch_nvhdmi }, 3539 - { .id = 0x10de0020, .name = "Tegra30 HDMI", .patch = patch_tegra_hdmi }, 3540 - { .id = 0x10de0022, .name = "Tegra114 HDMI", .patch = patch_tegra_hdmi }, 3541 - { .id = 0x10de0028, .name = "Tegra124 HDMI", .patch = patch_tegra_hdmi }, 3542 - { .id = 0x10de0029, .name = "Tegra210 HDMI/DP", .patch = patch_tegra_hdmi }, 3543 - { .id = 0x10de0040, .name = "GPU 40 HDMI/DP", .patch = patch_nvhdmi }, 3544 - { .id = 0x10de0041, .name = "GPU 41 HDMI/DP", .patch = patch_nvhdmi }, 3545 - { .id = 0x10de0042, .name = "GPU 42 HDMI/DP", .patch = patch_nvhdmi }, 3546 - { .id = 0x10de0043, .name = "GPU 43 HDMI/DP", .patch = patch_nvhdmi }, 3547 - { .id = 0x10de0044, .name = "GPU 44 HDMI/DP", .patch = patch_nvhdmi }, 3548 - { .id = 0x10de0051, .name = "GPU 51 HDMI/DP", .patch = patch_nvhdmi }, 3549 - { .id = 0x10de0060, .name = "GPU 60 HDMI/DP", .patch = patch_nvhdmi }, 3550 - { .id = 0x10de0067, .name = "MCP67 HDMI", .patch = patch_nvhdmi_2ch }, 3551 - { .id = 0x10de0070, .name = "GPU 70 HDMI/DP", .patch = patch_nvhdmi }, 3552 - { .id = 0x10de0071, .name = "GPU 71 HDMI/DP", .patch = patch_nvhdmi }, 3553 - { .id = 0x10de0072, .name = "GPU 72 HDMI/DP", .patch = patch_nvhdmi }, 3554 - { .id = 0x10de007d, .name = "GPU 7d HDMI/DP", .patch = patch_nvhdmi }, 3555 - { .id = 0x10de8001, .name = "MCP73 HDMI", .patch = patch_nvhdmi_2ch }, 3556 - { .id = 0x11069f80, .name = "VX900 HDMI/DP", .patch = patch_via_hdmi }, 3557 - { .id = 0x11069f81, .name = "VX900 HDMI/DP", .patch = patch_via_hdmi }, 3558 - { .id = 0x11069f84, .name = "VX11 HDMI/DP", .patch = patch_generic_hdmi }, 3559 - { .id = 0x11069f85, .name = "VX11 HDMI/DP", .patch = patch_generic_hdmi }, 3560 - { .id = 0x80860054, .name = "IbexPeak HDMI", .patch = patch_generic_hdmi }, 3561 - { .id = 0x80862801, .name = "Bearlake HDMI", .patch = patch_generic_hdmi }, 3562 - { .id = 0x80862802, .name = "Cantiga HDMI", .patch = patch_generic_hdmi }, 3563 - { .id = 0x80862803, .name = "Eaglelake HDMI", .patch = patch_generic_hdmi }, 3564 - { .id = 0x80862804, .name = "IbexPeak HDMI", .patch = patch_generic_hdmi }, 3565 - { .id = 0x80862805, .name = "CougarPoint HDMI", .patch = patch_generic_hdmi }, 3566 - { .id = 0x80862806, .name = "PantherPoint HDMI", .patch = patch_generic_hdmi }, 3567 - { .id = 0x80862807, .name = "Haswell HDMI", .patch = patch_generic_hdmi }, 3568 - { .id = 0x80862808, .name = "Broadwell HDMI", .patch = patch_generic_hdmi }, 3569 - { .id = 0x80862809, .name = "Skylake HDMI", .patch = patch_generic_hdmi }, 3570 - { .id = 0x8086280a, .name = "Broxton HDMI", .patch = patch_generic_hdmi }, 3571 - { .id = 0x80862880, .name = "CedarTrail HDMI", .patch = patch_generic_hdmi }, 3572 - { .id = 0x80862882, .name = "Valleyview2 HDMI", .patch = patch_generic_hdmi }, 3573 - { .id = 0x80862883, .name = "Braswell HDMI", .patch = patch_generic_hdmi }, 3574 - { .id = 0x808629fb, .name = "Crestline HDMI", .patch = patch_generic_hdmi }, 3534 + HDA_CODEC_ENTRY(0x10de0018, "GPU 18 HDMI/DP", patch_nvhdmi), 3535 + HDA_CODEC_ENTRY(0x10de0019, "GPU 19 HDMI/DP", patch_nvhdmi), 3536 + HDA_CODEC_ENTRY(0x10de001a, "GPU 1a HDMI/DP", patch_nvhdmi), 3537 + HDA_CODEC_ENTRY(0x10de001b, "GPU 1b HDMI/DP", patch_nvhdmi), 3538 + HDA_CODEC_ENTRY(0x10de001c, "GPU 1c HDMI/DP", patch_nvhdmi), 3539 + HDA_CODEC_ENTRY(0x10de0020, "Tegra30 HDMI", patch_tegra_hdmi), 3540 + HDA_CODEC_ENTRY(0x10de0022, "Tegra114 HDMI", patch_tegra_hdmi), 3541 + HDA_CODEC_ENTRY(0x10de0028, "Tegra124 HDMI", patch_tegra_hdmi), 3542 + HDA_CODEC_ENTRY(0x10de0029, "Tegra210 HDMI/DP", patch_tegra_hdmi), 3543 + HDA_CODEC_ENTRY(0x10de0040, "GPU 40 HDMI/DP", patch_nvhdmi), 3544 + HDA_CODEC_ENTRY(0x10de0041, "GPU 41 HDMI/DP", patch_nvhdmi), 3545 + HDA_CODEC_ENTRY(0x10de0042, "GPU 42 HDMI/DP", patch_nvhdmi), 3546 + HDA_CODEC_ENTRY(0x10de0043, "GPU 43 HDMI/DP", patch_nvhdmi), 3547 + HDA_CODEC_ENTRY(0x10de0044, "GPU 44 HDMI/DP", patch_nvhdmi), 3548 + HDA_CODEC_ENTRY(0x10de0051, "GPU 51 HDMI/DP", patch_nvhdmi), 3549 + HDA_CODEC_ENTRY(0x10de0060, "GPU 60 HDMI/DP", patch_nvhdmi), 3550 + HDA_CODEC_ENTRY(0x10de0067, "MCP67 HDMI", patch_nvhdmi_2ch), 3551 + HDA_CODEC_ENTRY(0x10de0070, "GPU 70 HDMI/DP", patch_nvhdmi), 3552 + HDA_CODEC_ENTRY(0x10de0071, "GPU 71 HDMI/DP", patch_nvhdmi), 3553 + HDA_CODEC_ENTRY(0x10de0072, "GPU 72 HDMI/DP", patch_nvhdmi), 3554 + HDA_CODEC_ENTRY(0x10de007d, "GPU 7d HDMI/DP", patch_nvhdmi), 3555 + HDA_CODEC_ENTRY(0x10de8001, "MCP73 HDMI", patch_nvhdmi_2ch), 3556 + HDA_CODEC_ENTRY(0x11069f80, "VX900 HDMI/DP", patch_via_hdmi), 3557 + HDA_CODEC_ENTRY(0x11069f81, "VX900 HDMI/DP", patch_via_hdmi), 3558 + HDA_CODEC_ENTRY(0x11069f84, "VX11 HDMI/DP", patch_generic_hdmi), 3559 + HDA_CODEC_ENTRY(0x11069f85, "VX11 HDMI/DP", patch_generic_hdmi), 3560 + HDA_CODEC_ENTRY(0x80860054, "IbexPeak HDMI", patch_generic_hdmi), 3561 + HDA_CODEC_ENTRY(0x80862801, "Bearlake HDMI", patch_generic_hdmi), 3562 + HDA_CODEC_ENTRY(0x80862802, "Cantiga HDMI", patch_generic_hdmi), 3563 + HDA_CODEC_ENTRY(0x80862803, "Eaglelake HDMI", patch_generic_hdmi), 3564 + HDA_CODEC_ENTRY(0x80862804, "IbexPeak HDMI", patch_generic_hdmi), 3565 + HDA_CODEC_ENTRY(0x80862805, "CougarPoint HDMI", patch_generic_hdmi), 3566 + HDA_CODEC_ENTRY(0x80862806, "PantherPoint HDMI", patch_generic_hdmi), 3567 + HDA_CODEC_ENTRY(0x80862807, "Haswell HDMI", patch_generic_hdmi), 3568 + HDA_CODEC_ENTRY(0x80862808, "Broadwell HDMI", patch_generic_hdmi), 3569 + HDA_CODEC_ENTRY(0x80862809, "Skylake HDMI", patch_generic_hdmi), 3570 + HDA_CODEC_ENTRY(0x8086280a, "Broxton HDMI", patch_generic_hdmi), 3571 + HDA_CODEC_ENTRY(0x80862880, "CedarTrail HDMI", patch_generic_hdmi), 3572 + HDA_CODEC_ENTRY(0x80862882, "Valleyview2 HDMI", patch_generic_hdmi), 3573 + HDA_CODEC_ENTRY(0x80862883, "Braswell HDMI", patch_generic_hdmi), 3574 + HDA_CODEC_ENTRY(0x808629fb, "Crestline HDMI", patch_generic_hdmi), 3575 3575 /* special ID for generic HDMI */ 3576 - { .id = HDA_CODEC_ID_GENERIC_HDMI, .patch = patch_generic_hdmi }, 3576 + HDA_CODEC_ENTRY(HDA_CODEC_ID_GENERIC_HDMI, "Generic HDMI", patch_generic_hdmi), 3577 3577 {} /* terminator */ 3578 3578 }; 3579 - 3580 - MODULE_ALIAS("snd-hda-codec-id:1002793c"); 3581 - MODULE_ALIAS("snd-hda-codec-id:10027919"); 3582 - MODULE_ALIAS("snd-hda-codec-id:1002791a"); 3583 - MODULE_ALIAS("snd-hda-codec-id:1002aa01"); 3584 - MODULE_ALIAS("snd-hda-codec-id:10951390"); 3585 - MODULE_ALIAS("snd-hda-codec-id:10951392"); 3586 - MODULE_ALIAS("snd-hda-codec-id:10de0002"); 3587 - MODULE_ALIAS("snd-hda-codec-id:10de0003"); 3588 - MODULE_ALIAS("snd-hda-codec-id:10de0005"); 3589 - MODULE_ALIAS("snd-hda-codec-id:10de0006"); 3590 - MODULE_ALIAS("snd-hda-codec-id:10de0007"); 3591 - MODULE_ALIAS("snd-hda-codec-id:10de000a"); 3592 - MODULE_ALIAS("snd-hda-codec-id:10de000b"); 3593 - MODULE_ALIAS("snd-hda-codec-id:10de000c"); 3594 - MODULE_ALIAS("snd-hda-codec-id:10de000d"); 3595 - MODULE_ALIAS("snd-hda-codec-id:10de0010"); 3596 - MODULE_ALIAS("snd-hda-codec-id:10de0011"); 3597 - MODULE_ALIAS("snd-hda-codec-id:10de0012"); 3598 - MODULE_ALIAS("snd-hda-codec-id:10de0013"); 3599 - MODULE_ALIAS("snd-hda-codec-id:10de0014"); 3600 - MODULE_ALIAS("snd-hda-codec-id:10de0015"); 3601 - MODULE_ALIAS("snd-hda-codec-id:10de0016"); 3602 - MODULE_ALIAS("snd-hda-codec-id:10de0018"); 3603 - MODULE_ALIAS("snd-hda-codec-id:10de0019"); 3604 - MODULE_ALIAS("snd-hda-codec-id:10de001a"); 3605 - MODULE_ALIAS("snd-hda-codec-id:10de001b"); 3606 - MODULE_ALIAS("snd-hda-codec-id:10de001c"); 3607 - MODULE_ALIAS("snd-hda-codec-id:10de0028"); 3608 - MODULE_ALIAS("snd-hda-codec-id:10de0040"); 3609 - MODULE_ALIAS("snd-hda-codec-id:10de0041"); 3610 - MODULE_ALIAS("snd-hda-codec-id:10de0042"); 3611 - MODULE_ALIAS("snd-hda-codec-id:10de0043"); 3612 - MODULE_ALIAS("snd-hda-codec-id:10de0044"); 3613 - MODULE_ALIAS("snd-hda-codec-id:10de0051"); 3614 - MODULE_ALIAS("snd-hda-codec-id:10de0060"); 3615 - MODULE_ALIAS("snd-hda-codec-id:10de0067"); 3616 - MODULE_ALIAS("snd-hda-codec-id:10de0070"); 3617 - MODULE_ALIAS("snd-hda-codec-id:10de0071"); 3618 - MODULE_ALIAS("snd-hda-codec-id:10de0072"); 3619 - MODULE_ALIAS("snd-hda-codec-id:10de007d"); 3620 - MODULE_ALIAS("snd-hda-codec-id:10de8001"); 3621 - MODULE_ALIAS("snd-hda-codec-id:11069f80"); 3622 - MODULE_ALIAS("snd-hda-codec-id:11069f81"); 3623 - MODULE_ALIAS("snd-hda-codec-id:11069f84"); 3624 - MODULE_ALIAS("snd-hda-codec-id:11069f85"); 3625 - MODULE_ALIAS("snd-hda-codec-id:17e80047"); 3626 - MODULE_ALIAS("snd-hda-codec-id:80860054"); 3627 - MODULE_ALIAS("snd-hda-codec-id:80862801"); 3628 - MODULE_ALIAS("snd-hda-codec-id:80862802"); 3629 - MODULE_ALIAS("snd-hda-codec-id:80862803"); 3630 - MODULE_ALIAS("snd-hda-codec-id:80862804"); 3631 - MODULE_ALIAS("snd-hda-codec-id:80862805"); 3632 - MODULE_ALIAS("snd-hda-codec-id:80862806"); 3633 - MODULE_ALIAS("snd-hda-codec-id:80862807"); 3634 - MODULE_ALIAS("snd-hda-codec-id:80862808"); 3635 - MODULE_ALIAS("snd-hda-codec-id:80862809"); 3636 - MODULE_ALIAS("snd-hda-codec-id:8086280a"); 3637 - MODULE_ALIAS("snd-hda-codec-id:80862880"); 3638 - MODULE_ALIAS("snd-hda-codec-id:80862882"); 3639 - MODULE_ALIAS("snd-hda-codec-id:80862883"); 3640 - MODULE_ALIAS("snd-hda-codec-id:808629fb"); 3579 + MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_hdmi); 3641 3580 3642 3581 MODULE_LICENSE("GPL"); 3643 3582 MODULE_DESCRIPTION("HDMI HD-audio codec"); ··· 3585 3646 MODULE_ALIAS("snd-hda-codec-atihdmi"); 3586 3647 3587 3648 static struct hda_codec_driver hdmi_driver = { 3588 - .preset = snd_hda_preset_hdmi, 3649 + .id = snd_hda_id_hdmi, 3589 3650 }; 3590 3651 3591 3652 module_hda_codec_driver(hdmi_driver);
+57 -65
sound/pci/hda/patch_realtek.c
··· 6617 6617 /* 6618 6618 * patch entries 6619 6619 */ 6620 - static const struct hda_codec_preset snd_hda_preset_realtek[] = { 6621 - { .id = 0x10ec0221, .name = "ALC221", .patch = patch_alc269 }, 6622 - { .id = 0x10ec0231, .name = "ALC231", .patch = patch_alc269 }, 6623 - { .id = 0x10ec0233, .name = "ALC233", .patch = patch_alc269 }, 6624 - { .id = 0x10ec0235, .name = "ALC233", .patch = patch_alc269 }, 6625 - { .id = 0x10ec0255, .name = "ALC255", .patch = patch_alc269 }, 6626 - { .id = 0x10ec0256, .name = "ALC256", .patch = patch_alc269 }, 6627 - { .id = 0x10ec0260, .name = "ALC260", .patch = patch_alc260 }, 6628 - { .id = 0x10ec0262, .name = "ALC262", .patch = patch_alc262 }, 6629 - { .id = 0x10ec0267, .name = "ALC267", .patch = patch_alc268 }, 6630 - { .id = 0x10ec0268, .name = "ALC268", .patch = patch_alc268 }, 6631 - { .id = 0x10ec0269, .name = "ALC269", .patch = patch_alc269 }, 6632 - { .id = 0x10ec0270, .name = "ALC270", .patch = patch_alc269 }, 6633 - { .id = 0x10ec0272, .name = "ALC272", .patch = patch_alc662 }, 6634 - { .id = 0x10ec0275, .name = "ALC275", .patch = patch_alc269 }, 6635 - { .id = 0x10ec0276, .name = "ALC276", .patch = patch_alc269 }, 6636 - { .id = 0x10ec0280, .name = "ALC280", .patch = patch_alc269 }, 6637 - { .id = 0x10ec0282, .name = "ALC282", .patch = patch_alc269 }, 6638 - { .id = 0x10ec0283, .name = "ALC283", .patch = patch_alc269 }, 6639 - { .id = 0x10ec0284, .name = "ALC284", .patch = patch_alc269 }, 6640 - { .id = 0x10ec0285, .name = "ALC285", .patch = patch_alc269 }, 6641 - { .id = 0x10ec0286, .name = "ALC286", .patch = patch_alc269 }, 6642 - { .id = 0x10ec0288, .name = "ALC288", .patch = patch_alc269 }, 6643 - { .id = 0x10ec0290, .name = "ALC290", .patch = patch_alc269 }, 6644 - { .id = 0x10ec0292, .name = "ALC292", .patch = patch_alc269 }, 6645 - { .id = 0x10ec0293, .name = "ALC293", .patch = patch_alc269 }, 6646 - { .id = 0x10ec0298, .name = "ALC298", .patch = patch_alc269 }, 6647 - { .id = 0x10ec0861, .rev = 0x100340, .name = "ALC660", 6648 - .patch = patch_alc861 }, 6649 - { .id = 0x10ec0660, .name = "ALC660-VD", .patch = patch_alc861vd }, 6650 - { .id = 0x10ec0861, .name = "ALC861", .patch = patch_alc861 }, 6651 - { .id = 0x10ec0862, .name = "ALC861-VD", .patch = patch_alc861vd }, 6652 - { .id = 0x10ec0662, .rev = 0x100002, .name = "ALC662 rev2", 6653 - .patch = patch_alc882 }, 6654 - { .id = 0x10ec0662, .rev = 0x100101, .name = "ALC662 rev1", 6655 - .patch = patch_alc662 }, 6656 - { .id = 0x10ec0662, .rev = 0x100300, .name = "ALC662 rev3", 6657 - .patch = patch_alc662 }, 6658 - { .id = 0x10ec0663, .name = "ALC663", .patch = patch_alc662 }, 6659 - { .id = 0x10ec0665, .name = "ALC665", .patch = patch_alc662 }, 6660 - { .id = 0x10ec0667, .name = "ALC667", .patch = patch_alc662 }, 6661 - { .id = 0x10ec0668, .name = "ALC668", .patch = patch_alc662 }, 6662 - { .id = 0x10ec0670, .name = "ALC670", .patch = patch_alc662 }, 6663 - { .id = 0x10ec0671, .name = "ALC671", .patch = patch_alc662 }, 6664 - { .id = 0x10ec0680, .name = "ALC680", .patch = patch_alc680 }, 6665 - { .id = 0x10ec0867, .name = "ALC891", .patch = patch_alc882 }, 6666 - { .id = 0x10ec0880, .name = "ALC880", .patch = patch_alc880 }, 6667 - { .id = 0x10ec0882, .name = "ALC882", .patch = patch_alc882 }, 6668 - { .id = 0x10ec0883, .name = "ALC883", .patch = patch_alc882 }, 6669 - { .id = 0x10ec0885, .rev = 0x100101, .name = "ALC889A", 6670 - .patch = patch_alc882 }, 6671 - { .id = 0x10ec0885, .rev = 0x100103, .name = "ALC889A", 6672 - .patch = patch_alc882 }, 6673 - { .id = 0x10ec0885, .name = "ALC885", .patch = patch_alc882 }, 6674 - { .id = 0x10ec0887, .name = "ALC887", .patch = patch_alc882 }, 6675 - { .id = 0x10ec0888, .rev = 0x100101, .name = "ALC1200", 6676 - .patch = patch_alc882 }, 6677 - { .id = 0x10ec0888, .name = "ALC888", .patch = patch_alc882 }, 6678 - { .id = 0x10ec0889, .name = "ALC889", .patch = patch_alc882 }, 6679 - { .id = 0x10ec0892, .name = "ALC892", .patch = patch_alc662 }, 6680 - { .id = 0x10ec0899, .name = "ALC898", .patch = patch_alc882 }, 6681 - { .id = 0x10ec0900, .name = "ALC1150", .patch = patch_alc882 }, 6620 + static const struct hda_device_id snd_hda_id_realtek[] = { 6621 + HDA_CODEC_ENTRY(0x10ec0221, "ALC221", patch_alc269), 6622 + HDA_CODEC_ENTRY(0x10ec0231, "ALC231", patch_alc269), 6623 + HDA_CODEC_ENTRY(0x10ec0233, "ALC233", patch_alc269), 6624 + HDA_CODEC_ENTRY(0x10ec0235, "ALC233", patch_alc269), 6625 + HDA_CODEC_ENTRY(0x10ec0255, "ALC255", patch_alc269), 6626 + HDA_CODEC_ENTRY(0x10ec0256, "ALC256", patch_alc269), 6627 + HDA_CODEC_ENTRY(0x10ec0260, "ALC260", patch_alc260), 6628 + HDA_CODEC_ENTRY(0x10ec0262, "ALC262", patch_alc262), 6629 + HDA_CODEC_ENTRY(0x10ec0267, "ALC267", patch_alc268), 6630 + HDA_CODEC_ENTRY(0x10ec0268, "ALC268", patch_alc268), 6631 + HDA_CODEC_ENTRY(0x10ec0269, "ALC269", patch_alc269), 6632 + HDA_CODEC_ENTRY(0x10ec0270, "ALC270", patch_alc269), 6633 + HDA_CODEC_ENTRY(0x10ec0272, "ALC272", patch_alc662), 6634 + HDA_CODEC_ENTRY(0x10ec0275, "ALC275", patch_alc269), 6635 + HDA_CODEC_ENTRY(0x10ec0276, "ALC276", patch_alc269), 6636 + HDA_CODEC_ENTRY(0x10ec0280, "ALC280", patch_alc269), 6637 + HDA_CODEC_ENTRY(0x10ec0282, "ALC282", patch_alc269), 6638 + HDA_CODEC_ENTRY(0x10ec0283, "ALC283", patch_alc269), 6639 + HDA_CODEC_ENTRY(0x10ec0284, "ALC284", patch_alc269), 6640 + HDA_CODEC_ENTRY(0x10ec0285, "ALC285", patch_alc269), 6641 + HDA_CODEC_ENTRY(0x10ec0286, "ALC286", patch_alc269), 6642 + HDA_CODEC_ENTRY(0x10ec0288, "ALC288", patch_alc269), 6643 + HDA_CODEC_ENTRY(0x10ec0290, "ALC290", patch_alc269), 6644 + HDA_CODEC_ENTRY(0x10ec0292, "ALC292", patch_alc269), 6645 + HDA_CODEC_ENTRY(0x10ec0293, "ALC293", patch_alc269), 6646 + HDA_CODEC_ENTRY(0x10ec0298, "ALC298", patch_alc269), 6647 + HDA_CODEC_REV_ENTRY(0x10ec0861, 0x100340, "ALC660", patch_alc861), 6648 + HDA_CODEC_ENTRY(0x10ec0660, "ALC660-VD", patch_alc861vd), 6649 + HDA_CODEC_ENTRY(0x10ec0861, "ALC861", patch_alc861), 6650 + HDA_CODEC_ENTRY(0x10ec0862, "ALC861-VD", patch_alc861vd), 6651 + HDA_CODEC_REV_ENTRY(0x10ec0662, 0x100002, "ALC662 rev2", patch_alc882), 6652 + HDA_CODEC_REV_ENTRY(0x10ec0662, 0x100101, "ALC662 rev1", patch_alc662), 6653 + HDA_CODEC_REV_ENTRY(0x10ec0662, 0x100300, "ALC662 rev3", patch_alc662), 6654 + HDA_CODEC_ENTRY(0x10ec0663, "ALC663", patch_alc662), 6655 + HDA_CODEC_ENTRY(0x10ec0665, "ALC665", patch_alc662), 6656 + HDA_CODEC_ENTRY(0x10ec0667, "ALC667", patch_alc662), 6657 + HDA_CODEC_ENTRY(0x10ec0668, "ALC668", patch_alc662), 6658 + HDA_CODEC_ENTRY(0x10ec0670, "ALC670", patch_alc662), 6659 + HDA_CODEC_ENTRY(0x10ec0671, "ALC671", patch_alc662), 6660 + HDA_CODEC_ENTRY(0x10ec0680, "ALC680", patch_alc680), 6661 + HDA_CODEC_ENTRY(0x10ec0867, "ALC891", patch_alc882), 6662 + HDA_CODEC_ENTRY(0x10ec0880, "ALC880", patch_alc880), 6663 + HDA_CODEC_ENTRY(0x10ec0882, "ALC882", patch_alc882), 6664 + HDA_CODEC_ENTRY(0x10ec0883, "ALC883", patch_alc882), 6665 + HDA_CODEC_REV_ENTRY(0x10ec0885, 0x100101, "ALC889A", patch_alc882), 6666 + HDA_CODEC_REV_ENTRY(0x10ec0885, 0x100103, "ALC889A", patch_alc882), 6667 + HDA_CODEC_ENTRY(0x10ec0885, "ALC885", patch_alc882), 6668 + HDA_CODEC_ENTRY(0x10ec0887, "ALC887", patch_alc882), 6669 + HDA_CODEC_REV_ENTRY(0x10ec0888, 0x100101, "ALC1200", patch_alc882), 6670 + HDA_CODEC_ENTRY(0x10ec0888, "ALC888", patch_alc882), 6671 + HDA_CODEC_ENTRY(0x10ec0889, "ALC889", patch_alc882), 6672 + HDA_CODEC_ENTRY(0x10ec0892, "ALC892", patch_alc662), 6673 + HDA_CODEC_ENTRY(0x10ec0899, "ALC898", patch_alc882), 6674 + HDA_CODEC_ENTRY(0x10ec0900, "ALC1150", patch_alc882), 6682 6675 {} /* terminator */ 6683 6676 }; 6684 - 6685 - MODULE_ALIAS("snd-hda-codec-id:10ec*"); 6677 + MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_realtek); 6686 6678 6687 6679 MODULE_LICENSE("GPL"); 6688 6680 MODULE_DESCRIPTION("Realtek HD-audio codec"); 6689 6681 6690 6682 static struct hda_codec_driver realtek_driver = { 6691 - .preset = snd_hda_preset_realtek, 6683 + .id = snd_hda_id_realtek, 6692 6684 }; 6693 6685 6694 6686 module_hda_codec_driver(realtek_driver);
+14 -25
sound/pci/hda/patch_si3054.c
··· 289 289 /* 290 290 * patch entries 291 291 */ 292 - static const struct hda_codec_preset snd_hda_preset_si3054[] = { 293 - { .id = 0x163c3055, .name = "Si3054", .patch = patch_si3054 }, 294 - { .id = 0x163c3155, .name = "Si3054", .patch = patch_si3054 }, 295 - { .id = 0x11c13026, .name = "Si3054", .patch = patch_si3054 }, 296 - { .id = 0x11c13055, .name = "Si3054", .patch = patch_si3054 }, 297 - { .id = 0x11c13155, .name = "Si3054", .patch = patch_si3054 }, 298 - { .id = 0x10573055, .name = "Si3054", .patch = patch_si3054 }, 299 - { .id = 0x10573057, .name = "Si3054", .patch = patch_si3054 }, 300 - { .id = 0x10573155, .name = "Si3054", .patch = patch_si3054 }, 292 + static const struct hda_device_id snd_hda_id_si3054[] = { 293 + HDA_CODEC_ENTRY(0x163c3055, "Si3054", patch_si3054), 294 + HDA_CODEC_ENTRY(0x163c3155, "Si3054", patch_si3054), 295 + HDA_CODEC_ENTRY(0x11c13026, "Si3054", patch_si3054), 296 + HDA_CODEC_ENTRY(0x11c13055, "Si3054", patch_si3054), 297 + HDA_CODEC_ENTRY(0x11c13155, "Si3054", patch_si3054), 298 + HDA_CODEC_ENTRY(0x10573055, "Si3054", patch_si3054), 299 + HDA_CODEC_ENTRY(0x10573057, "Si3054", patch_si3054), 300 + HDA_CODEC_ENTRY(0x10573155, "Si3054", patch_si3054), 301 301 /* VIA HDA on Clevo m540 */ 302 - { .id = 0x11063288, .name = "Si3054", .patch = patch_si3054 }, 302 + HDA_CODEC_ENTRY(0x11063288, "Si3054", patch_si3054), 303 303 /* Asus A8J Modem (SM56) */ 304 - { .id = 0x15433155, .name = "Si3054", .patch = patch_si3054 }, 304 + HDA_CODEC_ENTRY(0x15433155, "Si3054", patch_si3054), 305 305 /* LG LW20 modem */ 306 - { .id = 0x18540018, .name = "Si3054", .patch = patch_si3054 }, 306 + HDA_CODEC_ENTRY(0x18540018, "Si3054", patch_si3054), 307 307 {} 308 308 }; 309 - 310 - MODULE_ALIAS("snd-hda-codec-id:163c3055"); 311 - MODULE_ALIAS("snd-hda-codec-id:163c3155"); 312 - MODULE_ALIAS("snd-hda-codec-id:11c13026"); 313 - MODULE_ALIAS("snd-hda-codec-id:11c13055"); 314 - MODULE_ALIAS("snd-hda-codec-id:11c13155"); 315 - MODULE_ALIAS("snd-hda-codec-id:10573055"); 316 - MODULE_ALIAS("snd-hda-codec-id:10573057"); 317 - MODULE_ALIAS("snd-hda-codec-id:10573155"); 318 - MODULE_ALIAS("snd-hda-codec-id:11063288"); 319 - MODULE_ALIAS("snd-hda-codec-id:15433155"); 320 - MODULE_ALIAS("snd-hda-codec-id:18540018"); 309 + MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_si3054); 321 310 322 311 MODULE_LICENSE("GPL"); 323 312 MODULE_DESCRIPTION("Si3054 HD-audio modem codec"); 324 313 325 314 static struct hda_codec_driver si3054_driver = { 326 - .preset = snd_hda_preset_si3054, 315 + .id = snd_hda_id_si3054, 327 316 }; 328 317 329 318 module_hda_codec_driver(si3054_driver);
+106 -108
sound/pci/hda/patch_sigmatel.c
··· 5012 5012 /* 5013 5013 * patch entries 5014 5014 */ 5015 - static const struct hda_codec_preset snd_hda_preset_sigmatel[] = { 5016 - { .id = 0x83847690, .name = "STAC9200", .patch = patch_stac9200 }, 5017 - { .id = 0x83847882, .name = "STAC9220 A1", .patch = patch_stac922x }, 5018 - { .id = 0x83847680, .name = "STAC9221 A1", .patch = patch_stac922x }, 5019 - { .id = 0x83847880, .name = "STAC9220 A2", .patch = patch_stac922x }, 5020 - { .id = 0x83847681, .name = "STAC9220D/9223D A2", .patch = patch_stac922x }, 5021 - { .id = 0x83847682, .name = "STAC9221 A2", .patch = patch_stac922x }, 5022 - { .id = 0x83847683, .name = "STAC9221D A2", .patch = patch_stac922x }, 5023 - { .id = 0x83847618, .name = "STAC9227", .patch = patch_stac927x }, 5024 - { .id = 0x83847619, .name = "STAC9227", .patch = patch_stac927x }, 5025 - { .id = 0x83847616, .name = "STAC9228", .patch = patch_stac927x }, 5026 - { .id = 0x83847617, .name = "STAC9228", .patch = patch_stac927x }, 5027 - { .id = 0x83847614, .name = "STAC9229", .patch = patch_stac927x }, 5028 - { .id = 0x83847615, .name = "STAC9229", .patch = patch_stac927x }, 5029 - { .id = 0x83847620, .name = "STAC9274", .patch = patch_stac927x }, 5030 - { .id = 0x83847621, .name = "STAC9274D", .patch = patch_stac927x }, 5031 - { .id = 0x83847622, .name = "STAC9273X", .patch = patch_stac927x }, 5032 - { .id = 0x83847623, .name = "STAC9273D", .patch = patch_stac927x }, 5033 - { .id = 0x83847624, .name = "STAC9272X", .patch = patch_stac927x }, 5034 - { .id = 0x83847625, .name = "STAC9272D", .patch = patch_stac927x }, 5035 - { .id = 0x83847626, .name = "STAC9271X", .patch = patch_stac927x }, 5036 - { .id = 0x83847627, .name = "STAC9271D", .patch = patch_stac927x }, 5037 - { .id = 0x83847628, .name = "STAC9274X5NH", .patch = patch_stac927x }, 5038 - { .id = 0x83847629, .name = "STAC9274D5NH", .patch = patch_stac927x }, 5039 - { .id = 0x83847632, .name = "STAC9202", .patch = patch_stac925x }, 5040 - { .id = 0x83847633, .name = "STAC9202D", .patch = patch_stac925x }, 5041 - { .id = 0x83847634, .name = "STAC9250", .patch = patch_stac925x }, 5042 - { .id = 0x83847635, .name = "STAC9250D", .patch = patch_stac925x }, 5043 - { .id = 0x83847636, .name = "STAC9251", .patch = patch_stac925x }, 5044 - { .id = 0x83847637, .name = "STAC9250D", .patch = patch_stac925x }, 5045 - { .id = 0x83847645, .name = "92HD206X", .patch = patch_stac927x }, 5046 - { .id = 0x83847646, .name = "92HD206D", .patch = patch_stac927x }, 5047 - /* The following does not take into account .id=0x83847661 when subsys = 5048 - * 104D0C00 which is STAC9225s. Because of this, some SZ Notebooks are 5049 - * currently not fully supported. 5050 - */ 5051 - { .id = 0x83847661, .name = "CXD9872RD/K", .patch = patch_stac9872 }, 5052 - { .id = 0x83847662, .name = "STAC9872AK", .patch = patch_stac9872 }, 5053 - { .id = 0x83847664, .name = "CXD9872AKD", .patch = patch_stac9872 }, 5054 - { .id = 0x83847698, .name = "STAC9205", .patch = patch_stac9205 }, 5055 - { .id = 0x838476a0, .name = "STAC9205", .patch = patch_stac9205 }, 5056 - { .id = 0x838476a1, .name = "STAC9205D", .patch = patch_stac9205 }, 5057 - { .id = 0x838476a2, .name = "STAC9204", .patch = patch_stac9205 }, 5058 - { .id = 0x838476a3, .name = "STAC9204D", .patch = patch_stac9205 }, 5059 - { .id = 0x838476a4, .name = "STAC9255", .patch = patch_stac9205 }, 5060 - { .id = 0x838476a5, .name = "STAC9255D", .patch = patch_stac9205 }, 5061 - { .id = 0x838476a6, .name = "STAC9254", .patch = patch_stac9205 }, 5062 - { .id = 0x838476a7, .name = "STAC9254D", .patch = patch_stac9205 }, 5063 - { .id = 0x111d7603, .name = "92HD75B3X5", .patch = patch_stac92hd71bxx}, 5064 - { .id = 0x111d7604, .name = "92HD83C1X5", .patch = patch_stac92hd83xxx}, 5065 - { .id = 0x111d76d4, .name = "92HD83C1C5", .patch = patch_stac92hd83xxx}, 5066 - { .id = 0x111d7605, .name = "92HD81B1X5", .patch = patch_stac92hd83xxx}, 5067 - { .id = 0x111d76d5, .name = "92HD81B1C5", .patch = patch_stac92hd83xxx}, 5068 - { .id = 0x111d76d1, .name = "92HD87B1/3", .patch = patch_stac92hd83xxx}, 5069 - { .id = 0x111d76d9, .name = "92HD87B2/4", .patch = patch_stac92hd83xxx}, 5070 - { .id = 0x111d7666, .name = "92HD88B3", .patch = patch_stac92hd83xxx}, 5071 - { .id = 0x111d7667, .name = "92HD88B1", .patch = patch_stac92hd83xxx}, 5072 - { .id = 0x111d7668, .name = "92HD88B2", .patch = patch_stac92hd83xxx}, 5073 - { .id = 0x111d7669, .name = "92HD88B4", .patch = patch_stac92hd83xxx}, 5074 - { .id = 0x111d7608, .name = "92HD75B2X5", .patch = patch_stac92hd71bxx}, 5075 - { .id = 0x111d7674, .name = "92HD73D1X5", .patch = patch_stac92hd73xx }, 5076 - { .id = 0x111d7675, .name = "92HD73C1X5", .patch = patch_stac92hd73xx }, 5077 - { .id = 0x111d7676, .name = "92HD73E1X5", .patch = patch_stac92hd73xx }, 5078 - { .id = 0x111d7695, .name = "92HD95", .patch = patch_stac92hd95 }, 5079 - { .id = 0x111d76b0, .name = "92HD71B8X", .patch = patch_stac92hd71bxx }, 5080 - { .id = 0x111d76b1, .name = "92HD71B8X", .patch = patch_stac92hd71bxx }, 5081 - { .id = 0x111d76b2, .name = "92HD71B7X", .patch = patch_stac92hd71bxx }, 5082 - { .id = 0x111d76b3, .name = "92HD71B7X", .patch = patch_stac92hd71bxx }, 5083 - { .id = 0x111d76b4, .name = "92HD71B6X", .patch = patch_stac92hd71bxx }, 5084 - { .id = 0x111d76b5, .name = "92HD71B6X", .patch = patch_stac92hd71bxx }, 5085 - { .id = 0x111d76b6, .name = "92HD71B5X", .patch = patch_stac92hd71bxx }, 5086 - { .id = 0x111d76b7, .name = "92HD71B5X", .patch = patch_stac92hd71bxx }, 5087 - { .id = 0x111d76c0, .name = "92HD89C3", .patch = patch_stac92hd73xx }, 5088 - { .id = 0x111d76c1, .name = "92HD89C2", .patch = patch_stac92hd73xx }, 5089 - { .id = 0x111d76c2, .name = "92HD89C1", .patch = patch_stac92hd73xx }, 5090 - { .id = 0x111d76c3, .name = "92HD89B3", .patch = patch_stac92hd73xx }, 5091 - { .id = 0x111d76c4, .name = "92HD89B2", .patch = patch_stac92hd73xx }, 5092 - { .id = 0x111d76c5, .name = "92HD89B1", .patch = patch_stac92hd73xx }, 5093 - { .id = 0x111d76c6, .name = "92HD89E3", .patch = patch_stac92hd73xx }, 5094 - { .id = 0x111d76c7, .name = "92HD89E2", .patch = patch_stac92hd73xx }, 5095 - { .id = 0x111d76c8, .name = "92HD89E1", .patch = patch_stac92hd73xx }, 5096 - { .id = 0x111d76c9, .name = "92HD89D3", .patch = patch_stac92hd73xx }, 5097 - { .id = 0x111d76ca, .name = "92HD89D2", .patch = patch_stac92hd73xx }, 5098 - { .id = 0x111d76cb, .name = "92HD89D1", .patch = patch_stac92hd73xx }, 5099 - { .id = 0x111d76cc, .name = "92HD89F3", .patch = patch_stac92hd73xx }, 5100 - { .id = 0x111d76cd, .name = "92HD89F2", .patch = patch_stac92hd73xx }, 5101 - { .id = 0x111d76ce, .name = "92HD89F1", .patch = patch_stac92hd73xx }, 5102 - { .id = 0x111d76df, .name = "92HD93BXX", .patch = patch_stac92hd83xxx}, 5103 - { .id = 0x111d76e0, .name = "92HD91BXX", .patch = patch_stac92hd83xxx}, 5104 - { .id = 0x111d76e3, .name = "92HD98BXX", .patch = patch_stac92hd83xxx}, 5105 - { .id = 0x111d76e5, .name = "92HD99BXX", .patch = patch_stac92hd83xxx}, 5106 - { .id = 0x111d76e7, .name = "92HD90BXX", .patch = patch_stac92hd83xxx}, 5107 - { .id = 0x111d76e8, .name = "92HD66B1X5", .patch = patch_stac92hd83xxx}, 5108 - { .id = 0x111d76e9, .name = "92HD66B2X5", .patch = patch_stac92hd83xxx}, 5109 - { .id = 0x111d76ea, .name = "92HD66B3X5", .patch = patch_stac92hd83xxx}, 5110 - { .id = 0x111d76eb, .name = "92HD66C1X5", .patch = patch_stac92hd83xxx}, 5111 - { .id = 0x111d76ec, .name = "92HD66C2X5", .patch = patch_stac92hd83xxx}, 5112 - { .id = 0x111d76ed, .name = "92HD66C3X5", .patch = patch_stac92hd83xxx}, 5113 - { .id = 0x111d76ee, .name = "92HD66B1X3", .patch = patch_stac92hd83xxx}, 5114 - { .id = 0x111d76ef, .name = "92HD66B2X3", .patch = patch_stac92hd83xxx}, 5115 - { .id = 0x111d76f0, .name = "92HD66B3X3", .patch = patch_stac92hd83xxx}, 5116 - { .id = 0x111d76f1, .name = "92HD66C1X3", .patch = patch_stac92hd83xxx}, 5117 - { .id = 0x111d76f2, .name = "92HD66C2X3", .patch = patch_stac92hd83xxx}, 5118 - { .id = 0x111d76f3, .name = "92HD66C3/65", .patch = patch_stac92hd83xxx}, 5015 + static const struct hda_device_id snd_hda_id_sigmatel[] = { 5016 + HDA_CODEC_ENTRY(0x83847690, "STAC9200", patch_stac9200), 5017 + HDA_CODEC_ENTRY(0x83847882, "STAC9220 A1", patch_stac922x), 5018 + HDA_CODEC_ENTRY(0x83847680, "STAC9221 A1", patch_stac922x), 5019 + HDA_CODEC_ENTRY(0x83847880, "STAC9220 A2", patch_stac922x), 5020 + HDA_CODEC_ENTRY(0x83847681, "STAC9220D/9223D A2", patch_stac922x), 5021 + HDA_CODEC_ENTRY(0x83847682, "STAC9221 A2", patch_stac922x), 5022 + HDA_CODEC_ENTRY(0x83847683, "STAC9221D A2", patch_stac922x), 5023 + HDA_CODEC_ENTRY(0x83847618, "STAC9227", patch_stac927x), 5024 + HDA_CODEC_ENTRY(0x83847619, "STAC9227", patch_stac927x), 5025 + HDA_CODEC_ENTRY(0x83847616, "STAC9228", patch_stac927x), 5026 + HDA_CODEC_ENTRY(0x83847617, "STAC9228", patch_stac927x), 5027 + HDA_CODEC_ENTRY(0x83847614, "STAC9229", patch_stac927x), 5028 + HDA_CODEC_ENTRY(0x83847615, "STAC9229", patch_stac927x), 5029 + HDA_CODEC_ENTRY(0x83847620, "STAC9274", patch_stac927x), 5030 + HDA_CODEC_ENTRY(0x83847621, "STAC9274D", patch_stac927x), 5031 + HDA_CODEC_ENTRY(0x83847622, "STAC9273X", patch_stac927x), 5032 + HDA_CODEC_ENTRY(0x83847623, "STAC9273D", patch_stac927x), 5033 + HDA_CODEC_ENTRY(0x83847624, "STAC9272X", patch_stac927x), 5034 + HDA_CODEC_ENTRY(0x83847625, "STAC9272D", patch_stac927x), 5035 + HDA_CODEC_ENTRY(0x83847626, "STAC9271X", patch_stac927x), 5036 + HDA_CODEC_ENTRY(0x83847627, "STAC9271D", patch_stac927x), 5037 + HDA_CODEC_ENTRY(0x83847628, "STAC9274X5NH", patch_stac927x), 5038 + HDA_CODEC_ENTRY(0x83847629, "STAC9274D5NH", patch_stac927x), 5039 + HDA_CODEC_ENTRY(0x83847632, "STAC9202", patch_stac925x), 5040 + HDA_CODEC_ENTRY(0x83847633, "STAC9202D", patch_stac925x), 5041 + HDA_CODEC_ENTRY(0x83847634, "STAC9250", patch_stac925x), 5042 + HDA_CODEC_ENTRY(0x83847635, "STAC9250D", patch_stac925x), 5043 + HDA_CODEC_ENTRY(0x83847636, "STAC9251", patch_stac925x), 5044 + HDA_CODEC_ENTRY(0x83847637, "STAC9250D", patch_stac925x), 5045 + HDA_CODEC_ENTRY(0x83847645, "92HD206X", patch_stac927x), 5046 + HDA_CODEC_ENTRY(0x83847646, "92HD206D", patch_stac927x), 5047 + /* The following does not take into account .id=0x83847661 when subsys = 5048 + * 104D0C00 which is STAC9225s. Because of this, some SZ Notebooks are 5049 + * currently not fully supported. 5050 + */ 5051 + HDA_CODEC_ENTRY(0x83847661, "CXD9872RD/K", patch_stac9872), 5052 + HDA_CODEC_ENTRY(0x83847662, "STAC9872AK", patch_stac9872), 5053 + HDA_CODEC_ENTRY(0x83847664, "CXD9872AKD", patch_stac9872), 5054 + HDA_CODEC_ENTRY(0x83847698, "STAC9205", patch_stac9205), 5055 + HDA_CODEC_ENTRY(0x838476a0, "STAC9205", patch_stac9205), 5056 + HDA_CODEC_ENTRY(0x838476a1, "STAC9205D", patch_stac9205), 5057 + HDA_CODEC_ENTRY(0x838476a2, "STAC9204", patch_stac9205), 5058 + HDA_CODEC_ENTRY(0x838476a3, "STAC9204D", patch_stac9205), 5059 + HDA_CODEC_ENTRY(0x838476a4, "STAC9255", patch_stac9205), 5060 + HDA_CODEC_ENTRY(0x838476a5, "STAC9255D", patch_stac9205), 5061 + HDA_CODEC_ENTRY(0x838476a6, "STAC9254", patch_stac9205), 5062 + HDA_CODEC_ENTRY(0x838476a7, "STAC9254D", patch_stac9205), 5063 + HDA_CODEC_ENTRY(0x111d7603, "92HD75B3X5", patch_stac92hd71bxx), 5064 + HDA_CODEC_ENTRY(0x111d7604, "92HD83C1X5", patch_stac92hd83xxx), 5065 + HDA_CODEC_ENTRY(0x111d76d4, "92HD83C1C5", patch_stac92hd83xxx), 5066 + HDA_CODEC_ENTRY(0x111d7605, "92HD81B1X5", patch_stac92hd83xxx), 5067 + HDA_CODEC_ENTRY(0x111d76d5, "92HD81B1C5", patch_stac92hd83xxx), 5068 + HDA_CODEC_ENTRY(0x111d76d1, "92HD87B1/3", patch_stac92hd83xxx), 5069 + HDA_CODEC_ENTRY(0x111d76d9, "92HD87B2/4", patch_stac92hd83xxx), 5070 + HDA_CODEC_ENTRY(0x111d7666, "92HD88B3", patch_stac92hd83xxx), 5071 + HDA_CODEC_ENTRY(0x111d7667, "92HD88B1", patch_stac92hd83xxx), 5072 + HDA_CODEC_ENTRY(0x111d7668, "92HD88B2", patch_stac92hd83xxx), 5073 + HDA_CODEC_ENTRY(0x111d7669, "92HD88B4", patch_stac92hd83xxx), 5074 + HDA_CODEC_ENTRY(0x111d7608, "92HD75B2X5", patch_stac92hd71bxx), 5075 + HDA_CODEC_ENTRY(0x111d7674, "92HD73D1X5", patch_stac92hd73xx), 5076 + HDA_CODEC_ENTRY(0x111d7675, "92HD73C1X5", patch_stac92hd73xx), 5077 + HDA_CODEC_ENTRY(0x111d7676, "92HD73E1X5", patch_stac92hd73xx), 5078 + HDA_CODEC_ENTRY(0x111d7695, "92HD95", patch_stac92hd95), 5079 + HDA_CODEC_ENTRY(0x111d76b0, "92HD71B8X", patch_stac92hd71bxx), 5080 + HDA_CODEC_ENTRY(0x111d76b1, "92HD71B8X", patch_stac92hd71bxx), 5081 + HDA_CODEC_ENTRY(0x111d76b2, "92HD71B7X", patch_stac92hd71bxx), 5082 + HDA_CODEC_ENTRY(0x111d76b3, "92HD71B7X", patch_stac92hd71bxx), 5083 + HDA_CODEC_ENTRY(0x111d76b4, "92HD71B6X", patch_stac92hd71bxx), 5084 + HDA_CODEC_ENTRY(0x111d76b5, "92HD71B6X", patch_stac92hd71bxx), 5085 + HDA_CODEC_ENTRY(0x111d76b6, "92HD71B5X", patch_stac92hd71bxx), 5086 + HDA_CODEC_ENTRY(0x111d76b7, "92HD71B5X", patch_stac92hd71bxx), 5087 + HDA_CODEC_ENTRY(0x111d76c0, "92HD89C3", patch_stac92hd73xx), 5088 + HDA_CODEC_ENTRY(0x111d76c1, "92HD89C2", patch_stac92hd73xx), 5089 + HDA_CODEC_ENTRY(0x111d76c2, "92HD89C1", patch_stac92hd73xx), 5090 + HDA_CODEC_ENTRY(0x111d76c3, "92HD89B3", patch_stac92hd73xx), 5091 + HDA_CODEC_ENTRY(0x111d76c4, "92HD89B2", patch_stac92hd73xx), 5092 + HDA_CODEC_ENTRY(0x111d76c5, "92HD89B1", patch_stac92hd73xx), 5093 + HDA_CODEC_ENTRY(0x111d76c6, "92HD89E3", patch_stac92hd73xx), 5094 + HDA_CODEC_ENTRY(0x111d76c7, "92HD89E2", patch_stac92hd73xx), 5095 + HDA_CODEC_ENTRY(0x111d76c8, "92HD89E1", patch_stac92hd73xx), 5096 + HDA_CODEC_ENTRY(0x111d76c9, "92HD89D3", patch_stac92hd73xx), 5097 + HDA_CODEC_ENTRY(0x111d76ca, "92HD89D2", patch_stac92hd73xx), 5098 + HDA_CODEC_ENTRY(0x111d76cb, "92HD89D1", patch_stac92hd73xx), 5099 + HDA_CODEC_ENTRY(0x111d76cc, "92HD89F3", patch_stac92hd73xx), 5100 + HDA_CODEC_ENTRY(0x111d76cd, "92HD89F2", patch_stac92hd73xx), 5101 + HDA_CODEC_ENTRY(0x111d76ce, "92HD89F1", patch_stac92hd73xx), 5102 + HDA_CODEC_ENTRY(0x111d76df, "92HD93BXX", patch_stac92hd83xxx), 5103 + HDA_CODEC_ENTRY(0x111d76e0, "92HD91BXX", patch_stac92hd83xxx), 5104 + HDA_CODEC_ENTRY(0x111d76e3, "92HD98BXX", patch_stac92hd83xxx), 5105 + HDA_CODEC_ENTRY(0x111d76e5, "92HD99BXX", patch_stac92hd83xxx), 5106 + HDA_CODEC_ENTRY(0x111d76e7, "92HD90BXX", patch_stac92hd83xxx), 5107 + HDA_CODEC_ENTRY(0x111d76e8, "92HD66B1X5", patch_stac92hd83xxx), 5108 + HDA_CODEC_ENTRY(0x111d76e9, "92HD66B2X5", patch_stac92hd83xxx), 5109 + HDA_CODEC_ENTRY(0x111d76ea, "92HD66B3X5", patch_stac92hd83xxx), 5110 + HDA_CODEC_ENTRY(0x111d76eb, "92HD66C1X5", patch_stac92hd83xxx), 5111 + HDA_CODEC_ENTRY(0x111d76ec, "92HD66C2X5", patch_stac92hd83xxx), 5112 + HDA_CODEC_ENTRY(0x111d76ed, "92HD66C3X5", patch_stac92hd83xxx), 5113 + HDA_CODEC_ENTRY(0x111d76ee, "92HD66B1X3", patch_stac92hd83xxx), 5114 + HDA_CODEC_ENTRY(0x111d76ef, "92HD66B2X3", patch_stac92hd83xxx), 5115 + HDA_CODEC_ENTRY(0x111d76f0, "92HD66B3X3", patch_stac92hd83xxx), 5116 + HDA_CODEC_ENTRY(0x111d76f1, "92HD66C1X3", patch_stac92hd83xxx), 5117 + HDA_CODEC_ENTRY(0x111d76f2, "92HD66C2X3", patch_stac92hd83xxx), 5118 + HDA_CODEC_ENTRY(0x111d76f3, "92HD66C3/65", patch_stac92hd83xxx), 5119 5119 {} /* terminator */ 5120 5120 }; 5121 - 5122 - MODULE_ALIAS("snd-hda-codec-id:8384*"); 5123 - MODULE_ALIAS("snd-hda-codec-id:111d*"); 5121 + MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_sigmatel); 5124 5122 5125 5123 MODULE_LICENSE("GPL"); 5126 5124 MODULE_DESCRIPTION("IDT/Sigmatel HD-audio codec"); 5127 5125 5128 5126 static struct hda_codec_driver sigmatel_driver = { 5129 - .preset = snd_hda_preset_sigmatel, 5127 + .id = snd_hda_id_sigmatel, 5130 5128 }; 5131 5129 5132 5130 module_hda_codec_driver(sigmatel_driver);
+54 -99
sound/pci/hda/patch_via.c
··· 1200 1200 /* 1201 1201 * patch entries 1202 1202 */ 1203 - static const struct hda_codec_preset snd_hda_preset_via[] = { 1204 - { .id = 0x11061708, .name = "VT1708", .patch = patch_vt1708}, 1205 - { .id = 0x11061709, .name = "VT1708", .patch = patch_vt1708}, 1206 - { .id = 0x1106170a, .name = "VT1708", .patch = patch_vt1708}, 1207 - { .id = 0x1106170b, .name = "VT1708", .patch = patch_vt1708}, 1208 - { .id = 0x1106e710, .name = "VT1709 10-Ch", 1209 - .patch = patch_vt1709}, 1210 - { .id = 0x1106e711, .name = "VT1709 10-Ch", 1211 - .patch = patch_vt1709}, 1212 - { .id = 0x1106e712, .name = "VT1709 10-Ch", 1213 - .patch = patch_vt1709}, 1214 - { .id = 0x1106e713, .name = "VT1709 10-Ch", 1215 - .patch = patch_vt1709}, 1216 - { .id = 0x1106e714, .name = "VT1709 6-Ch", 1217 - .patch = patch_vt1709}, 1218 - { .id = 0x1106e715, .name = "VT1709 6-Ch", 1219 - .patch = patch_vt1709}, 1220 - { .id = 0x1106e716, .name = "VT1709 6-Ch", 1221 - .patch = patch_vt1709}, 1222 - { .id = 0x1106e717, .name = "VT1709 6-Ch", 1223 - .patch = patch_vt1709}, 1224 - { .id = 0x1106e720, .name = "VT1708B 8-Ch", 1225 - .patch = patch_vt1708B}, 1226 - { .id = 0x1106e721, .name = "VT1708B 8-Ch", 1227 - .patch = patch_vt1708B}, 1228 - { .id = 0x1106e722, .name = "VT1708B 8-Ch", 1229 - .patch = patch_vt1708B}, 1230 - { .id = 0x1106e723, .name = "VT1708B 8-Ch", 1231 - .patch = patch_vt1708B}, 1232 - { .id = 0x1106e724, .name = "VT1708B 4-Ch", 1233 - .patch = patch_vt1708B}, 1234 - { .id = 0x1106e725, .name = "VT1708B 4-Ch", 1235 - .patch = patch_vt1708B}, 1236 - { .id = 0x1106e726, .name = "VT1708B 4-Ch", 1237 - .patch = patch_vt1708B}, 1238 - { .id = 0x1106e727, .name = "VT1708B 4-Ch", 1239 - .patch = patch_vt1708B}, 1240 - { .id = 0x11060397, .name = "VT1708S", 1241 - .patch = patch_vt1708S}, 1242 - { .id = 0x11061397, .name = "VT1708S", 1243 - .patch = patch_vt1708S}, 1244 - { .id = 0x11062397, .name = "VT1708S", 1245 - .patch = patch_vt1708S}, 1246 - { .id = 0x11063397, .name = "VT1708S", 1247 - .patch = patch_vt1708S}, 1248 - { .id = 0x11064397, .name = "VT1705", 1249 - .patch = patch_vt1708S}, 1250 - { .id = 0x11065397, .name = "VT1708S", 1251 - .patch = patch_vt1708S}, 1252 - { .id = 0x11066397, .name = "VT1708S", 1253 - .patch = patch_vt1708S}, 1254 - { .id = 0x11067397, .name = "VT1708S", 1255 - .patch = patch_vt1708S}, 1256 - { .id = 0x11060398, .name = "VT1702", 1257 - .patch = patch_vt1702}, 1258 - { .id = 0x11061398, .name = "VT1702", 1259 - .patch = patch_vt1702}, 1260 - { .id = 0x11062398, .name = "VT1702", 1261 - .patch = patch_vt1702}, 1262 - { .id = 0x11063398, .name = "VT1702", 1263 - .patch = patch_vt1702}, 1264 - { .id = 0x11064398, .name = "VT1702", 1265 - .patch = patch_vt1702}, 1266 - { .id = 0x11065398, .name = "VT1702", 1267 - .patch = patch_vt1702}, 1268 - { .id = 0x11066398, .name = "VT1702", 1269 - .patch = patch_vt1702}, 1270 - { .id = 0x11067398, .name = "VT1702", 1271 - .patch = patch_vt1702}, 1272 - { .id = 0x11060428, .name = "VT1718S", 1273 - .patch = patch_vt1718S}, 1274 - { .id = 0x11064428, .name = "VT1718S", 1275 - .patch = patch_vt1718S}, 1276 - { .id = 0x11060441, .name = "VT2020", 1277 - .patch = patch_vt1718S}, 1278 - { .id = 0x11064441, .name = "VT1828S", 1279 - .patch = patch_vt1718S}, 1280 - { .id = 0x11060433, .name = "VT1716S", 1281 - .patch = patch_vt1716S}, 1282 - { .id = 0x1106a721, .name = "VT1716S", 1283 - .patch = patch_vt1716S}, 1284 - { .id = 0x11060438, .name = "VT2002P", .patch = patch_vt2002P}, 1285 - { .id = 0x11064438, .name = "VT2002P", .patch = patch_vt2002P}, 1286 - { .id = 0x11060448, .name = "VT1812", .patch = patch_vt1812}, 1287 - { .id = 0x11060440, .name = "VT1818S", 1288 - .patch = patch_vt1708S}, 1289 - { .id = 0x11060446, .name = "VT1802", 1290 - .patch = patch_vt2002P}, 1291 - { .id = 0x11068446, .name = "VT1802", 1292 - .patch = patch_vt2002P}, 1293 - { .id = 0x11064760, .name = "VT1705CF", 1294 - .patch = patch_vt3476}, 1295 - { .id = 0x11064761, .name = "VT1708SCE", 1296 - .patch = patch_vt3476}, 1297 - { .id = 0x11064762, .name = "VT1808", 1298 - .patch = patch_vt3476}, 1203 + static const struct hda_device_id snd_hda_id_via[] = { 1204 + HDA_CODEC_ENTRY(0x11061708, "VT1708", patch_vt1708), 1205 + HDA_CODEC_ENTRY(0x11061709, "VT1708", patch_vt1708), 1206 + HDA_CODEC_ENTRY(0x1106170a, "VT1708", patch_vt1708), 1207 + HDA_CODEC_ENTRY(0x1106170b, "VT1708", patch_vt1708), 1208 + HDA_CODEC_ENTRY(0x1106e710, "VT1709 10-Ch", patch_vt1709), 1209 + HDA_CODEC_ENTRY(0x1106e711, "VT1709 10-Ch", patch_vt1709), 1210 + HDA_CODEC_ENTRY(0x1106e712, "VT1709 10-Ch", patch_vt1709), 1211 + HDA_CODEC_ENTRY(0x1106e713, "VT1709 10-Ch", patch_vt1709), 1212 + HDA_CODEC_ENTRY(0x1106e714, "VT1709 6-Ch", patch_vt1709), 1213 + HDA_CODEC_ENTRY(0x1106e715, "VT1709 6-Ch", patch_vt1709), 1214 + HDA_CODEC_ENTRY(0x1106e716, "VT1709 6-Ch", patch_vt1709), 1215 + HDA_CODEC_ENTRY(0x1106e717, "VT1709 6-Ch", patch_vt1709), 1216 + HDA_CODEC_ENTRY(0x1106e720, "VT1708B 8-Ch", patch_vt1708B), 1217 + HDA_CODEC_ENTRY(0x1106e721, "VT1708B 8-Ch", patch_vt1708B), 1218 + HDA_CODEC_ENTRY(0x1106e722, "VT1708B 8-Ch", patch_vt1708B), 1219 + HDA_CODEC_ENTRY(0x1106e723, "VT1708B 8-Ch", patch_vt1708B), 1220 + HDA_CODEC_ENTRY(0x1106e724, "VT1708B 4-Ch", patch_vt1708B), 1221 + HDA_CODEC_ENTRY(0x1106e725, "VT1708B 4-Ch", patch_vt1708B), 1222 + HDA_CODEC_ENTRY(0x1106e726, "VT1708B 4-Ch", patch_vt1708B), 1223 + HDA_CODEC_ENTRY(0x1106e727, "VT1708B 4-Ch", patch_vt1708B), 1224 + HDA_CODEC_ENTRY(0x11060397, "VT1708S", patch_vt1708S), 1225 + HDA_CODEC_ENTRY(0x11061397, "VT1708S", patch_vt1708S), 1226 + HDA_CODEC_ENTRY(0x11062397, "VT1708S", patch_vt1708S), 1227 + HDA_CODEC_ENTRY(0x11063397, "VT1708S", patch_vt1708S), 1228 + HDA_CODEC_ENTRY(0x11064397, "VT1705", patch_vt1708S), 1229 + HDA_CODEC_ENTRY(0x11065397, "VT1708S", patch_vt1708S), 1230 + HDA_CODEC_ENTRY(0x11066397, "VT1708S", patch_vt1708S), 1231 + HDA_CODEC_ENTRY(0x11067397, "VT1708S", patch_vt1708S), 1232 + HDA_CODEC_ENTRY(0x11060398, "VT1702", patch_vt1702), 1233 + HDA_CODEC_ENTRY(0x11061398, "VT1702", patch_vt1702), 1234 + HDA_CODEC_ENTRY(0x11062398, "VT1702", patch_vt1702), 1235 + HDA_CODEC_ENTRY(0x11063398, "VT1702", patch_vt1702), 1236 + HDA_CODEC_ENTRY(0x11064398, "VT1702", patch_vt1702), 1237 + HDA_CODEC_ENTRY(0x11065398, "VT1702", patch_vt1702), 1238 + HDA_CODEC_ENTRY(0x11066398, "VT1702", patch_vt1702), 1239 + HDA_CODEC_ENTRY(0x11067398, "VT1702", patch_vt1702), 1240 + HDA_CODEC_ENTRY(0x11060428, "VT1718S", patch_vt1718S), 1241 + HDA_CODEC_ENTRY(0x11064428, "VT1718S", patch_vt1718S), 1242 + HDA_CODEC_ENTRY(0x11060441, "VT2020", patch_vt1718S), 1243 + HDA_CODEC_ENTRY(0x11064441, "VT1828S", patch_vt1718S), 1244 + HDA_CODEC_ENTRY(0x11060433, "VT1716S", patch_vt1716S), 1245 + HDA_CODEC_ENTRY(0x1106a721, "VT1716S", patch_vt1716S), 1246 + HDA_CODEC_ENTRY(0x11060438, "VT2002P", patch_vt2002P), 1247 + HDA_CODEC_ENTRY(0x11064438, "VT2002P", patch_vt2002P), 1248 + HDA_CODEC_ENTRY(0x11060448, "VT1812", patch_vt1812), 1249 + HDA_CODEC_ENTRY(0x11060440, "VT1818S", patch_vt1708S), 1250 + HDA_CODEC_ENTRY(0x11060446, "VT1802", patch_vt2002P), 1251 + HDA_CODEC_ENTRY(0x11068446, "VT1802", patch_vt2002P), 1252 + HDA_CODEC_ENTRY(0x11064760, "VT1705CF", patch_vt3476), 1253 + HDA_CODEC_ENTRY(0x11064761, "VT1708SCE", patch_vt3476), 1254 + HDA_CODEC_ENTRY(0x11064762, "VT1808", patch_vt3476), 1299 1255 {} /* terminator */ 1300 1256 }; 1301 - 1302 - MODULE_ALIAS("snd-hda-codec-id:1106*"); 1257 + MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_via); 1303 1258 1304 1259 static struct hda_codec_driver via_driver = { 1305 - .preset = snd_hda_preset_via, 1260 + .id = snd_hda_id_via, 1306 1261 }; 1307 1262 1308 1263 MODULE_LICENSE("GPL");