Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 252103
b: refs/heads/master
c: e2df82f
h: refs/heads/master
i:
  252101: ca867a2
  252099: 5375041
  252095: c225fb9
v: v3
  • Loading branch information
Takashi Iwai committed May 24, 2011
1 parent 64173c8 commit e3a8270
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 13 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 313d2c065253a7549f5e7f43409f1da455329acd
refs/heads/master: e2df82ffb8f61efdefba2857da09306182e9c599
33 changes: 21 additions & 12 deletions trunk/sound/pci/hda/patch_conexant.c
Original file line number Diff line number Diff line change
Expand Up @@ -3434,7 +3434,9 @@ static void cx_auto_parse_output(struct hda_codec *codec)
break;
}
}
if (spec->auto_mute && cfg->line_out_pins[0] &&
if (spec->auto_mute &&
cfg->line_out_pins[0] &&
cfg->line_out_type != AUTO_PIN_SPEAKER_OUT &&
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++) {
Expand Down Expand Up @@ -3482,25 +3484,32 @@ static void cx_auto_update_speakers(struct hda_codec *codec)
{
struct conexant_spec *spec = codec->spec;
struct auto_pin_cfg *cfg = &spec->autocfg;
int on;
int on = 1;

if (!spec->auto_mute)
on = 0;
else
on = spec->hp_present | spec->line_present;
/* turn on HP EAPD when HP jacks are present */
if (spec->auto_mute)
on = spec->hp_present;
cx_auto_turn_eapd(codec, cfg->hp_outs, cfg->hp_pins, on);
do_automute(codec, cfg->speaker_outs, cfg->speaker_pins, !on);
/* mute speakers in auto-mode if HP or LO jacks are plugged */
if (spec->auto_mute)
on = !(spec->hp_present ||
(spec->detect_line && spec->line_present));
do_automute(codec, cfg->speaker_outs, cfg->speaker_pins, on);

/* toggle line-out mutes if needed, too */
/* if LO is a copy of either HP or Speaker, don't need to handle it */
if (cfg->line_out_pins[0] == cfg->hp_pins[0] ||
cfg->line_out_pins[0] == cfg->speaker_pins[0])
return;
if (!spec->automute_lines || !spec->auto_mute)
on = 0;
else
on = spec->hp_present;
do_automute(codec, cfg->line_outs, cfg->line_out_pins, !on);
if (spec->auto_mute) {
/* mute LO in auto-mode when HP jack is present */
if (cfg->line_out_type == AUTO_PIN_SPEAKER_OUT ||
spec->automute_lines)
on = !spec->hp_present;
else
on = 1;
}
do_automute(codec, cfg->line_outs, cfg->line_out_pins, on);
}

static void cx_auto_hp_automute(struct hda_codec *codec)
Expand Down

0 comments on commit e3a8270

Please sign in to comment.