Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c48a8fb0 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

ALSA: hda - Fix duplicated DAC assignments for Realtek



Copying hp_pins and speaker_pins from line_out_pins may confuse the
parser, and it can lead to duplicated initializations for the same pin
with a wrong DAC assignment.  The problem appears in 3.0 kernel code.

Cc: <stable@kernel.org> (for 3.0)
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent ae6ff61e
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -895,13 +895,15 @@ static void alc_init_auto_hp(struct hda_codec *codec)
	if (present == 3)
		spec->automute_hp_lo = 1; /* both HP and LO automute */

	if (!cfg->speaker_pins[0]) {
	if (!cfg->speaker_pins[0] &&
	    cfg->line_out_type == AUTO_PIN_SPEAKER_OUT) {
		memcpy(cfg->speaker_pins, cfg->line_out_pins,
		       sizeof(cfg->speaker_pins));
		cfg->speaker_outs = cfg->line_outs;
	}

	if (!cfg->hp_pins[0]) {
	if (!cfg->hp_pins[0] &&
	    cfg->line_out_type == AUTO_PIN_HP_OUT) {
		memcpy(cfg->hp_pins, cfg->line_out_pins,
		       sizeof(cfg->hp_pins));
		cfg->hp_outs = cfg->line_outs;
@@ -920,6 +922,7 @@ static void alc_init_auto_hp(struct hda_codec *codec)
		spec->automute_mode = ALC_AUTOMUTE_PIN;
	}
	if (spec->automute && cfg->line_out_pins[0] &&
	    cfg->speaker_pins[0] &&
	    cfg->line_out_pins[0] != cfg->hp_pins[0] &&
	    cfg->line_out_pins[0] != cfg->speaker_pins[0]) {
		for (i = 0; i < cfg->line_outs; i++) {