mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 13:11:40 +00:00
[ALSA] hda-codec - Fix oops with ALC880
HDA Codec driver - Fixed oops with ALC880 auto-config mode - Fixed a wrong config table entry for ALC880 Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
145794dc09
commit
b0af0de5cb
@ -119,6 +119,7 @@ struct alc_spec {
|
|||||||
unsigned int num_kctl_alloc, num_kctl_used;
|
unsigned int num_kctl_alloc, num_kctl_used;
|
||||||
snd_kcontrol_new_t *kctl_alloc;
|
snd_kcontrol_new_t *kctl_alloc;
|
||||||
struct hda_input_mux private_imux;
|
struct hda_input_mux private_imux;
|
||||||
|
hda_nid_t private_dac_nids[4];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -1549,7 +1550,8 @@ static struct hda_board_config alc880_cfg_tbl[] = {
|
|||||||
{ .pci_subvendor = 0x1019, .pci_subdevice = 0xa880, .config = ALC880_5ST_DIG },
|
{ .pci_subvendor = 0x1019, .pci_subdevice = 0xa880, .config = ALC880_5ST_DIG },
|
||||||
{ .pci_subvendor = 0x1019, .pci_subdevice = 0xa884, .config = ALC880_5ST_DIG },
|
{ .pci_subvendor = 0x1019, .pci_subdevice = 0xa884, .config = ALC880_5ST_DIG },
|
||||||
{ .pci_subvendor = 0x1695, .pci_subdevice = 0x400d, .config = ALC880_5ST_DIG },
|
{ .pci_subvendor = 0x1695, .pci_subdevice = 0x400d, .config = ALC880_5ST_DIG },
|
||||||
{ .pci_subvendor = 0x0000, .pci_subdevice = 0x8086, .config = ALC880_5ST_DIG },
|
/* note subvendor = 0 below */
|
||||||
|
/* { .pci_subvendor = 0x0000, .pci_subdevice = 0x8086, .config = ALC880_5ST_DIG }, */
|
||||||
|
|
||||||
{ .modelname = "w810", .config = ALC880_W810 },
|
{ .modelname = "w810", .config = ALC880_W810 },
|
||||||
{ .pci_subvendor = 0x161f, .pci_subdevice = 0x203d, .config = ALC880_W810 },
|
{ .pci_subvendor = 0x161f, .pci_subdevice = 0x203d, .config = ALC880_W810 },
|
||||||
@ -1656,7 +1658,8 @@ static struct alc_config_preset alc880_presets[] = {
|
|||||||
},
|
},
|
||||||
[ALC880_W810] = {
|
[ALC880_W810] = {
|
||||||
.mixers = { alc880_w810_base_mixer },
|
.mixers = { alc880_w810_base_mixer },
|
||||||
.init_verbs = { alc880_volume_init_verbs, alc880_pin_w810_init_verbs },
|
.init_verbs = { alc880_volume_init_verbs, alc880_pin_w810_init_verbs,
|
||||||
|
alc880_gpio2_init_verbs },
|
||||||
.num_dacs = ARRAY_SIZE(alc880_w810_dac_nids),
|
.num_dacs = ARRAY_SIZE(alc880_w810_dac_nids),
|
||||||
.dac_nids = alc880_w810_dac_nids,
|
.dac_nids = alc880_w810_dac_nids,
|
||||||
.dig_out_nid = ALC880_DIGOUT_NID,
|
.dig_out_nid = ALC880_DIGOUT_NID,
|
||||||
@ -1666,8 +1669,7 @@ static struct alc_config_preset alc880_presets[] = {
|
|||||||
},
|
},
|
||||||
[ALC880_Z71V] = {
|
[ALC880_Z71V] = {
|
||||||
.mixers = { alc880_z71v_mixer },
|
.mixers = { alc880_z71v_mixer },
|
||||||
.init_verbs = { alc880_volume_init_verbs, alc880_pin_z71v_init_verbs,
|
.init_verbs = { alc880_volume_init_verbs, alc880_pin_z71v_init_verbs },
|
||||||
alc880_gpio2_init_verbs },
|
|
||||||
.num_dacs = ARRAY_SIZE(alc880_z71v_dac_nids),
|
.num_dacs = ARRAY_SIZE(alc880_z71v_dac_nids),
|
||||||
.dac_nids = alc880_z71v_dac_nids,
|
.dac_nids = alc880_z71v_dac_nids,
|
||||||
.dig_out_nid = ALC880_DIGOUT_NID,
|
.dig_out_nid = ALC880_DIGOUT_NID,
|
||||||
@ -1809,6 +1811,7 @@ static int alc880_auto_fill_dac_nids(struct alc_spec *spec, const struct auto_pi
|
|||||||
int i, j;
|
int i, j;
|
||||||
|
|
||||||
memset(assigned, 0, sizeof(assigned));
|
memset(assigned, 0, sizeof(assigned));
|
||||||
|
spec->multiout.dac_nids = spec->private_dac_nids;
|
||||||
|
|
||||||
/* check the pins hardwired to audio widget */
|
/* check the pins hardwired to audio widget */
|
||||||
for (i = 0; i < cfg->line_outs; i++) {
|
for (i = 0; i < cfg->line_outs; i++) {
|
||||||
|
Loading…
Reference in New Issue
Block a user