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); |
