mbox series

[v5,0/2] HID: add initial support for Goodix HID-over-SPI touchscreen

Message ID 20240618084455.1451461-1-charles.goodix@gmail.com
Headers show
Series HID: add initial support for Goodix HID-over-SPI touchscreen | expand

Message

Charles Wang June 18, 2024, 8:44 a.m. UTC
This patch introduces a new driver to support the Goodix GT7986U
touch controller. This device is not compatible with Microsoft's
HID-over-SPI protocol and therefore needs to implement its own
flavor. The data reported is packaged according to the HID
protocol but uses SPI for communication to improve speed. This
enables the device to transmit not only coordinate data but also
corresponding raw data that can be accessed by user-space programs
through the hidraw interface. The raw data can be utilized for
functions like palm rejection, thereby improving the touch experience.

Key features:
- Device connection confirmation and initialization
- IRQ-based event reporting to the input subsystem
- Support for HIDRAW operations (GET_REPORT and SET_REPORT)

Signed-off-by: Charles Wang <charles.goodix@gmail.com>
---
Changes in v5:
- Add additional descriptive information to the dt-binding file.
- Fixed build warnings reported by kernel test robot.

Changes in v4:
- Allocate memory based on the report information.
- Added a new function goodix_get_event_report() to retrieve report data,
  reducing memory copy operations and avoiding the use of reg_rw_lock.
- Add low power control operations.
- Implemented power management operations.
- Introduced GOODIX_HID_STARTED to record the current device operating state.
- Add OF match table.

Changes in v3:
- Renamed the driver file to hid-goodix-spi.c.
- Mentioned in the commit message that this implementation is not compatible with
  Microsoft's HID-over-SPI protocol.
- Modified the driver to fetch the GOODIX_HID_REPORT_ADDR from device properties.
- Add a lock to prevent concurrent hid feature request operations.
- Optimized the SPI read/write functions by reducing the number of malloc calls.

Changes in v2:
- Fixed build warnings reported by kernel test robot

---
Charles Wang (2):
  HID: hid-goodix: Add Goodix HID-over-SPI driver
  dt-bindings: input: Goodix SPI HID Touchscreen

 .../bindings/input/goodix,gt7986u.yaml        |  72 ++
 drivers/hid/Kconfig                           |   6 +
 drivers/hid/Makefile                          |   1 +
 drivers/hid/hid-goodix-spi.c                  | 811 ++++++++++++++++++
 4 files changed, 890 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/input/goodix,gt7986u.yaml
 create mode 100644 drivers/hid/hid-goodix-spi.c

Comments

Charles Wang June 24, 2024, 10:10 a.m. UTC | #1
Gentle ping...

On Tue, Jun 18, 2024 at 04:44:52PM +0800, Charles Wang wrote:
> This patch introduces a new driver to support the Goodix GT7986U
> touch controller. This device is not compatible with Microsoft's
> HID-over-SPI protocol and therefore needs to implement its own
> flavor. The data reported is packaged according to the HID
> protocol but uses SPI for communication to improve speed. This
> enables the device to transmit not only coordinate data but also
> corresponding raw data that can be accessed by user-space programs
> through the hidraw interface. The raw data can be utilized for
> functions like palm rejection, thereby improving the touch experience.
> 
> Key features:
> - Device connection confirmation and initialization
> - IRQ-based event reporting to the input subsystem
> - Support for HIDRAW operations (GET_REPORT and SET_REPORT)
> 
> Signed-off-by: Charles Wang <charles.goodix@gmail.com>
> ---
> Changes in v5:
> - Add additional descriptive information to the dt-binding file.
> - Fixed build warnings reported by kernel test robot.
> 
> Changes in v4:
> - Allocate memory based on the report information.
> - Added a new function goodix_get_event_report() to retrieve report data,
>   reducing memory copy operations and avoiding the use of reg_rw_lock.
> - Add low power control operations.
> - Implemented power management operations.
> - Introduced GOODIX_HID_STARTED to record the current device operating state.
> - Add OF match table.
> 
> Changes in v3:
> - Renamed the driver file to hid-goodix-spi.c.
> - Mentioned in the commit message that this implementation is not compatible with
>   Microsoft's HID-over-SPI protocol.
> - Modified the driver to fetch the GOODIX_HID_REPORT_ADDR from device properties.
> - Add a lock to prevent concurrent hid feature request operations.
> - Optimized the SPI read/write functions by reducing the number of malloc calls.
> 
> Changes in v2:
> - Fixed build warnings reported by kernel test robot
> 
> ---
> Charles Wang (2):
>   HID: hid-goodix: Add Goodix HID-over-SPI driver
>   dt-bindings: input: Goodix SPI HID Touchscreen
> 
>  .../bindings/input/goodix,gt7986u.yaml        |  72 ++
>  drivers/hid/Kconfig                           |   6 +
>  drivers/hid/Makefile                          |   1 +
>  drivers/hid/hid-goodix-spi.c                  | 811 ++++++++++++++++++
>  4 files changed, 890 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/input/goodix,gt7986u.yaml
>  create mode 100644 drivers/hid/hid-goodix-spi.c
> 
> -- 
> 2.43.0
> 

Thanks
Charles
Doug Anderson Aug. 8, 2024, 5:19 p.m. UTC | #2
Hi,

On Mon, Jun 24, 2024 at 3:10 AM Charles Wang <charles.goodix@gmail.com> wrote:
>
> Gentle ping...

Looks like Dmitry had some small nits on patch #1. Maybe folks are
assuming that you'll send a v6 or at least respond to him about the
nits?

-Doug
Charles Wang Aug. 13, 2024, 1:09 p.m. UTC | #3
Hi Doug,

Thank you for the reminder, and I apologize for overlooking Dmitry's
review comments. I will address his feedback and submit a v6.

On Thu, Aug 08, 2024 at 10:19:16AM -0700, Doug Anderson wrote:
> Hi,
> 
> On Mon, Jun 24, 2024 at 3:10 AM Charles Wang <charles.goodix@gmail.com> wrote:
> >
> > Gentle ping...
> 
> Looks like Dmitry had some small nits on patch #1. Maybe folks are
> assuming that you'll send a v6 or at least respond to him about the
> nits?
> 
> -Doug

Thanks again,

Charles