OSDN Git Service

platform/x86: dell-privacy: Add support for Dell hardware privacy
authorPerry Yuan <perry_yuan@dell.com>
Thu, 6 May 2021 11:56:05 +0000 (19:56 +0800)
committerHans de Goede <hdegoede@redhat.com>
Wed, 16 Jun 2021 15:47:51 +0000 (17:47 +0200)
commit8af9fa37b8a3637832cbf8fdd9bd828bd5f0de66
tree47d0395edbec8c34ffe09fb158106caeba991528
parent8bf388a0a0fe257dd7be9db0352b5b71b4e9138a
platform/x86: dell-privacy: Add support for Dell hardware privacy

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>
Documentation/ABI/testing/sysfs-platform-dell-privacy-wmi [new file with mode: 0644]
MAINTAINERS
drivers/platform/x86/dell/Kconfig
drivers/platform/x86/dell/Makefile
drivers/platform/x86/dell/dell-laptop.c
drivers/platform/x86/dell/dell-wmi-base.c
drivers/platform/x86/dell/dell-wmi-privacy.c [new file with mode: 0644]
drivers/platform/x86/dell/dell-wmi-privacy.h [new file with mode: 0644]