diff options
Diffstat (limited to 'sound/pci/hda/patch_sigmatel.c')
-rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 788fdc6f3264..e6085915d86d 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -69,6 +69,7 @@ enum { | |||
69 | enum { | 69 | enum { |
70 | STAC_92HD73XX_REF, | 70 | STAC_92HD73XX_REF, |
71 | STAC_DELL_M6, | 71 | STAC_DELL_M6, |
72 | STAC_DELL_EQ, | ||
72 | STAC_92HD73XX_MODELS | 73 | STAC_92HD73XX_MODELS |
73 | }; | 74 | }; |
74 | 75 | ||
@@ -566,10 +567,8 @@ static int stac92xx_smux_enum_put(struct snd_kcontrol *kcontrol, | |||
566 | nid = codec->slave_dig_outs[smux_idx - 1]; | 567 | nid = codec->slave_dig_outs[smux_idx - 1]; |
567 | if (spec->cur_smux[smux_idx] == smux->num_items - 1) | 568 | if (spec->cur_smux[smux_idx] == smux->num_items - 1) |
568 | val = AMP_OUT_MUTE; | 569 | val = AMP_OUT_MUTE; |
569 | if (smux_idx == 0) | ||
570 | nid = spec->multiout.dig_out_nid; | ||
571 | else | 570 | else |
572 | nid = codec->slave_dig_outs[smux_idx - 1]; | 571 | val = AMP_OUT_UNMUTE; |
573 | /* un/mute SPDIF out */ | 572 | /* un/mute SPDIF out */ |
574 | snd_hda_codec_write_cache(codec, nid, 0, | 573 | snd_hda_codec_write_cache(codec, nid, 0, |
575 | AC_VERB_SET_AMP_GAIN_MUTE, val); | 574 | AC_VERB_SET_AMP_GAIN_MUTE, val); |
@@ -775,9 +774,7 @@ static struct hda_verb dell_eq_core_init[] = { | |||
775 | }; | 774 | }; |
776 | 775 | ||
777 | static struct hda_verb dell_m6_core_init[] = { | 776 | static struct hda_verb dell_m6_core_init[] = { |
778 | /* set master volume to max value without distortion | 777 | { 0x1f, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0xff}, |
779 | * and direct control */ | ||
780 | { 0x1f, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0xec}, | ||
781 | /* setup audio connections */ | 778 | /* setup audio connections */ |
782 | { 0x0d, AC_VERB_SET_CONNECT_SEL, 0x00}, | 779 | { 0x0d, AC_VERB_SET_CONNECT_SEL, 0x00}, |
783 | { 0x0a, AC_VERB_SET_CONNECT_SEL, 0x01}, | 780 | { 0x0a, AC_VERB_SET_CONNECT_SEL, 0x01}, |
@@ -1602,11 +1599,13 @@ static unsigned int dell_m6_pin_configs[13] = { | |||
1602 | static unsigned int *stac92hd73xx_brd_tbl[STAC_92HD73XX_MODELS] = { | 1599 | static unsigned int *stac92hd73xx_brd_tbl[STAC_92HD73XX_MODELS] = { |
1603 | [STAC_92HD73XX_REF] = ref92hd73xx_pin_configs, | 1600 | [STAC_92HD73XX_REF] = ref92hd73xx_pin_configs, |
1604 | [STAC_DELL_M6] = dell_m6_pin_configs, | 1601 | [STAC_DELL_M6] = dell_m6_pin_configs, |
1602 | [STAC_DELL_EQ] = dell_m6_pin_configs, | ||
1605 | }; | 1603 | }; |
1606 | 1604 | ||
1607 | static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = { | 1605 | static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = { |
1608 | [STAC_92HD73XX_REF] = "ref", | 1606 | [STAC_92HD73XX_REF] = "ref", |
1609 | [STAC_DELL_M6] = "dell-m6", | 1607 | [STAC_DELL_M6] = "dell-m6", |
1608 | [STAC_DELL_EQ] = "dell-eq", | ||
1610 | }; | 1609 | }; |
1611 | 1610 | ||
1612 | static struct snd_pci_quirk stac92hd73xx_cfg_tbl[] = { | 1611 | static struct snd_pci_quirk stac92hd73xx_cfg_tbl[] = { |
@@ -4133,12 +4132,17 @@ again: | |||
4133 | sizeof(stac92hd73xx_dmux)); | 4132 | sizeof(stac92hd73xx_dmux)); |
4134 | 4133 | ||
4135 | switch (spec->board_config) { | 4134 | switch (spec->board_config) { |
4136 | case STAC_DELL_M6: | 4135 | case STAC_DELL_EQ: |
4137 | spec->init = dell_eq_core_init; | 4136 | spec->init = dell_eq_core_init; |
4137 | /* fallthru */ | ||
4138 | case STAC_DELL_M6: | ||
4138 | spec->num_smuxes = 0; | 4139 | spec->num_smuxes = 0; |
4139 | spec->mixer = &stac92hd73xx_6ch_mixer[DELL_M6_MIXER]; | 4140 | spec->mixer = &stac92hd73xx_6ch_mixer[DELL_M6_MIXER]; |
4140 | spec->amp_nids = &stac92hd73xx_amp_nids[DELL_M6_AMP]; | 4141 | spec->amp_nids = &stac92hd73xx_amp_nids[DELL_M6_AMP]; |
4141 | spec->num_amps = 1; | 4142 | spec->num_amps = 1; |
4143 | |||
4144 | if (!spec->init) | ||
4145 | spec->init = dell_m6_core_init; | ||
4142 | switch (codec->subsystem_id) { | 4146 | switch (codec->subsystem_id) { |
4143 | case 0x1028025e: /* Analog Mics */ | 4147 | case 0x1028025e: /* Analog Mics */ |
4144 | case 0x1028025f: | 4148 | case 0x1028025f: |
@@ -4148,8 +4152,6 @@ again: | |||
4148 | break; | 4152 | break; |
4149 | case 0x10280271: /* Digital Mics */ | 4153 | case 0x10280271: /* Digital Mics */ |
4150 | case 0x10280272: | 4154 | case 0x10280272: |
4151 | spec->init = dell_m6_core_init; | ||
4152 | /* fall-through */ | ||
4153 | case 0x10280254: | 4155 | case 0x10280254: |
4154 | case 0x10280255: | 4156 | case 0x10280255: |
4155 | stac92xx_set_config_reg(codec, 0x13, 0x90A60160); | 4157 | stac92xx_set_config_reg(codec, 0x13, 0x90A60160); |