Commit b05ff100 authored by Maximilian Luz's avatar Maximilian Luz Committed by Jiri Kosina
Browse files

HID: Add support for Surface Aggregator Module HID transport



Add a HID transport driver to support integrated HID devices on newer
Microsoft Surface models (specifically 7th-generation, i.e. Surface
Laptop 3, Surface Book 3, and later).

On those models, the internal keyboard and touchpad (as well as some
other HID devices with currently unknown function) are connected via the
generic HID subsystem (TC=0x15) of the Surface System Aggregator Module
(SSAM). This subsystem provides a generic HID transport layer, support
for which is implemented by this driver.

Co-developed-by: default avatarBlaž Hrastnik <blaz@mxxn.io>
Signed-off-by: default avatarBlaž Hrastnik <blaz@mxxn.io>
Signed-off-by: default avatarMaximilian Luz <luzmaximilian@gmail.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent a6ad93e3
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -11876,6 +11876,13 @@ S: Maintained
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git
F:	drivers/platform/surface/
MICROSOFT SURFACE HID TRANSPORT DRIVER
M:	Maximilian Luz <luzmaximilian@gmail.com>
L:	linux-input@vger.kernel.org
L:	platform-driver-x86@vger.kernel.org
S:	Maintained
F:	drivers/hid/surface-hid/
MICROSOFT SURFACE HOT-PLUG DRIVER
M:	Maximilian Luz <luzmaximilian@gmail.com>
L:	platform-driver-x86@vger.kernel.org
+2 −0
Original line number Diff line number Diff line
@@ -1206,4 +1206,6 @@ source "drivers/hid/intel-ish-hid/Kconfig"

source "drivers/hid/amd-sfh-hid/Kconfig"

source "drivers/hid/surface-hid/Kconfig"

endmenu
+2 −0
Original line number Diff line number Diff line
@@ -145,3 +145,5 @@ obj-$(CONFIG_INTEL_ISH_HID) += intel-ish-hid/
obj-$(INTEL_ISH_FIRMWARE_DOWNLOADER)	+= intel-ish-hid/

obj-$(CONFIG_AMD_SFH_HID)       += amd-sfh-hid/

obj-$(CONFIG_SURFACE_HID_CORE)  += surface-hid/
+28 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0+
menu "Surface System Aggregator Module HID support"
	depends on SURFACE_AGGREGATOR
	depends on INPUT

config SURFACE_HID
	tristate "HID transport driver for Surface System Aggregator Module"
	depends on SURFACE_AGGREGATOR_REGISTRY
	select SURFACE_HID_CORE
	help
	  Driver to support integrated HID devices on newer Microsoft Surface
	  models.

	  This driver provides support for the HID transport protocol provided
	  by the Surface Aggregator Module (i.e. the embedded controller) on
	  7th-generation Microsoft Surface devices, i.e. Surface Book 3 and
	  Surface Laptop 3. On those models, it is mainly used to connect the
	  integrated touchpad and keyboard.

	  Say M or Y here, if you want support for integrated HID devices, i.e.
	  integrated touchpad and keyboard, on 7th generation Microsoft Surface
	  models.

endmenu

config SURFACE_HID_CORE
	tristate
	select HID
+6 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0+
#
# Makefile - Surface System Aggregator Module (SSAM) HID transport driver.
#
obj-$(CONFIG_SURFACE_HID_CORE)	+= surface_hid_core.o
obj-$(CONFIG_SURFACE_HID)	+= surface_hid.o
Loading