mbox series

[v5,0/6] Add spi-hid, transport for HID over SPI bus

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

Message

Jarrett Schultz July 7, 2022, 4:58 p.m. UTC
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

Comments

Maximilian Luz Aug. 9, 2022, 12:53 a.m. UTC | #1
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