/* Helper functions for Dell Mic Mute LED control; * to be included from codec driver */ #if IS_ENABLED(CONFIG_LEDS_DELL_NETBOOKS) #include static int dell_led_value; static int (*dell_led_set_func)(int, int); static void (*dell_old_cap_hook)(struct hda_codec *, struct snd_kcontrol *, struct snd_ctl_elem_value *); static void update_dell_wmi_micmute_led(struct hda_codec *codec, struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { if (dell_old_cap_hook) dell_old_cap_hook(codec, kcontrol, ucontrol); if (!ucontrol || !dell_led_set_func) return; if (strcmp("Capture Switch", ucontrol->id.name) == 0 && ucontrol->id.index == 0) { /* TODO: How do I verify if it's a mono or stereo here? */ int val = (ucontrol->value.integer.value[0] || ucontrol->value.integer.value[1]) ? 0 : 1; if (val == dell_led_value) return; dell_led_value = val; if (dell_led_set_func) dell_led_set_func(DELL_LED_MICMUTE, dell_led_value); } } static void alc_fixup_dell_wmi(struct hda_codec *codec, const struct hda_fixup *fix, int action) { struct alc_spec *spec = codec->spec; bool removefunc = false; if (action == HDA_FIXUP_ACT_PROBE) { if (!dell_led_set_func) dell_led_set_func = symbol_request(dell_app_wmi_led_set); if (!dell_led_set_func) { codec_warn(codec, "Failed to find dell wmi symbol dell_app_wmi_led_set\n"); return; } removefunc = true; if (dell_led_set_func(DELL_LED_MICMUTE, false) >= 0) { dell_led_value = 0; if (spec->gen.num_adc_nids > 1 && !spec->gen.dyn_adc_switch) codec_dbg(codec, "Skipping micmute LED control due to several ADCs"); else { dell_old_cap_hook = spec->gen.cap_sync_hook; spec->gen.cap_sync_hook = update_dell_wmi_micmute_led; removefunc = false; } } } if (dell_led_set_func && (action == HDA_FIXUP_ACT_FREE || removefunc)) { symbol_put(dell_app_wmi_led_set); dell_led_set_func = NULL; dell_old_cap_hook = NULL; } } #else /* CONFIG_LEDS_DELL_NETBOOKS */ static void alc_fixup_dell_wmi(struct hda_codec *codec, const struct hda_fixup *fix, int action) { } #endif /* CONFIG_LEDS_DELL_NETBOOKS */ queue.h?id=be11f436a80b19cb5ef4cdfba7371a5178bd43cd&id2=d98e0929071e7ef63d35c1838b0ad0805ae366dd'>diff
path: root/include/trace/events/workqueue.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/trace/events/workqueue.h')
337c0697e669554c28b8b48c644bbaad0ffc5e'>e373e7529feef5e63af1b1e1d95b3e829b6dd71f /net/openvswitch
parentf1750e144a2f01b011bd3155fcf8b6dff299fe68 (diff)
parent3846fd9b86001bea171943cc3bb9222cb6da6b42 (diff)
Merge tag 'drm-misc-fixes-2017-01-13' of git://anongit.freedesktop.org/git/drm-misc into drm-fixes
A few more core fixes. * tag 'drm-misc-fixes-2017-01-13' of git://anongit.freedesktop.org/git/drm-misc: drm/probe-helpers: Drop locking from poll_enable drm: Fix broken VT switch with video=1366x768 option drm: Schedule the output_poll_work with 1s delay if we have delayed event
Diffstat (limited to 'net/openvswitch')