aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2005-06-21 08:49:19 -0400
committerJaroslav Kysela <perex@suse.cz>2005-07-28 06:09:22 -0400
commitb0af0de5cb57c96b0c3d739005172152b7de0ce8 (patch)
tree00c78a03731ae123b7cf42923fa10d6e9f640041
parent145794dc09117b31b6730096558e52b673af7b84 (diff)
[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>
-rw-r--r--sound/pci/hda/patch_realtek.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index bab89843d850..ed16ce817dd8 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -119,6 +119,7 @@ struct alc_spec {
119 unsigned int num_kctl_alloc, num_kctl_used; 119 unsigned int num_kctl_alloc, num_kctl_used;
120 snd_kcontrol_new_t *kctl_alloc; 120 snd_kcontrol_new_t *kctl_alloc;
121 struct hda_input_mux private_imux; 121 struct hda_input_mux private_imux;
122 hda_nid_t private_dac_nids[4];
122}; 123};
123 124
124 125
@@ -1549,7 +1550,8 @@ static struct hda_board_config alc880_cfg_tbl[] = {
1549 { .pci_subvendor = 0x1019, .pci_subdevice = 0xa880, .config = ALC880_5ST_DIG }, 1550 { .pci_subvendor = 0x1019, .pci_subdevice = 0xa880, .config = ALC880_5ST_DIG },
1550 { .pci_subvendor = 0x1019, .pci_subdevice = 0xa884, .config = ALC880_5ST_DIG }, 1551 { .pci_subvendor = 0x1019, .pci_subdevice = 0xa884, .config = ALC880_5ST_DIG },
1551 { .pci_subvendor = 0x1695, .pci_subdevice = 0x400d, .config = ALC880_5ST_DIG }, 1552 { .pci_subvendor = 0x1695, .pci_subdevice = 0x400d, .config = ALC880_5ST_DIG },
1552 { .pci_subvendor = 0x0000, .pci_subdevice = 0x8086, .config = ALC880_5ST_DIG }, 1553 /* note subvendor = 0 below */
1554 /* { .pci_subvendor = 0x0000, .pci_subdevice = 0x8086, .config = ALC880_5ST_DIG }, */
1553 1555
1554 { .modelname = "w810", .config = ALC880_W810 }, 1556 { .modelname = "w810", .config = ALC880_W810 },
1555 { .pci_subvendor = 0x161f, .pci_subdevice = 0x203d, .config = ALC880_W810 }, 1557 { .pci_subvendor = 0x161f, .pci_subdevice = 0x203d, .config = ALC880_W810 },
@@ -1656,7 +1658,8 @@ static struct alc_config_preset alc880_presets[] = {
1656 }, 1658 },
1657 [ALC880_W810] = { 1659 [ALC880_W810] = {
1658 .mixers = { alc880_w810_base_mixer }, 1660 .mixers = { alc880_w810_base_mixer },
1659 .init_verbs = { alc880_volume_init_verbs, alc880_pin_w810_init_verbs }, 1661 .init_verbs = { alc880_volume_init_verbs, alc880_pin_w810_init_verbs,
1662 alc880_gpio2_init_verbs },
1660 .num_dacs = ARRAY_SIZE(alc880_w810_dac_nids), 1663 .num_dacs = ARRAY_SIZE(alc880_w810_dac_nids),
1661 .dac_nids = alc880_w810_dac_nids, 1664 .dac_nids = alc880_w810_dac_nids,
1662 .dig_out_nid = ALC880_DIGOUT_NID, 1665 .dig_out_nid = ALC880_DIGOUT_NID,
@@ -1666,8 +1669,7 @@ static struct alc_config_preset alc880_presets[] = {
1666 }, 1669 },
1667 [ALC880_Z71V] = { 1670 [ALC880_Z71V] = {
1668 .mixers = { alc880_z71v_mixer }, 1671 .mixers = { alc880_z71v_mixer },
1669 .init_verbs = { alc880_volume_init_verbs, alc880_pin_z71v_init_verbs, 1672 .init_verbs = { alc880_volume_init_verbs, alc880_pin_z71v_init_verbs },
1670 alc880_gpio2_init_verbs },
1671 .num_dacs = ARRAY_SIZE(alc880_z71v_dac_nids), 1673 .num_dacs = ARRAY_SIZE(alc880_z71v_dac_nids),
1672 .dac_nids = alc880_z71v_dac_nids, 1674 .dac_nids = alc880_z71v_dac_nids,
1673 .dig_out_nid = ALC880_DIGOUT_NID, 1675 .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
1809 int i, j; 1811 int i, j;
1810 1812
1811 memset(assigned, 0, sizeof(assigned)); 1813 memset(assigned, 0, sizeof(assigned));
1814 spec->multiout.dac_nids = spec->private_dac_nids;
1812 1815
1813 /* check the pins hardwired to audio widget */ 1816 /* check the pins hardwired to audio widget */
1814 for (i = 0; i < cfg->line_outs; i++) { 1817 for (i = 0; i < cfg->line_outs; i++) {