diff options
| -rw-r--r-- | sound/pci/hda/hda_generic.c | 42 |
1 files changed, 12 insertions, 30 deletions
diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c index cfdb917d74fb..4b1524a861f3 100644 --- a/sound/pci/hda/hda_generic.c +++ b/sound/pci/hda/hda_generic.c | |||
| @@ -1940,17 +1940,7 @@ static int create_speaker_out_ctls(struct hda_codec *codec) | |||
| 1940 | * independent HP controls | 1940 | * independent HP controls |
| 1941 | */ | 1941 | */ |
| 1942 | 1942 | ||
| 1943 | /* update HP auto-mute state too */ | 1943 | static void call_hp_automute(struct hda_codec *codec, struct hda_jack_tbl *jack); |
| 1944 | static void update_hp_automute_hook(struct hda_codec *codec) | ||
| 1945 | { | ||
| 1946 | struct hda_gen_spec *spec = codec->spec; | ||
| 1947 | |||
| 1948 | if (spec->hp_automute_hook) | ||
| 1949 | spec->hp_automute_hook(codec, NULL); | ||
| 1950 | else | ||
| 1951 | snd_hda_gen_hp_automute(codec, NULL); | ||
| 1952 | } | ||
| 1953 | |||
| 1954 | static int indep_hp_info(struct snd_kcontrol *kcontrol, | 1944 | static int indep_hp_info(struct snd_kcontrol *kcontrol, |
| 1955 | struct snd_ctl_elem_info *uinfo) | 1945 | struct snd_ctl_elem_info *uinfo) |
| 1956 | { | 1946 | { |
| @@ -2011,7 +2001,7 @@ static int indep_hp_put(struct snd_kcontrol *kcontrol, | |||
| 2011 | else | 2001 | else |
| 2012 | *dacp = spec->alt_dac_nid; | 2002 | *dacp = spec->alt_dac_nid; |
| 2013 | 2003 | ||
| 2014 | update_hp_automute_hook(codec); | 2004 | call_hp_automute(codec, NULL); |
| 2015 | ret = 1; | 2005 | ret = 1; |
| 2016 | } | 2006 | } |
| 2017 | unlock: | 2007 | unlock: |
| @@ -2307,7 +2297,7 @@ static void update_hp_mic(struct hda_codec *codec, int adc_mux, bool force) | |||
| 2307 | else | 2297 | else |
| 2308 | val = PIN_HP; | 2298 | val = PIN_HP; |
| 2309 | set_pin_target(codec, pin, val, true); | 2299 | set_pin_target(codec, pin, val, true); |
| 2310 | update_hp_automute_hook(codec); | 2300 | call_hp_automute(codec, NULL); |
| 2311 | } | 2301 | } |
| 2312 | } | 2302 | } |
| 2313 | 2303 | ||
| @@ -2716,7 +2706,7 @@ static int hp_mic_jack_mode_put(struct snd_kcontrol *kcontrol, | |||
| 2716 | val = snd_hda_get_default_vref(codec, nid); | 2706 | val = snd_hda_get_default_vref(codec, nid); |
| 2717 | } | 2707 | } |
| 2718 | snd_hda_set_pin_ctl_cache(codec, nid, val); | 2708 | snd_hda_set_pin_ctl_cache(codec, nid, val); |
| 2719 | update_hp_automute_hook(codec); | 2709 | call_hp_automute(codec, NULL); |
| 2720 | 2710 | ||
| 2721 | return 1; | 2711 | return 1; |
| 2722 | } | 2712 | } |
| @@ -3861,22 +3851,6 @@ void snd_hda_gen_mic_autoswitch(struct hda_codec *codec, struct hda_jack_tbl *ja | |||
| 3861 | } | 3851 | } |
| 3862 | EXPORT_SYMBOL_HDA(snd_hda_gen_mic_autoswitch); | 3852 | EXPORT_SYMBOL_HDA(snd_hda_gen_mic_autoswitch); |
| 3863 | 3853 | ||
| 3864 | /* update jack retasking */ | ||
| 3865 | static void update_automute_all(struct hda_codec *codec) | ||
| 3866 | { | ||
| 3867 | struct hda_gen_spec *spec = codec->spec; | ||
| 3868 | |||
| 3869 | update_hp_automute_hook(codec); | ||
| 3870 | if (spec->line_automute_hook) | ||
| 3871 | spec->line_automute_hook(codec, NULL); | ||
| 3872 | else | ||
| 3873 | snd_hda_gen_line_automute(codec, NULL); | ||
| 3874 | if (spec->mic_autoswitch_hook) | ||
| 3875 | spec->mic_autoswitch_hook(codec, NULL); | ||
| 3876 | else | ||
| 3877 | snd_hda_gen_mic_autoswitch(codec, NULL); | ||
| 3878 | } | ||
| 3879 | |||
| 3880 | /* call appropriate hooks */ | 3854 | /* call appropriate hooks */ |
| 3881 | static void call_hp_automute(struct hda_codec *codec, struct hda_jack_tbl *jack) | 3855 | static void call_hp_automute(struct hda_codec *codec, struct hda_jack_tbl *jack) |
| 3882 | { | 3856 | { |
| @@ -3907,6 +3881,14 @@ static void call_mic_autoswitch(struct hda_codec *codec, | |||
| 3907 | snd_hda_gen_mic_autoswitch(codec, jack); | 3881 | snd_hda_gen_mic_autoswitch(codec, jack); |
| 3908 | } | 3882 | } |
| 3909 | 3883 | ||
| 3884 | /* update jack retasking */ | ||
| 3885 | static void update_automute_all(struct hda_codec *codec) | ||
| 3886 | { | ||
| 3887 | call_hp_automute(codec, NULL); | ||
| 3888 | call_line_automute(codec, NULL); | ||
| 3889 | call_mic_autoswitch(codec, NULL); | ||
| 3890 | } | ||
| 3891 | |||
| 3910 | /* | 3892 | /* |
| 3911 | * Auto-Mute mode mixer enum support | 3893 | * Auto-Mute mode mixer enum support |
| 3912 | */ | 3894 | */ |
