Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -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;
}
+8 −0
Original line number Diff line number Diff line
@@ -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);