Skip to content

Commit

Permalink
[ALSA] hda-codec - Fix output pin types in auto configuration
Browse files Browse the repository at this point in the history
Use PIN_HP output type for HP pin widgets accordingly, instead of
always applying PIN_OUT.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
  • Loading branch information
Takashi Iwai authored and Jaroslav Kysela committed May 11, 2007
1 parent d258e24 commit baba8ee
Showing 1 changed file with 25 additions and 9 deletions.
34 changes: 25 additions & 9 deletions sound/pci/hda/patch_realtek.c
Original file line number Diff line number Diff line change
Expand Up @@ -3095,6 +3095,14 @@ static void alc880_auto_set_output_and_unmute(struct hda_codec *codec,
}
}

static int get_pin_type(int line_out_type)
{
if (line_out_type == AUTO_PIN_HP_OUT)
return PIN_HP;
else
return PIN_OUT;
}

static void alc880_auto_init_multi_out(struct hda_codec *codec)
{
struct alc_spec *spec = codec->spec;
Expand All @@ -3103,7 +3111,8 @@ static void alc880_auto_init_multi_out(struct hda_codec *codec)
alc_subsystem_id(codec, 0x15, 0x1b, 0x14);
for (i = 0; i < spec->autocfg.line_outs; i++) {
hda_nid_t nid = spec->autocfg.line_out_pins[i];
alc880_auto_set_output_and_unmute(codec, nid, PIN_OUT, i);
int pin_type = get_pin_type(spec->autocfg.line_out_type);
alc880_auto_set_output_and_unmute(codec, nid, pin_type, i);
}
}

Expand Down Expand Up @@ -4292,16 +4301,18 @@ static void alc260_auto_init_multi_out(struct hda_codec *codec)

alc_subsystem_id(codec, 0x10, 0x15, 0x0f);
nid = spec->autocfg.line_out_pins[0];
if (nid)
alc260_auto_set_output_and_unmute(codec, nid, PIN_OUT, 0);
if (nid) {
int pin_type = get_pin_type(spec->autocfg.line_out_type);
alc260_auto_set_output_and_unmute(codec, nid, pin_type, 0);
}

nid = spec->autocfg.speaker_pins[0];
if (nid)
alc260_auto_set_output_and_unmute(codec, nid, PIN_OUT, 0);

nid = spec->autocfg.hp_pins[0];
if (nid)
alc260_auto_set_output_and_unmute(codec, nid, PIN_OUT, 0);
alc260_auto_set_output_and_unmute(codec, nid, PIN_HP, 0);
}

#define ALC260_PIN_CD_NID 0x16
Expand Down Expand Up @@ -5164,8 +5175,9 @@ static void alc882_auto_init_multi_out(struct hda_codec *codec)
alc_subsystem_id(codec, 0x15, 0x1b, 0x14);
for (i = 0; i <= HDA_SIDE; i++) {
hda_nid_t nid = spec->autocfg.line_out_pins[i];
int pin_type = get_pin_type(spec->autocfg.line_out_type);
if (nid)
alc882_auto_set_output_and_unmute(codec, nid, PIN_OUT,
alc882_auto_set_output_and_unmute(codec, nid, pin_type,
i);
}
}
Expand Down Expand Up @@ -6185,8 +6197,9 @@ static void alc883_auto_init_multi_out(struct hda_codec *codec)
alc_subsystem_id(codec, 0x15, 0x1b, 0x14);
for (i = 0; i <= HDA_SIDE; i++) {
hda_nid_t nid = spec->autocfg.line_out_pins[i];
int pin_type = get_pin_type(spec->autocfg.line_out_type);
if (nid)
alc883_auto_set_output_and_unmute(codec, nid, PIN_OUT,
alc883_auto_set_output_and_unmute(codec, nid, pin_type,
i);
}
}
Expand Down Expand Up @@ -8182,8 +8195,9 @@ static void alc861_auto_init_multi_out(struct hda_codec *codec)
alc_subsystem_id(codec, 0x0e, 0x0f, 0x0b);
for (i = 0; i < spec->autocfg.line_outs; i++) {
hda_nid_t nid = spec->autocfg.line_out_pins[i];
int pin_type = get_pin_type(spec->autocfg.line_out_type);
if (nid)
alc861_auto_set_output_and_unmute(codec, nid, PIN_OUT,
alc861_auto_set_output_and_unmute(codec, nid, pin_type,
spec->multiout.dac_nids[i]);
}
}
Expand Down Expand Up @@ -8892,9 +8906,10 @@ static void alc861vd_auto_init_multi_out(struct hda_codec *codec)
alc_subsystem_id(codec, 0x15, 0x1b, 0x14);
for (i = 0; i <= HDA_SIDE; i++) {
hda_nid_t nid = spec->autocfg.line_out_pins[i];
int pin_type = get_pin_type(spec->autocfg.line_out_type);
if (nid)
alc861vd_auto_set_output_and_unmute(codec, nid,
PIN_OUT, i);
pin_type, i);
}
}

Expand Down Expand Up @@ -9867,8 +9882,9 @@ static void alc662_auto_init_multi_out(struct hda_codec *codec)

for (i = 0; i <= HDA_SIDE; i++) {
hda_nid_t nid = spec->autocfg.line_out_pins[i];
int pin_type = get_pin_type(spec->autocfg.line_out_type);
if (nid)
alc662_auto_set_output_and_unmute(codec, nid, PIN_OUT,
alc662_auto_set_output_and_unmute(codec, nid, pin_type,
i);
}
}
Expand Down

0 comments on commit baba8ee

Please sign in to comment.