Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 371695
b: refs/heads/master
c: 8ba955c
h: refs/heads/master
i:
  371693: 9ae5633
  371691: c09a88d
  371687: a58240f
  371679: 74502a2
v: v3
  • Loading branch information
Takashi Iwai committed Mar 7, 2013
1 parent 4db52f6 commit c56620e
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 22 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: f811c3cf8fae63ecc8a937ba7376490e2565f8f1
refs/heads/master: 8ba955cef30921417dffba901a8af5a2662a1dec
45 changes: 24 additions & 21 deletions trunk/sound/pci/hda/hda_generic.c
Original file line number Diff line number Diff line change
Expand Up @@ -1890,6 +1890,17 @@ static int create_speaker_out_ctls(struct hda_codec *codec)
* independent HP controls
*/

/* update HP auto-mute state too */
static void update_hp_automute_hook(struct hda_codec *codec)
{
struct hda_gen_spec *spec = codec->spec;

if (spec->hp_automute_hook)
spec->hp_automute_hook(codec, NULL);
else
snd_hda_gen_hp_automute(codec, NULL);
}

static int indep_hp_info(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_info *uinfo)
{
Expand Down Expand Up @@ -1950,12 +1961,7 @@ static int indep_hp_put(struct snd_kcontrol *kcontrol,
else
*dacp = spec->alt_dac_nid;

/* update HP auto-mute state too */
if (spec->hp_automute_hook)
spec->hp_automute_hook(codec, NULL);
else
snd_hda_gen_hp_automute(codec, NULL);

update_hp_automute_hook(codec);
ret = 1;
}
unlock:
Expand Down Expand Up @@ -2237,17 +2243,14 @@ static void update_hp_mic(struct hda_codec *codec, int adc_mux, bool force)
PIN_IN | (as_mic ? vref_val : 0));
}

if (as_mic)
val |= PIN_IN;
else
val = PIN_HP;
set_pin_target(codec, pin, val, true);

/* update HP auto-mute state too */
if (spec->hp_automute_hook)
spec->hp_automute_hook(codec, NULL);
else
snd_hda_gen_hp_automute(codec, NULL);
if (!spec->hp_mic_jack_modes) {
if (as_mic)
val |= PIN_IN;
else
val = PIN_HP;
set_pin_target(codec, pin, val, true);
update_hp_automute_hook(codec);
}
}

/* create a shared input with the headphone out */
Expand Down Expand Up @@ -2654,6 +2657,8 @@ static int hp_mic_jack_mode_put(struct snd_kcontrol *kcontrol,
val = snd_hda_get_default_vref(codec, nid);
}
snd_hda_set_pin_ctl_cache(codec, nid, val);
update_hp_automute_hook(codec);

return 1;
}

Expand All @@ -2677,6 +2682,7 @@ static int create_hp_mic_jack_mode(struct hda_codec *codec, hda_nid_t pin)
if (!knew)
return -ENOMEM;
knew->private_value = pin;
spec->hp_mic_jack_modes = 1;
return 0;
}

Expand Down Expand Up @@ -3800,10 +3806,7 @@ static void update_automute_all(struct hda_codec *codec)
{
struct hda_gen_spec *spec = codec->spec;

if (spec->hp_automute_hook)
spec->hp_automute_hook(codec, NULL);
else
snd_hda_gen_hp_automute(codec, NULL);
update_hp_automute_hook(codec);
if (spec->line_automute_hook)
spec->line_automute_hook(codec, NULL);
else
Expand Down
1 change: 1 addition & 0 deletions trunk/sound/pci/hda/hda_generic.h
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,7 @@ struct hda_gen_spec {
unsigned int dyn_adc_switch:1; /* switch ADCs (for ALC275) */
unsigned int indep_hp_enabled:1; /* independent HP enabled */
unsigned int have_aamix_ctl:1;
unsigned int hp_mic_jack_modes:1;

/* loopback mixing mode */
bool aamix_mode;
Expand Down

0 comments on commit c56620e

Please sign in to comment.