Message ID | 20220707165902.3184-1-jaschultzMS@gmail.com |
---|---|
Headers | show |
Series | Add spi-hid, transport for HID over SPI bus | expand |
Hi-- On 7/7/22 09:59, Jarrett Schultz wrote: > From: Jarrett Schultz <jaschultz@microsoft.com> > > This driver follows HID Over SPI Protocol Specification 1.0 available at > https://www.microsoft.com/en-us/download/details.aspx?id=103325. The > initial version of the driver does not support: 1) multi-fragment input > reports, 2) sending GET_INPUT and COMMAND output report types and > processing their respective acknowledge input reports, and 3) device > sleep power state. > > Signed-off-by: Dmitry Antipov <dmanti@microsoft.com> Missing your (Jarrett's) Signed-off-by: here. More below... > --- > drivers/hid/Kconfig | 2 + > drivers/hid/Makefile | 1 + > drivers/hid/spi-hid/Kconfig | 25 + > drivers/hid/spi-hid/Makefile | 12 + > drivers/hid/spi-hid/spi-hid-core.c | 1326 +++++++++++++++++++++++++++ > drivers/hid/spi-hid/spi-hid-core.h | 188 ++++ > drivers/hid/spi-hid/spi-hid-of.c | 141 +++ > drivers/hid/spi-hid/spi-hid-of.h | 30 + > drivers/hid/spi-hid/spi-hid_trace.h | 194 ++++ > drivers/hid/spi-hid/trace.c | 9 + > 10 files changed, 1928 insertions(+) > create mode 100644 drivers/hid/spi-hid/Kconfig > create mode 100644 drivers/hid/spi-hid/Makefile > create mode 100644 drivers/hid/spi-hid/spi-hid-core.c > create mode 100644 drivers/hid/spi-hid/spi-hid-core.h > create mode 100644 drivers/hid/spi-hid/spi-hid-of.c > create mode 100644 drivers/hid/spi-hid/spi-hid-of.h > create mode 100644 drivers/hid/spi-hid/spi-hid_trace.h > create mode 100644 drivers/hid/spi-hid/trace.c > > diff --git a/drivers/hid/spi-hid/Kconfig b/drivers/hid/spi-hid/Kconfig > new file mode 100644 > index 000000000000..37302d658162 > --- /dev/null > +++ b/drivers/hid/spi-hid/Kconfig > @@ -0,0 +1,25 @@ > +# > +# Copyright (c) 2021 Microsoft Corporation > +# > +# This program is free software; you can redistribute it and/or modify it > +# under the terms of the GNU General Public License version 2 as published by > +# the Free Software Foundation. > +# Please just use SPDX tags instead of all of that. See other hid/Kconfig files for examples. > +menu "SPI HID support" > + depends on SPI > + > +config SPI_HID > + tristate "HID over SPI transport layer" > + default n > + depends on SPI && INPUT && OF > + select HID > + help > + Say Y here if you use a keyboard, a touchpad, a touchscreen, or any > + other HID based devices which is connected to your computer via SPI. HID-based devices which are connected (or) HID-based device which is connected > + > + If unsure, say N. > + > + This support is also available as a module. If so, the module > + will be called spi-hid. > + > +endmenu
On 8/7/22 09:58, Jarrett Schultz <jaschultzms@gmail.com> wrote: > Surface Duo devices use a touch digitizer that communicates to the main > SoC via SPI and presents itself as a HID device. This patch's goal is to > add the spi-hid transport driver to drivers/hid. The driver follows the > publically available HID Over SPI Protocol Specification version 1.0. As far as I can tell based on the downstream code you provide in [1], your proposed driver (and v1.0 spec) is incompatible with the version used on current Surface devices (Surface Duo 1 and 2, Surface Pro X, and I assume some AMD/x86 based devices on which you also use spi-hid for the digitizer). On those, SPI_HID_SUPPORTED_VERSION is 0x0100 whereas it is 0x0300 for the driver proposed here, along with at least some protocol struct changes. Do you have any plans on supporting those devices (i.e. protocol version 0x0100) at some point? Regards, Max [1]: https://github.com/microsoft/surface-duo-oss-kernel.msm-5..4/tree/surfaceduo2/11/2022.108.8/drivers/hid/spi-hid
From: Jarrett Schultz <jaschultz@microsoft.com> Surface Duo devices use a touch digitizer that communicates to the main SoC via SPI and presents itself as a HID device. This patch's goal is to add the spi-hid transport driver to drivers/hid. The driver follows the publically available HID Over SPI Protocol Specification version 1.0. The specification is available at https://www.microsoft.com/en-us/download/details.aspx?id=103325. In the initial commits there are some HID core changes to support a SPI device, a change to HID documentation, HID over SPI Device Tree bindings, and finally the SPI HID transport driver. Dmitry Antipov (5): HID: Add BUS_SPI support when printing out device info in hid_connect() HID: define HID_SPI_DEVICE macro in hid.h dt-bindings: input: Document Microsoft G6 Touch Digitizer Documentation: Correction in HID output_report callback description. HID: add spi-hid, transport driver for HID over SPI bus Jarrett Schultz (1): Enable building drivers/hid/spi-hid as a module .../input/microsoft,g6-touch-digitizer.yaml | 135 ++ Documentation/hid/hid-transport.rst | 4 +- arch/arm64/configs/defconfig | 1 + drivers/hid/Kconfig | 2 + drivers/hid/Makefile | 1 + drivers/hid/hid-core.c | 3 + drivers/hid/spi-hid/Kconfig | 25 + drivers/hid/spi-hid/Makefile | 12 + drivers/hid/spi-hid/spi-hid-core.c | 1326 +++++++++++++++++ drivers/hid/spi-hid/spi-hid-core.h | 188 +++ drivers/hid/spi-hid/spi-hid-of.c | 141 ++ drivers/hid/spi-hid/spi-hid-of.h | 30 + drivers/hid/spi-hid/spi-hid_trace.h | 194 +++ drivers/hid/spi-hid/trace.c | 9 + include/linux/hid.h | 2 + 15 files changed, 2071 insertions(+), 2 deletions(-) create mode 100644 Documentation/devicetree/bindings/input/microsoft,g6-touch-digitizer.yaml create mode 100644 drivers/hid/spi-hid/Kconfig create mode 100644 drivers/hid/spi-hid/Makefile create mode 100644 drivers/hid/spi-hid/spi-hid-core.c create mode 100644 drivers/hid/spi-hid/spi-hid-core.h create mode 100644 drivers/hid/spi-hid/spi-hid-of.c create mode 100644 drivers/hid/spi-hid/spi-hid-of.h create mode 100644 drivers/hid/spi-hid/spi-hid_trace.h create mode 100644 drivers/hid/spi-hid/trace.c