8af9fa37b8
add support for Dell privacy driver for the Dell units equipped hardware privacy design, which protect users privacy of audio and camera from hardware level. Once the audio or camera privacy mode activated, any applications will not get any audio or video stream when user pressed ctrl+F4 hotkey, audio privacy mode will be enabled, micmute led will be also changed accordingly The micmute led is fully controlled by hardware & EC(embedded controller) and camera mute hotkey is Ctrl+F9. Currently design only emits SW_CAMERA_LENS_COVER event while the camera lens shutter will be changed by EC & HW(hardware) control *The flow is like this: 1) User presses key. HW does stuff with this key (timeout timer is started) 2) WMI event is emitted from BIOS to kernel 3) WMI event is received by dell-privacy 4) KEY_MICMUTE emitted from dell-privacy 5) Userland picks up key and modifies kcontrol for SW mute 6) Codec kernel driver catches and calls ledtrig_audio_set 7) dell-privacy notifies EC, the timeout is cancelled and the HW mute is activated. If the EC is not notified then the HW mic mute will activate when the timeout triggers, just a bit later than with the active ack. Signed-off-by: Perry Yuan <perry_yuan@dell.com> Link: https://lore.kernel.org/r/20210506115605.1504-1-Perry_Yuan@Dell.com [hdegoede@redhat.com: Rework Kconfig/Makefile bits + other small fixups] Reviewed-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
37 lines
799 B
C
37 lines
799 B
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Dell privacy notification driver
|
|
*
|
|
* Copyright (C) 2021 Dell Inc. All Rights Reserved.
|
|
*/
|
|
|
|
#ifndef _DELL_PRIVACY_WMI_H_
|
|
#define _DELL_PRIVACY_WMI_H_
|
|
|
|
#if IS_ENABLED(CONFIG_DELL_WMI_PRIVACY)
|
|
bool dell_privacy_has_mic_mute(void);
|
|
bool dell_privacy_process_event(int type, int code, int status);
|
|
int dell_privacy_register_driver(void);
|
|
void dell_privacy_unregister_driver(void);
|
|
#else /* CONFIG_DELL_PRIVACY */
|
|
static inline bool dell_privacy_has_mic_mute(void)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
static inline bool dell_privacy_process_event(int type, int code, int status)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
static inline int dell_privacy_register_driver(void)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline void dell_privacy_unregister_driver(void)
|
|
{
|
|
}
|
|
#endif /* CONFIG_DELL_PRIVACY */
|
|
#endif
|