diff options
author | Lydia Wang <lydiawang@viatech.com.cn> | 2011-03-24 12:43:44 +0800 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2011-03-24 07:47:15 +0100 |
commit | ec7e7e42da0b33c77f1baafeac93e5128c4eea7a (patch) | |
tree | 5828c78744ca3989d861d28354f074e96b56d5b5 /sound | |
parent | eadb9a804de223ef899ebb64aa037fa0da7bdee9 (diff) | |
download | linux-ec7e7e42da0b33c77f1baafeac93e5128c4eea7a.tar.gz linux-ec7e7e42da0b33c77f1baafeac93e5128c4eea7a.tar.bz2 linux-ec7e7e42da0b33c77f1baafeac93e5128c4eea7a.zip |
ALSA: hda - VIA: Update unsolicited event function
Update unsolicited event process function via_unsol_event() to
make it can process more unsolicited events.
Signed-off-by: Lydia Wang <lydiawang@viatech.com.cn>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/pci/hda/patch_via.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c index ae9fdaa955f0..15b57a101aa0 100644 --- a/sound/pci/hda/patch_via.c +++ b/sound/pci/hda/patch_via.c @@ -234,12 +234,12 @@ static enum VIA_HDA_CODEC get_codec_type(struct hda_codec *codec) return codec_type; }; +#define VIA_JACK_EVENT 0x20 #define VIA_HP_EVENT 0x01 #define VIA_GPIO_EVENT 0x02 -#define VIA_JACK_EVENT 0x04 -#define VIA_MONO_EVENT 0x08 -#define VIA_SPEAKER_EVENT 0x10 -#define VIA_BIND_HP_EVENT 0x20 +#define VIA_MONO_EVENT 0x03 +#define VIA_SPEAKER_EVENT 0x04 +#define VIA_BIND_HP_EVENT 0x05 enum { VIA_CTL_WIDGET_VOL, @@ -1746,17 +1746,21 @@ static void via_unsol_event(struct hda_codec *codec, unsigned int res) { res >>= 26; - if (res & VIA_HP_EVENT) - via_hp_automute(codec); - if (res & VIA_GPIO_EVENT) - via_gpio_control(codec); + if (res & VIA_JACK_EVENT) set_widgets_power_state(codec); - if (res & VIA_MONO_EVENT) + + res &= ~VIA_JACK_EVENT; + + if (res == VIA_HP_EVENT) + via_hp_automute(codec); + else if (res == VIA_GPIO_EVENT) + via_gpio_control(codec); + else if (res == VIA_MONO_EVENT) via_mono_automute(codec); - if (res & VIA_SPEAKER_EVENT) + else if (res == VIA_SPEAKER_EVENT) via_speaker_automute(codec); - if (res & VIA_BIND_HP_EVENT) + else if (res == VIA_BIND_HP_EVENT) via_hp_bind_automute(codec); } |