diff options
Diffstat (limited to 'sound')
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 407475941fd3..206fcb930a65 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -15233,13 +15233,25 @@ static int alc861vd_auto_create_multi_out_ctls(struct alc_spec *spec, | |||
15233 | if (err < 0) | 15233 | if (err < 0) |
15234 | return err; | 15234 | return err; |
15235 | } else { | 15235 | } else { |
15236 | sprintf(name, "%s Playback Volume", chname[i]); | 15236 | const char *pfx; |
15237 | if (cfg->line_outs == 1 && | ||
15238 | cfg->line_out_type == AUTO_PIN_SPEAKER_OUT) { | ||
15239 | if (!cfg->hp_pins) | ||
15240 | pfx = "Speaker"; | ||
15241 | else | ||
15242 | pfx = "PCM"; | ||
15243 | } else | ||
15244 | pfx = chname[i]; | ||
15245 | sprintf(name, "%s Playback Volume", pfx); | ||
15237 | err = add_control(spec, ALC_CTL_WIDGET_VOL, name, | 15246 | err = add_control(spec, ALC_CTL_WIDGET_VOL, name, |
15238 | HDA_COMPOSE_AMP_VAL(nid_v, 3, 0, | 15247 | HDA_COMPOSE_AMP_VAL(nid_v, 3, 0, |
15239 | HDA_OUTPUT)); | 15248 | HDA_OUTPUT)); |
15240 | if (err < 0) | 15249 | if (err < 0) |
15241 | return err; | 15250 | return err; |
15242 | sprintf(name, "%s Playback Switch", chname[i]); | 15251 | if (cfg->line_outs == 1 && |
15252 | cfg->line_out_type == AUTO_PIN_SPEAKER_OUT) | ||
15253 | pfx = "Speaker"; | ||
15254 | sprintf(name, "%s Playback Switch", pfx); | ||
15243 | err = add_control(spec, ALC_CTL_BIND_MUTE, name, | 15255 | err = add_control(spec, ALC_CTL_BIND_MUTE, name, |
15244 | HDA_COMPOSE_AMP_VAL(nid_s, 3, 2, | 15256 | HDA_COMPOSE_AMP_VAL(nid_s, 3, 2, |
15245 | HDA_INPUT)); | 15257 | HDA_INPUT)); |