Commit 2e03e952 authored by Takashi Iwai's avatar Takashi Iwai

ALSA: hda - Add hooks for HP/line/mic auto switching

... as a preliminary work for migrating patch_sigmatel.c.
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent ee8e765b
...@@ -2780,6 +2780,8 @@ static int check_auto_mute_availability(struct hda_codec *codec) ...@@ -2780,6 +2780,8 @@ static int check_auto_mute_availability(struct hda_codec *codec)
snd_printdd("hda-codec: Enable HP auto-muting on NID 0x%x\n", snd_printdd("hda-codec: Enable HP auto-muting on NID 0x%x\n",
nid); nid);
snd_hda_jack_detect_enable_callback(codec, nid, HDA_GEN_HP_EVENT, snd_hda_jack_detect_enable_callback(codec, nid, HDA_GEN_HP_EVENT,
spec->hp_automute_hook ?
spec->hp_automute_hook :
snd_hda_gen_hp_automute); snd_hda_gen_hp_automute);
spec->detect_hp = 1; spec->detect_hp = 1;
} }
...@@ -2793,6 +2795,8 @@ static int check_auto_mute_availability(struct hda_codec *codec) ...@@ -2793,6 +2795,8 @@ static int check_auto_mute_availability(struct hda_codec *codec)
snd_printdd("hda-codec: Enable Line-Out auto-muting on NID 0x%x\n", nid); snd_printdd("hda-codec: Enable Line-Out auto-muting on NID 0x%x\n", nid);
snd_hda_jack_detect_enable_callback(codec, nid, snd_hda_jack_detect_enable_callback(codec, nid,
HDA_GEN_FRONT_EVENT, HDA_GEN_FRONT_EVENT,
spec->line_automute_hook ?
spec->line_automute_hook :
snd_hda_gen_line_automute); snd_hda_gen_line_automute);
spec->detect_lo = 1; spec->detect_lo = 1;
} }
...@@ -2845,6 +2849,8 @@ static bool auto_mic_check_imux(struct hda_codec *codec) ...@@ -2845,6 +2849,8 @@ static bool auto_mic_check_imux(struct hda_codec *codec)
snd_hda_jack_detect_enable_callback(codec, snd_hda_jack_detect_enable_callback(codec,
spec->am_entry[i].pin, spec->am_entry[i].pin,
HDA_GEN_MIC_EVENT, HDA_GEN_MIC_EVENT,
spec->mic_autoswitch_hook ?
spec->mic_autoswitch_hook :
snd_hda_gen_mic_autoswitch); snd_hda_gen_mic_autoswitch);
return true; return true;
} }
......
...@@ -180,6 +180,14 @@ struct hda_gen_spec { ...@@ -180,6 +180,14 @@ struct hda_gen_spec {
void (*init_hook)(struct hda_codec *codec); void (*init_hook)(struct hda_codec *codec);
void (*automute_hook)(struct hda_codec *codec); void (*automute_hook)(struct hda_codec *codec);
void (*cap_sync_hook)(struct hda_codec *codec); void (*cap_sync_hook)(struct hda_codec *codec);
/* automute / autoswitch hooks */
void (*hp_automute_hook)(struct hda_codec *codec,
struct hda_jack_tbl *tbl);
void (*line_automute_hook)(struct hda_codec *codec,
struct hda_jack_tbl *tbl);
void (*mic_autoswitch_hook)(struct hda_codec *codec,
struct hda_jack_tbl *tbl);
}; };
int snd_hda_gen_spec_init(struct hda_gen_spec *spec); int snd_hda_gen_spec_init(struct hda_gen_spec *spec);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment