Skip to content

Commit

Permalink
Merge branch 'for-6.12/goodix-spi' into for-linus
Browse files Browse the repository at this point in the history
- Add support for a new Goodix HID over SPI driver (Charles Wang)

Note: this driver doesn't rely on the spefication of HID over SPI
provided by Microsoft, thus needs a separate driver, not a generic bus
transport low level driver.
  • Loading branch information
Benjamin Tissoires committed Sep 13, 2024
2 parents 1a811ed + 252ed1f commit fe9c624
Show file tree
Hide file tree
Showing 4 changed files with 896 additions and 0 deletions.
71 changes: 71 additions & 0 deletions Documentation/devicetree/bindings/input/goodix,gt7986u.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/input/goodix,gt7986u.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: GOODIX GT7986U SPI HID Touchscreen

maintainers:
- Charles Wang <charles.goodix@gmail.com>

description: Supports the Goodix GT7986U touchscreen.
This touch controller reports data packaged according to the HID protocol,
but is incompatible with Microsoft's HID-over-SPI protocol.

allOf:
- $ref: /schemas/spi/spi-peripheral-props.yaml#

properties:
compatible:
enum:
- goodix,gt7986u

reg:
maxItems: 1

interrupts:
maxItems: 1

reset-gpios:
maxItems: 1

goodix,hid-report-addr:
$ref: /schemas/types.yaml#/definitions/uint32
description:
The register address for retrieving HID report data.
This address is related to the device firmware and may
change after a firmware update.

spi-max-frequency: true

additionalProperties: false

required:
- compatible
- reg
- interrupts
- reset-gpios
- goodix,hid-report-addr

examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/gpio/gpio.h>
spi {
#address-cells = <1>;
#size-cells = <0>;
touchscreen@0 {
compatible = "goodix,gt7986u";
reg = <0>;
interrupt-parent = <&gpio>;
interrupts = <25 IRQ_TYPE_LEVEL_LOW>;
reset-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
spi-max-frequency = <10000000>;
goodix,hid-report-addr = <0x22c8c>;
};
};
...
6 changes: 6 additions & 0 deletions drivers/hid/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -404,6 +404,12 @@ config HID_VIVALDI_COMMON
option so that drivers can use common code to parse the HID
descriptors for vivaldi function row keymap.

config HID_GOODIX_SPI
tristate "Goodix GT7986U SPI HID touchscreen"
depends on SPI_MASTER
help
Support for Goodix GT7986U SPI HID touchscreen device.

config HID_GOOGLE_HAMMER
tristate "Google Hammer Keyboard"
select HID_VIVALDI_COMMON
Expand Down
1 change: 1 addition & 0 deletions drivers/hid/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ obj-$(CONFIG_HID_GEMBIRD) += hid-gembird.o
obj-$(CONFIG_HID_GFRM) += hid-gfrm.o
obj-$(CONFIG_HID_GLORIOUS) += hid-glorious.o
obj-$(CONFIG_HID_VIVALDI_COMMON) += hid-vivaldi-common.o
obj-$(CONFIG_HID_GOODIX_SPI) += hid-goodix-spi.o
obj-$(CONFIG_HID_GOOGLE_HAMMER) += hid-google-hammer.o
obj-$(CONFIG_HID_GOOGLE_STADIA_FF) += hid-google-stadiaff.o
obj-$(CONFIG_HID_VIVALDI) += hid-vivaldi.o
Expand Down
Loading

0 comments on commit fe9c624

Please sign in to comment.