Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 56207
b: refs/heads/master
c: 458a4fa
h: refs/heads/master
i:
  56205: f22f6d0
  56203: 5ee0ac9
  56199: 26ea07d
  56191: 94a04c7
v: v3
  • Loading branch information
Takashi Iwai authored and Jaroslav Kysela committed May 11, 2007
1 parent 962aa2d commit 9b65dd3
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 7 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: 35b26722a1716b45b5b92d5af2f1ea1fdd4d0a25
refs/heads/master: 458a4fabf185d90234225d7e05d81188b4dad9f1
33 changes: 27 additions & 6 deletions trunk/sound/pci/hda/patch_realtek.c
Original file line number Diff line number Diff line change
Expand Up @@ -1487,7 +1487,7 @@ static struct hda_verb alc880_beep_init_verbs[] = {
};

/* toggle speaker-output according to the hp-jack state */
static void alc880_uniwill_automute(struct hda_codec *codec)
static void alc880_uniwill_hp_automute(struct hda_codec *codec)
{
unsigned int present;
unsigned char bits;
Expand All @@ -1503,11 +1503,27 @@ static void alc880_uniwill_automute(struct hda_codec *codec)
0x80, bits);
snd_hda_codec_amp_update(codec, 0x16, 1, HDA_OUTPUT, 0,
0x80, bits);
}

/* auto-toggle front mic */
static void alc880_uniwill_mic_automute(struct hda_codec *codec)
{
unsigned int present;
unsigned char bits;

present = snd_hda_codec_read(codec, 0x18, 0,
AC_VERB_GET_PIN_SENSE, 0) & 0x80000000;
snd_hda_codec_write(codec, 0x0b, 0, AC_VERB_SET_AMP_GAIN_MUTE,
0x7000 | (0x01 << 8) | bits);
bits = present ? 0x80 : 0;
snd_hda_codec_amp_update(codec, 0x0b, 0, HDA_INPUT, 1,
0x80, bits);
snd_hda_codec_amp_update(codec, 0x0b, 1, HDA_INPUT, 1,
0x80, bits);
}

static void alc880_uniwill_automute(struct hda_codec *codec)
{
alc880_uniwill_hp_automute(codec);
alc880_uniwill_mic_automute(codec);
}

static void alc880_uniwill_unsol_event(struct hda_codec *codec,
Expand All @@ -1516,9 +1532,14 @@ static void alc880_uniwill_unsol_event(struct hda_codec *codec,
/* Looks like the unsol event is incompatible with the standard
* definition. 4bit tag is placed at 28 bit!
*/
if ((res >> 28) == ALC880_HP_EVENT ||
(res >> 28) == ALC880_MIC_EVENT)
alc880_uniwill_automute(codec);
switch (res >> 28) {
case ALC880_HP_EVENT:
alc880_uniwill_hp_automute(codec);
break;
case ALC880_MIC_EVENT:
alc880_uniwill_mic_automute(codec);
break;
}
}

static void alc880_uniwill_p53_hp_automute(struct hda_codec *codec)
Expand Down

0 comments on commit 9b65dd3

Please sign in to comment.