Commit 766ddee6 authored by Takashi Iwai's avatar Takashi Iwai

ALSA: hda/realtek - Don't create extra controls with channel suffix

The multiple headphone or speaker pins are usually provided to
output the same stream unlike line-out jacks (which are supposed
to be multi-channel surrounds).  Thus giving a mixer name like
"Headphone Surround" is rather confusing.  Instead, when multiple
headphone volumes are available, use index with the same "Headphone"
name.
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 6c39d6ac
...@@ -3173,7 +3173,8 @@ static int alc_auto_create_multi_out_ctls(struct hda_codec *codec, ...@@ -3173,7 +3173,8 @@ static int alc_auto_create_multi_out_ctls(struct hda_codec *codec,
} }
static int alc_auto_create_extra_out(struct hda_codec *codec, hda_nid_t pin, static int alc_auto_create_extra_out(struct hda_codec *codec, hda_nid_t pin,
hda_nid_t dac, const char *pfx) hda_nid_t dac, const char *pfx,
int cidx)
{ {
struct alc_spec *spec = codec->spec; struct alc_spec *spec = codec->spec;
hda_nid_t sw, vol; hda_nid_t sw, vol;
...@@ -3189,15 +3190,15 @@ static int alc_auto_create_extra_out(struct hda_codec *codec, hda_nid_t pin, ...@@ -3189,15 +3190,15 @@ static int alc_auto_create_extra_out(struct hda_codec *codec, hda_nid_t pin,
if (is_ctl_used(spec->sw_ctls, val)) if (is_ctl_used(spec->sw_ctls, val))
return 0; /* already created */ return 0; /* already created */
mark_ctl_usage(spec->sw_ctls, val); mark_ctl_usage(spec->sw_ctls, val);
return add_pb_sw_ctrl(spec, ALC_CTL_WIDGET_MUTE, pfx, val); return __add_pb_sw_ctrl(spec, ALC_CTL_WIDGET_MUTE, pfx, cidx, val);
} }
sw = alc_look_for_out_mute_nid(codec, pin, dac); sw = alc_look_for_out_mute_nid(codec, pin, dac);
vol = alc_look_for_out_vol_nid(codec, pin, dac); vol = alc_look_for_out_vol_nid(codec, pin, dac);
err = alc_auto_add_stereo_vol(codec, pfx, 0, vol); err = alc_auto_add_stereo_vol(codec, pfx, cidx, vol);
if (err < 0) if (err < 0)
return err; return err;
err = alc_auto_add_stereo_sw(codec, pfx, 0, sw); err = alc_auto_add_stereo_sw(codec, pfx, cidx, sw);
if (err < 0) if (err < 0)
return err; return err;
return 0; return 0;
...@@ -3238,16 +3239,21 @@ static int alc_auto_create_extra_outs(struct hda_codec *codec, int num_pins, ...@@ -3238,16 +3239,21 @@ static int alc_auto_create_extra_outs(struct hda_codec *codec, int num_pins,
hda_nid_t dac = *dacs; hda_nid_t dac = *dacs;
if (!dac) if (!dac)
dac = spec->multiout.dac_nids[0]; dac = spec->multiout.dac_nids[0];
return alc_auto_create_extra_out(codec, *pins, dac, pfx); return alc_auto_create_extra_out(codec, *pins, dac, pfx, 0);
} }
if (dacs[num_pins - 1]) { if (dacs[num_pins - 1]) {
/* OK, we have a multi-output system with individual volumes */ /* OK, we have a multi-output system with individual volumes */
for (i = 0; i < num_pins; i++) { for (i = 0; i < num_pins; i++) {
if (num_pins >= 3) {
snprintf(name, sizeof(name), "%s %s", snprintf(name, sizeof(name), "%s %s",
pfx, channel_name[i]); pfx, channel_name[i]);
err = alc_auto_create_extra_out(codec, pins[i], dacs[i], err = alc_auto_create_extra_out(codec, pins[i], dacs[i],
name); name, 0);
} else {
err = alc_auto_create_extra_out(codec, pins[i], dacs[i],
pfx, i);
}
if (err < 0) if (err < 0)
return err; return err;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment