ALSA: hda - Add hooks for HP/line/mic auto switching
authorTakashi Iwai <tiwai@suse.de>
Thu, 3 Jan 2013 14:55:06 +0000 (15:55 +0100)
committerTakashi Iwai <tiwai@suse.de>
Sat, 12 Jan 2013 07:43:24 +0000 (08:43 +0100)
... as a preliminary work for migrating patch_sigmatel.c.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/hda_generic.c
sound/pci/hda/hda_generic.h

index 88f166e65752da191a1da1c8d1048f94a1ce93d5..6ff4a0db74e9a0f496f15b06973c9652874a3782 100644 (file)
@@ -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",
                            nid);
                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);
                spec->detect_hp = 1;
        }
@@ -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_hda_jack_detect_enable_callback(codec, nid,
                                                                    HDA_GEN_FRONT_EVENT,
+                                                                   spec->line_automute_hook ?
+                                                                   spec->line_automute_hook :
                                                                    snd_hda_gen_line_automute);
                                spec->detect_lo = 1;
                        }
@@ -2845,6 +2849,8 @@ static bool auto_mic_check_imux(struct hda_codec *codec)
                snd_hda_jack_detect_enable_callback(codec,
                                                    spec->am_entry[i].pin,
                                                    HDA_GEN_MIC_EVENT,
+                                                   spec->mic_autoswitch_hook ?
+                                                   spec->mic_autoswitch_hook :
                                                    snd_hda_gen_mic_autoswitch);
        return true;
 }
index 5c1569c6988823f555403268838ae694237bf75c..1090a524755b040876f96be2681ae32fbdc93d2a 100644 (file)
@@ -180,6 +180,14 @@ struct hda_gen_spec {
        void (*init_hook)(struct hda_codec *codec);
        void (*automute_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);