Message ID | 20220707165902.3184-1-jaschultzMS@gmail.com (mailing list archive) |
---|---|
Headers | show |
Series | Add spi-hid, transport for HID over SPI bus | expand |
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