diff options
author | Takashi Iwai <tiwai@suse.de> | 2005-06-21 08:49:19 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2005-07-28 06:09:22 -0400 |
commit | b0af0de5cb57c96b0c3d739005172152b7de0ce8 (patch) | |
tree | 00c78a03731ae123b7cf42923fa10d6e9f640041 /sound/pci/hda | |
parent | 145794dc09117b31b6730096558e52b673af7b84 (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>
Diffstat (limited to 'sound/pci/hda')
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 11 |
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++) { |