// SPDX-License-Identifier: GPL-2.0 /* Helper functions for Dell Mic Mute LED control; * to be included from codec driver */ #if IS_ENABLED(CONFIG_DELL_LAPTOP) #include static int (*dell_micmute_led_set_func)(int); static void dell_micmute_update(struct hda_codec *codec) { struct hda_gen_spec *spec = codec->spec; dell_micmute_led_set_func(spec->micmute_led.led_value); } static void alc_fixup_dell_wmi(struct hda_codec *codec, const struct hda_fixup *fix, int action) { bool removefunc = false; if (action == HDA_FIXUP_ACT_PROBE) { if (!dell_micmute_led_set_func) dell_micmute_led_set_func = symbol_request(dell_micmute_led_set); if (!dell_micmute_led_set_func) { codec_warn(codec, "Failed to find dell wmi symbol dell_micmute_led_set\n"); return; } removefunc = (dell_micmute_led_set_func(false) < 0) || (snd_hda_gen_add_micmute_led(codec, dell_micmute_update) < 0); } if (dell_micmute_led_set_func && (action == HDA_FIXUP_ACT_FREE || removefunc)) { symbol_put(dell_micmute_led_set); dell_micmute_led_set_func = NULL; } } #else /* CONFIG_DELL_LAPTOP */ static void alc_fixup_dell_wmi(struct hda_codec *codec, const struct hda_fixup *fix, int action) { } #endif /* CONFIG_DELL_LAPTOP */