mirror of https://gitee.com/openkylin/linux.git
Merge branch 'topic/hda-modalias' into for-next
This commit is contained in:
commit
c80a1daa7e
|
@ -219,6 +219,14 @@ struct serio_device_id {
|
|||
__u8 proto;
|
||||
};
|
||||
|
||||
struct hda_device_id {
|
||||
__u32 vendor_id;
|
||||
__u32 rev_id;
|
||||
__u8 api_version;
|
||||
const char *name;
|
||||
unsigned long driver_data;
|
||||
};
|
||||
|
||||
/*
|
||||
* Struct used for matching a device
|
||||
*/
|
||||
|
|
|
@ -21,22 +21,13 @@ struct hdac_stream;
|
|||
struct hdac_device;
|
||||
struct hdac_driver;
|
||||
struct hdac_widget_tree;
|
||||
struct hda_device_id;
|
||||
|
||||
/*
|
||||
* exported bus type
|
||||
*/
|
||||
extern struct bus_type snd_hda_bus_type;
|
||||
|
||||
/*
|
||||
* HDA device table
|
||||
*/
|
||||
struct hda_device_id {
|
||||
__u32 vendor_id;
|
||||
__u32 rev_id;
|
||||
const char *name;
|
||||
unsigned long driver_data;
|
||||
};
|
||||
|
||||
/*
|
||||
* generic arrays
|
||||
*/
|
||||
|
@ -118,6 +109,7 @@ void snd_hdac_device_exit(struct hdac_device *dev);
|
|||
int snd_hdac_device_register(struct hdac_device *codec);
|
||||
void snd_hdac_device_unregister(struct hdac_device *codec);
|
||||
int snd_hdac_device_set_chip_name(struct hdac_device *codec, const char *name);
|
||||
int snd_hdac_codec_modalias(struct hdac_device *hdac, char *buf, size_t size);
|
||||
|
||||
int snd_hdac_refresh_widgets(struct hdac_device *codec);
|
||||
int snd_hdac_refresh_widget_sysfs(struct hdac_device *codec);
|
||||
|
|
|
@ -40,6 +40,13 @@ void snd_hdac_ext_bus_device_remove(struct hdac_ext_bus *ebus);
|
|||
#define hbus_to_ebus(_bus) \
|
||||
container_of(_bus, struct hdac_ext_bus, bus)
|
||||
|
||||
#define HDA_CODEC_REV_EXT_ENTRY(_vid, _rev, _name, drv_data) \
|
||||
{ .vendor_id = (_vid), .rev_id = (_rev), .name = (_name), \
|
||||
.api_version = HDA_DEV_ASOC, \
|
||||
.driver_data = (unsigned long)(drv_data) }
|
||||
#define HDA_CODEC_EXT_ENTRY(_vid, _revid, _name, _drv_data) \
|
||||
HDA_CODEC_REV_EXT_ENTRY(_vid, _revid, _name, _drv_data)
|
||||
|
||||
int snd_hdac_ext_bus_parse_capabilities(struct hdac_ext_bus *sbus);
|
||||
void snd_hdac_ext_bus_ppcap_enable(struct hdac_ext_bus *chip, bool enable);
|
||||
void snd_hdac_ext_bus_ppcap_int_enable(struct hdac_ext_bus *chip, bool enable);
|
||||
|
|
|
@ -196,5 +196,10 @@ int main(void)
|
|||
DEVID_FIELD(ulpi_device_id, vendor);
|
||||
DEVID_FIELD(ulpi_device_id, product);
|
||||
|
||||
DEVID(hda_device_id);
|
||||
DEVID_FIELD(hda_device_id, vendor_id);
|
||||
DEVID_FIELD(hda_device_id, rev_id);
|
||||
DEVID_FIELD(hda_device_id, api_version);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1250,6 +1250,23 @@ static int do_ulpi_entry(const char *filename, void *symval,
|
|||
}
|
||||
ADD_TO_DEVTABLE("ulpi", ulpi_device_id, do_ulpi_entry);
|
||||
|
||||
/* Looks like: hdaudio:vNrNaN */
|
||||
static int do_hda_entry(const char *filename, void *symval, char *alias)
|
||||
{
|
||||
DEF_FIELD(symval, hda_device_id, vendor_id);
|
||||
DEF_FIELD(symval, hda_device_id, rev_id);
|
||||
DEF_FIELD(symval, hda_device_id, api_version);
|
||||
|
||||
strcpy(alias, "hdaudio:");
|
||||
ADD(alias, "v", vendor_id != 0, vendor_id);
|
||||
ADD(alias, "r", rev_id != 0, rev_id);
|
||||
ADD(alias, "a", api_version != 0, api_version);
|
||||
|
||||
add_wildcard(alias);
|
||||
return 1;
|
||||
}
|
||||
ADD_TO_DEVTABLE("hdaudio", hda_device_id, do_hda_entry);
|
||||
|
||||
/* Does namelen bytes of name exactly match the symbol? */
|
||||
static bool sym_is(const char *name, unsigned namelen, const char *symbol)
|
||||
{
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include <linux/init.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/mod_devicetable.h>
|
||||
#include <linux/export.h>
|
||||
#include <sound/hdaudio.h>
|
||||
|
||||
|
@ -63,9 +64,21 @@ static int hda_bus_match(struct device *dev, struct device_driver *drv)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static int hda_uevent(struct device *dev, struct kobj_uevent_env *env)
|
||||
{
|
||||
char modalias[32];
|
||||
|
||||
snd_hdac_codec_modalias(dev_to_hdac_dev(dev), modalias,
|
||||
sizeof(modalias));
|
||||
if (add_uevent_var(env, "MODALIAS=%s", modalias))
|
||||
return -ENOMEM;
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct bus_type snd_hda_bus_type = {
|
||||
.name = "hdaudio",
|
||||
.match = hda_bus_match,
|
||||
.uevent = hda_uevent,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(snd_hda_bus_type);
|
||||
|
||||
|
|
|
@ -185,6 +185,21 @@ int snd_hdac_device_set_chip_name(struct hdac_device *codec, const char *name)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(snd_hdac_device_set_chip_name);
|
||||
|
||||
/**
|
||||
* snd_hdac_codec_modalias - give the module alias name
|
||||
* @codec: HDAC device
|
||||
* @buf: string buffer to store
|
||||
* @size: string buffer size
|
||||
*
|
||||
* Returns the size of string, like snprintf(), or a negative error code.
|
||||
*/
|
||||
int snd_hdac_codec_modalias(struct hdac_device *codec, char *buf, size_t size)
|
||||
{
|
||||
return snprintf(buf, size, "hdaudio:v%08Xr%08Xa%02X\n",
|
||||
codec->vendor_id, codec->revision_id, codec->type);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_hdac_codec_modalias);
|
||||
|
||||
/**
|
||||
* snd_hdac_make_cmd - compose a 32bit command word to be sent to the
|
||||
* HD-audio controller
|
||||
|
|
|
@ -45,6 +45,13 @@ CODEC_ATTR(mfg);
|
|||
CODEC_ATTR_STR(vendor_name);
|
||||
CODEC_ATTR_STR(chip_name);
|
||||
|
||||
static ssize_t modalias_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
return snd_hdac_codec_modalias(dev_to_hdac_dev(dev), buf, 256);
|
||||
}
|
||||
static DEVICE_ATTR_RO(modalias);
|
||||
|
||||
static struct attribute *hdac_dev_attrs[] = {
|
||||
&dev_attr_type.attr,
|
||||
&dev_attr_vendor_id.attr,
|
||||
|
@ -54,6 +61,7 @@ static struct attribute *hdac_dev_attrs[] = {
|
|||
&dev_attr_mfg.attr,
|
||||
&dev_attr_vendor_name.attr,
|
||||
&dev_attr_chip_name.attr,
|
||||
&dev_attr_modalias.attr,
|
||||
NULL
|
||||
};
|
||||
|
||||
|
|
|
@ -15,21 +15,22 @@
|
|||
#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
|
||||
|
|
|
@ -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>
|
||||
|
@ -81,19 +82,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,
|
||||
|
@ -184,7 +187,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 */
|
||||
|
|
|
@ -5877,13 +5877,14 @@ static int snd_hda_parse_generic_codec(struct hda_codec *codec)
|
|||
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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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");
|
||||
|
|
Loading…
Reference in New Issue