mbox series

[v3,00/22] Add Intel Touch Host Controller drivers

Message ID 20241216014127.3722172-1-even.xu@intel.com (mailing list archive)
Headers show
Series Add Intel Touch Host Controller drivers | expand

Message

Xu, Even Dec. 16, 2024, 1:41 a.m. UTC
Intel Touch Host Controller (THC) is a new high performance input IP
which can benefit HID device's data transaction, such as touch screen,
touch pad, stylus.

THC IP now evoluates to V4, it can support 3 different modes: IPTS,
HIDSPI and HIDI2C. Here are upgrade history:
- THC v1, for TGL/LKF, supports intel private IPTS (Intel Precise Touch
  and Stylus) protocol ( IPTS mode)
- THC v2, for ADL, add industrial standard HID over SPI protocol support
  (HIDSPI mode)
- THC v3, for MTL, enhance HID over SPI mode
- THC v4, for LNL, add inudstrial standard HID over I2C protocol support
  (HIDI2C mode) 

Linux Surface community (https://github.com/linux-surface) already
implemented IPTS mode. These patch series provides THC HIDSPI mode and
THC HIDI2C mode support on Linux.

These patch series includes:
1. Document for THC hardware and software introduction.
2. Intel THC Hardware layer driver which provides control interfaces
   for protocol layer.
3. Intel QuickSPI (R) driver working as a HIDSPI device driver which
   implements HID over SPI protocol and flow.
4. Intel QuickI2C (R) driver working as a HIDI2C device driver which
   implements HID over I2C protocol and flow.

Change logs:
v3:
- Change tables in documents from literal block to table format
- Change symbol namespace to string literal according to patch:
  cdd30ebb1b9f ("module: Convert symbol namespace to string literal")
- Refine Kconfig description
- Enhance Quickspi and Quicki2c driver by clearing THC hardware interal
  state before doing initialization to avoid BIOS impacts.
- A fix in Quicki2c driver when does set_report

v2:
- Fix document format issues
- Add THC device IDs for Intel Panther Lake (PTL) platform


Even Xu (13):
  HID: THC: Add documentation
  HID: intel-thc-hid: intel-thc: Add THC DMA interfaces
  HID: intel-thc-hid: intel-thc: Add THC I2C config interfaces
  HID: intel-thc-hid: intel-quickspi: Add THC QuickSPI driver hid layer
  HID: intel-thc-hid: intel-quickspi: Add THC QuickSPI ACPI interfaces
  HID: intel-thc-hid: intel-quickspi: Add HIDSPI protocol implementation
  HID: intel-thc-hid: intel-quickspi: Add PM implementation
  HID: intel-thc-hid: intel-quicki2c: Add THC QuickI2C driver skeleton
  HID: intel-thc-hid: intel-quicki2c: Add THC QuickI2C driver hid layer
  HID: intel-thc-hid: intel-quicki2c: Add THC QuickI2C ACPI interfaces
  HID: intel-thc-hid: intel-quicki2c: Add HIDI2C protocol implementation
  HID: intel-thc-hid: intel-quicki2c: Complete THC QuickI2C driver
  HID: intel-thc-hid: intel-quicki2c: Add PM implementation

Xinpeng Sun (9):
  HID: intel-thc-hid: Add basic THC driver skeleton
  HID: intel-thc-hid: intel-thc: Add THC registers definition
  HID: intel-thc-hid: intel-thc: Add THC PIO operation APIs
  HID: intel-thc-hid: intel-thc: Add APIs for interrupt
  HID: intel-thc-hid: intel-thc: Add THC LTR interfaces
  HID: intel-thc-hid: intel-thc: Add THC interrupt handler
  HID: intel-thc-hid: intel-thc: Add THC SPI config interfaces
  HID: intel-thc-hid: intel-quickspi: Add THC QuickSPI driver skeleton
  HID: intel-thc-hid: intel-quickspi: Complete THC QuickSPI driver

 Documentation/hid/index.rst                   |    1 +
 Documentation/hid/intel-thc-hid.rst           |  568 ++++++
 MAINTAINERS                                   |    6 +
 drivers/hid/Kconfig                           |    2 +
 drivers/hid/Makefile                          |    2 +
 drivers/hid/intel-thc-hid/Kconfig             |   42 +
 drivers/hid/intel-thc-hid/Makefile            |   22 +
 .../intel-quicki2c/pci-quicki2c.c             |  966 ++++++++++
 .../intel-quicki2c/quicki2c-dev.h             |  186 ++
 .../intel-quicki2c/quicki2c-hid.c             |  166 ++
 .../intel-quicki2c/quicki2c-hid.h             |   14 +
 .../intel-quicki2c/quicki2c-protocol.c        |  224 +++
 .../intel-quicki2c/quicki2c-protocol.h        |   20 +
 .../intel-quickspi/pci-quickspi.c             |  987 +++++++++++
 .../intel-quickspi/quickspi-dev.h             |  172 ++
 .../intel-quickspi/quickspi-hid.c             |  165 ++
 .../intel-quickspi/quickspi-hid.h             |   14 +
 .../intel-quickspi/quickspi-protocol.c        |  409 +++++
 .../intel-quickspi/quickspi-protocol.h        |   25 +
 .../intel-thc-hid/intel-thc/intel-thc-dev.c   | 1578 +++++++++++++++++
 .../intel-thc-hid/intel-thc/intel-thc-dev.h   |  116 ++
 .../intel-thc-hid/intel-thc/intel-thc-dma.c   |  969 ++++++++++
 .../intel-thc-hid/intel-thc/intel-thc-dma.h   |  146 ++
 .../intel-thc-hid/intel-thc/intel-thc-hw.h    |  881 +++++++++
 include/linux/hid-over-i2c.h                  |  117 ++
 include/linux/hid-over-spi.h                  |  155 ++
 26 files changed, 7953 insertions(+)
 create mode 100644 Documentation/hid/intel-thc-hid.rst
 create mode 100644 drivers/hid/intel-thc-hid/Kconfig
 create mode 100644 drivers/hid/intel-thc-hid/Makefile
 create mode 100644 drivers/hid/intel-thc-hid/intel-quicki2c/pci-quicki2c.c
 create mode 100644 drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-dev.h
 create mode 100644 drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-hid.c
 create mode 100644 drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-hid.h
 create mode 100644 drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-protocol.c
 create mode 100644 drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-protocol.h
 create mode 100644 drivers/hid/intel-thc-hid/intel-quickspi/pci-quickspi.c
 create mode 100644 drivers/hid/intel-thc-hid/intel-quickspi/quickspi-dev.h
 create mode 100644 drivers/hid/intel-thc-hid/intel-quickspi/quickspi-hid.c
 create mode 100644 drivers/hid/intel-thc-hid/intel-quickspi/quickspi-hid.h
 create mode 100644 drivers/hid/intel-thc-hid/intel-quickspi/quickspi-protocol.c
 create mode 100644 drivers/hid/intel-thc-hid/intel-quickspi/quickspi-protocol.h
 create mode 100644 drivers/hid/intel-thc-hid/intel-thc/intel-thc-dev.c
 create mode 100644 drivers/hid/intel-thc-hid/intel-thc/intel-thc-dev.h
 create mode 100644 drivers/hid/intel-thc-hid/intel-thc/intel-thc-dma.c
 create mode 100644 drivers/hid/intel-thc-hid/intel-thc/intel-thc-dma.h
 create mode 100644 drivers/hid/intel-thc-hid/intel-thc/intel-thc-hw.h
 create mode 100644 include/linux/hid-over-i2c.h
 create mode 100644 include/linux/hid-over-spi.h

Comments

Mark Pearson Dec. 16, 2024, 4:44 p.m. UTC | #1
Hi,

On Sun, Dec 15, 2024, at 8:41 PM, Even Xu wrote:
> Intel Touch Host Controller (THC) is a new high performance input IP
> which can benefit HID device's data transaction, such as touch screen,
> touch pad, stylus.
>
> THC IP now evoluates to V4, it can support 3 different modes: IPTS,
> HIDSPI and HIDI2C. Here are upgrade history:
> - THC v1, for TGL/LKF, supports intel private IPTS (Intel Precise Touch
>   and Stylus) protocol ( IPTS mode)
> - THC v2, for ADL, add industrial standard HID over SPI protocol support
>   (HIDSPI mode)
> - THC v3, for MTL, enhance HID over SPI mode
> - THC v4, for LNL, add inudstrial standard HID over I2C protocol support
>   (HIDI2C mode) 
>
> Linux Surface community (https://github.com/linux-surface) already
> implemented IPTS mode. These patch series provides THC HIDSPI mode and
> THC HIDI2C mode support on Linux.
>
> These patch series includes:
> 1. Document for THC hardware and software introduction.
> 2. Intel THC Hardware layer driver which provides control interfaces
>    for protocol layer.
> 3. Intel QuickSPI (R) driver working as a HIDSPI device driver which
>    implements HID over SPI protocol and flow.
> 4. Intel QuickI2C (R) driver working as a HIDI2C device driver which
>    implements HID over I2C protocol and flow.
>
> Change logs:
> v3:
> - Change tables in documents from literal block to table format
> - Change symbol namespace to string literal according to patch:
>   cdd30ebb1b9f ("module: Convert symbol namespace to string literal")
> - Refine Kconfig description
> - Enhance Quickspi and Quicki2c driver by clearing THC hardware interal
>   state before doing initialization to avoid BIOS impacts.
> - A fix in Quicki2c driver when does set_report
>
> v2:
> - Fix document format issues
> - Add THC device IDs for Intel Panther Lake (PTL) platform
>
>
> Even Xu (13):
>   HID: THC: Add documentation
>   HID: intel-thc-hid: intel-thc: Add THC DMA interfaces
>   HID: intel-thc-hid: intel-thc: Add THC I2C config interfaces
>   HID: intel-thc-hid: intel-quickspi: Add THC QuickSPI driver hid layer
>   HID: intel-thc-hid: intel-quickspi: Add THC QuickSPI ACPI interfaces
>   HID: intel-thc-hid: intel-quickspi: Add HIDSPI protocol implementation
>   HID: intel-thc-hid: intel-quickspi: Add PM implementation
>   HID: intel-thc-hid: intel-quicki2c: Add THC QuickI2C driver skeleton
>   HID: intel-thc-hid: intel-quicki2c: Add THC QuickI2C driver hid layer
>   HID: intel-thc-hid: intel-quicki2c: Add THC QuickI2C ACPI interfaces
>   HID: intel-thc-hid: intel-quicki2c: Add HIDI2C protocol implementation
>   HID: intel-thc-hid: intel-quicki2c: Complete THC QuickI2C driver
>   HID: intel-thc-hid: intel-quicki2c: Add PM implementation
>
> Xinpeng Sun (9):
>   HID: intel-thc-hid: Add basic THC driver skeleton
>   HID: intel-thc-hid: intel-thc: Add THC registers definition
>   HID: intel-thc-hid: intel-thc: Add THC PIO operation APIs
>   HID: intel-thc-hid: intel-thc: Add APIs for interrupt
>   HID: intel-thc-hid: intel-thc: Add THC LTR interfaces
>   HID: intel-thc-hid: intel-thc: Add THC interrupt handler
>   HID: intel-thc-hid: intel-thc: Add THC SPI config interfaces
>   HID: intel-thc-hid: intel-quickspi: Add THC QuickSPI driver skeleton
>   HID: intel-thc-hid: intel-quickspi: Complete THC QuickSPI driver
>
>  Documentation/hid/index.rst                   |    1 +
>  Documentation/hid/intel-thc-hid.rst           |  568 ++++++
>  MAINTAINERS                                   |    6 +
>  drivers/hid/Kconfig                           |    2 +
>  drivers/hid/Makefile                          |    2 +
>  drivers/hid/intel-thc-hid/Kconfig             |   42 +
>  drivers/hid/intel-thc-hid/Makefile            |   22 +
>  .../intel-quicki2c/pci-quicki2c.c             |  966 ++++++++++
>  .../intel-quicki2c/quicki2c-dev.h             |  186 ++
>  .../intel-quicki2c/quicki2c-hid.c             |  166 ++
>  .../intel-quicki2c/quicki2c-hid.h             |   14 +
>  .../intel-quicki2c/quicki2c-protocol.c        |  224 +++
>  .../intel-quicki2c/quicki2c-protocol.h        |   20 +
>  .../intel-quickspi/pci-quickspi.c             |  987 +++++++++++
>  .../intel-quickspi/quickspi-dev.h             |  172 ++
>  .../intel-quickspi/quickspi-hid.c             |  165 ++
>  .../intel-quickspi/quickspi-hid.h             |   14 +
>  .../intel-quickspi/quickspi-protocol.c        |  409 +++++
>  .../intel-quickspi/quickspi-protocol.h        |   25 +
>  .../intel-thc-hid/intel-thc/intel-thc-dev.c   | 1578 +++++++++++++++++
>  .../intel-thc-hid/intel-thc/intel-thc-dev.h   |  116 ++
>  .../intel-thc-hid/intel-thc/intel-thc-dma.c   |  969 ++++++++++
>  .../intel-thc-hid/intel-thc/intel-thc-dma.h   |  146 ++
>  .../intel-thc-hid/intel-thc/intel-thc-hw.h    |  881 +++++++++
>  include/linux/hid-over-i2c.h                  |  117 ++
>  include/linux/hid-over-spi.h                  |  155 ++
>  26 files changed, 7953 insertions(+)
>  create mode 100644 Documentation/hid/intel-thc-hid.rst
>  create mode 100644 drivers/hid/intel-thc-hid/Kconfig
>  create mode 100644 drivers/hid/intel-thc-hid/Makefile
>  create mode 100644 drivers/hid/intel-thc-hid/intel-quicki2c/pci-quicki2c.c
>  create mode 100644 drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-dev.h
>  create mode 100644 drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-hid.c
>  create mode 100644 drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-hid.h
>  create mode 100644 drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-protocol.c
>  create mode 100644 drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-protocol.h
>  create mode 100644 drivers/hid/intel-thc-hid/intel-quickspi/pci-quickspi.c
>  create mode 100644 drivers/hid/intel-thc-hid/intel-quickspi/quickspi-dev.h
>  create mode 100644 drivers/hid/intel-thc-hid/intel-quickspi/quickspi-hid.c
>  create mode 100644 drivers/hid/intel-thc-hid/intel-quickspi/quickspi-hid.h
>  create mode 100644 drivers/hid/intel-thc-hid/intel-quickspi/quickspi-protocol.c
>  create mode 100644 drivers/hid/intel-thc-hid/intel-quickspi/quickspi-protocol.h
>  create mode 100644 drivers/hid/intel-thc-hid/intel-thc/intel-thc-dev.c
>  create mode 100644 drivers/hid/intel-thc-hid/intel-thc/intel-thc-dev.h
>  create mode 100644 drivers/hid/intel-thc-hid/intel-thc/intel-thc-dma.c
>  create mode 100644 drivers/hid/intel-thc-hid/intel-thc/intel-thc-dma.h
>  create mode 100644 drivers/hid/intel-thc-hid/intel-thc/intel-thc-hw.h
>  create mode 100644 include/linux/hid-over-i2c.h
>  create mode 100644 include/linux/hid-over-spi.h
>
> -- 
> 2.40.1

For the series:

Tested on a 'to be announced' Lenovo Lunarlake laptop that uses the THC controller and confirmed it worked well. The platform under test is using the quicki2c driver.
Tested touchpad and touchscreen and didn't see any issues.

Tested-by: Mark Pearson <mpearson-lenovo@squebb.ca>

Of limited value, as I don't know the hid subsystem well, I did do a code review and it looked good to me (only minor notes are typo 'recevie' on patch 6 commit description and 'calcualte' on patch 7 commit description).

Reviewed-by: Mark Pearson <mpearson-lenovo@squebb.ca>

Thanks!
Mark
Xu, Even Dec. 17, 2024, 1:30 a.m. UTC | #2
> -----Original Message-----
> From: Mark Pearson <mpearson-lenovo@squebb.ca>
> Sent: Tuesday, December 17, 2024 12:45 AM
> To: Xu, Even <even.xu@intel.com>; Jiri Kosina <jikos@kernel.org>;
> bentiss@kernel.org; Jonathan Corbet <corbet@lwn.net>;
> bagasdotme@gmail.com; Aaron, Ma <aaron.ma@canonical.com>; Randy Dunlap
> <rdunlap@infradead.org>
> Cc: linux-input@vger.kernel.org; linux-kernel@vger.kernel.org; linux-
> doc@vger.kernel.org
> Subject: Re: [PATCH v3 00/22] Add Intel Touch Host Controller drivers
> 
> Hi,
> 
> On Sun, Dec 15, 2024, at 8:41 PM, Even Xu wrote:
> > Intel Touch Host Controller (THC) is a new high performance input IP
> > which can benefit HID device's data transaction, such as touch screen,
> > touch pad, stylus.
> >
> > THC IP now evoluates to V4, it can support 3 different modes: IPTS,
> > HIDSPI and HIDI2C. Here are upgrade history:
> > - THC v1, for TGL/LKF, supports intel private IPTS (Intel Precise Touch
> >   and Stylus) protocol ( IPTS mode)
> > - THC v2, for ADL, add industrial standard HID over SPI protocol support
> >   (HIDSPI mode)
> > - THC v3, for MTL, enhance HID over SPI mode
> > - THC v4, for LNL, add inudstrial standard HID over I2C protocol support
> >   (HIDI2C mode)
> >
> > Linux Surface community (https://github.com/linux-surface) already
> > implemented IPTS mode. These patch series provides THC HIDSPI mode and
> > THC HIDI2C mode support on Linux.
> >
> > These patch series includes:
> > 1. Document for THC hardware and software introduction.
> > 2. Intel THC Hardware layer driver which provides control interfaces
> >    for protocol layer.
> > 3. Intel QuickSPI (R) driver working as a HIDSPI device driver which
> >    implements HID over SPI protocol and flow.
> > 4. Intel QuickI2C (R) driver working as a HIDI2C device driver which
> >    implements HID over I2C protocol and flow.
> >
> > Change logs:
> > v3:
> > - Change tables in documents from literal block to table format
> > - Change symbol namespace to string literal according to patch:
> >   cdd30ebb1b9f ("module: Convert symbol namespace to string literal")
> > - Refine Kconfig description
> > - Enhance Quickspi and Quicki2c driver by clearing THC hardware interal
> >   state before doing initialization to avoid BIOS impacts.
> > - A fix in Quicki2c driver when does set_report
> >
> > v2:
> > - Fix document format issues
> > - Add THC device IDs for Intel Panther Lake (PTL) platform
> >
> >
> > Even Xu (13):
> >   HID: THC: Add documentation
> >   HID: intel-thc-hid: intel-thc: Add THC DMA interfaces
> >   HID: intel-thc-hid: intel-thc: Add THC I2C config interfaces
> >   HID: intel-thc-hid: intel-quickspi: Add THC QuickSPI driver hid layer
> >   HID: intel-thc-hid: intel-quickspi: Add THC QuickSPI ACPI interfaces
> >   HID: intel-thc-hid: intel-quickspi: Add HIDSPI protocol implementation
> >   HID: intel-thc-hid: intel-quickspi: Add PM implementation
> >   HID: intel-thc-hid: intel-quicki2c: Add THC QuickI2C driver skeleton
> >   HID: intel-thc-hid: intel-quicki2c: Add THC QuickI2C driver hid layer
> >   HID: intel-thc-hid: intel-quicki2c: Add THC QuickI2C ACPI interfaces
> >   HID: intel-thc-hid: intel-quicki2c: Add HIDI2C protocol implementation
> >   HID: intel-thc-hid: intel-quicki2c: Complete THC QuickI2C driver
> >   HID: intel-thc-hid: intel-quicki2c: Add PM implementation
> >
> > Xinpeng Sun (9):
> >   HID: intel-thc-hid: Add basic THC driver skeleton
> >   HID: intel-thc-hid: intel-thc: Add THC registers definition
> >   HID: intel-thc-hid: intel-thc: Add THC PIO operation APIs
> >   HID: intel-thc-hid: intel-thc: Add APIs for interrupt
> >   HID: intel-thc-hid: intel-thc: Add THC LTR interfaces
> >   HID: intel-thc-hid: intel-thc: Add THC interrupt handler
> >   HID: intel-thc-hid: intel-thc: Add THC SPI config interfaces
> >   HID: intel-thc-hid: intel-quickspi: Add THC QuickSPI driver skeleton
> >   HID: intel-thc-hid: intel-quickspi: Complete THC QuickSPI driver
> >
> >  Documentation/hid/index.rst                   |    1 +
> >  Documentation/hid/intel-thc-hid.rst           |  568 ++++++
> >  MAINTAINERS                                   |    6 +
> >  drivers/hid/Kconfig                           |    2 +
> >  drivers/hid/Makefile                          |    2 +
> >  drivers/hid/intel-thc-hid/Kconfig             |   42 +
> >  drivers/hid/intel-thc-hid/Makefile            |   22 +
> >  .../intel-quicki2c/pci-quicki2c.c             |  966 ++++++++++
> >  .../intel-quicki2c/quicki2c-dev.h             |  186 ++
> >  .../intel-quicki2c/quicki2c-hid.c             |  166 ++
> >  .../intel-quicki2c/quicki2c-hid.h             |   14 +
> >  .../intel-quicki2c/quicki2c-protocol.c        |  224 +++
> >  .../intel-quicki2c/quicki2c-protocol.h        |   20 +
> >  .../intel-quickspi/pci-quickspi.c             |  987 +++++++++++
> >  .../intel-quickspi/quickspi-dev.h             |  172 ++
> >  .../intel-quickspi/quickspi-hid.c             |  165 ++
> >  .../intel-quickspi/quickspi-hid.h             |   14 +
> >  .../intel-quickspi/quickspi-protocol.c        |  409 +++++
> >  .../intel-quickspi/quickspi-protocol.h        |   25 +
> >  .../intel-thc-hid/intel-thc/intel-thc-dev.c   | 1578 +++++++++++++++++
> >  .../intel-thc-hid/intel-thc/intel-thc-dev.h   |  116 ++
> >  .../intel-thc-hid/intel-thc/intel-thc-dma.c   |  969 ++++++++++
> >  .../intel-thc-hid/intel-thc/intel-thc-dma.h   |  146 ++
> >  .../intel-thc-hid/intel-thc/intel-thc-hw.h    |  881 +++++++++
> >  include/linux/hid-over-i2c.h                  |  117 ++
> >  include/linux/hid-over-spi.h                  |  155 ++
> >  26 files changed, 7953 insertions(+)
> >  create mode 100644 Documentation/hid/intel-thc-hid.rst
> >  create mode 100644 drivers/hid/intel-thc-hid/Kconfig  create mode
> > 100644 drivers/hid/intel-thc-hid/Makefile
> >  create mode 100644
> > drivers/hid/intel-thc-hid/intel-quicki2c/pci-quicki2c.c
> >  create mode 100644
> > drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-dev.h
> >  create mode 100644
> > drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-hid.c
> >  create mode 100644
> > drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-hid.h
> >  create mode 100644
> > drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-protocol.c
> >  create mode 100644
> > drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-protocol.h
> >  create mode 100644
> > drivers/hid/intel-thc-hid/intel-quickspi/pci-quickspi.c
> >  create mode 100644
> > drivers/hid/intel-thc-hid/intel-quickspi/quickspi-dev.h
> >  create mode 100644
> > drivers/hid/intel-thc-hid/intel-quickspi/quickspi-hid.c
> >  create mode 100644
> > drivers/hid/intel-thc-hid/intel-quickspi/quickspi-hid.h
> >  create mode 100644
> > drivers/hid/intel-thc-hid/intel-quickspi/quickspi-protocol.c
> >  create mode 100644
> > drivers/hid/intel-thc-hid/intel-quickspi/quickspi-protocol.h
> >  create mode 100644
> > drivers/hid/intel-thc-hid/intel-thc/intel-thc-dev.c
> >  create mode 100644
> > drivers/hid/intel-thc-hid/intel-thc/intel-thc-dev.h
> >  create mode 100644
> > drivers/hid/intel-thc-hid/intel-thc/intel-thc-dma.c
> >  create mode 100644
> > drivers/hid/intel-thc-hid/intel-thc/intel-thc-dma.h
> >  create mode 100644 drivers/hid/intel-thc-hid/intel-thc/intel-thc-hw.h
> >  create mode 100644 include/linux/hid-over-i2c.h  create mode 100644
> > include/linux/hid-over-spi.h
> >
> > --
> > 2.40.1
> 
> For the series:
> 
> Tested on a 'to be announced' Lenovo Lunarlake laptop that uses the THC
> controller and confirmed it worked well. The platform under test is using the
> quicki2c driver.
> Tested touchpad and touchscreen and didn't see any issues.
> 
> Tested-by: Mark Pearson <mpearson-lenovo@squebb.ca>

Thanks Mark for testing, will add your "Tested-by" in next version.

> 
> Of limited value, as I don't know the hid subsystem well, I did do a code review
> and it looked good to me (only minor notes are typo 'recevie' on patch 6 commit
> description and 'calcualte' on patch 7 commit description).
> 
> Reviewed-by: Mark Pearson <mpearson-lenovo@squebb.ca>

Thanks for the review, will fix them.

> 
> Thanks!
> Mark
Aaron Ma Dec. 17, 2024, 7:32 a.m. UTC | #3
On 12/17/24 2:58 PM, Xu, Even wrote:
> Hi, Aaron,
> 
> Thanks for testing!
> 
> It’s not a driver error, it just means driver detected a touch device error (Touch device report an unexpected RESET Response).
> 
> I also met the same issue during test, it usually happens during enumeration flow.
> 
> If user keep touching the screen before/during driver do device initialization, it will happen.
> 

During the booting, no touching.
It still repeats this error when driver is loading.

After system bootup and in idle, every single touch will report this error.

Aaron

> In general, Touch devices will self recover from this error, it will not impact normal touch function.
> 
> Thanks!
> 
> Best Regards,
> 
> Even Xu
> 
> *From:*Aaron Ma <aaron.ma@canonical.com>
> *Sent:* Tuesday, December 17, 2024 2:47 PM
> *To:* Xu, Even <even.xu@intel.com>; jikos@kernel.org; bentiss@kernel.org; corbet@lwn.net; bagasdotme@gmail.com; rdunlap@infradead.org
> *Cc:* linux-input@vger.kernel.org; linux-kernel@vger.kernel.org; linux-doc@vger.kernel.org
> *Subject:* Re: [PATCH v3 00/22] Add Intel Touch Host Controller drivers
> 
> Hi Even,
> 
> Tested on 6.13-rc3, there is an error repeated when using touchscreen:
> 
> intel_quicki2c 0000:00:10.0: *unexpected DIR happen*
> 
> The device info:
> [    3.013613] input: quicki2c-hid 27C6:012D Touchscreen as /devices/pci0000:00/0000:00:10.0/000
> 1:27C6:012D.0001/input/input6
> [    3.013763] input: quicki2c-hid 27C6:012D as /devices/pci0000:00/0000:00:10.0/0001:27C6:012D.
> 0001/input/input7
> [    3.013894] hid-generic 0001:27C6:012D.0001: input,hidraw0: <UNKNOWN> HID v8.65 Device [quick
> i2c-hid 27C6:012D] on
> 
> 
> Aaron
> 
> On 12/16/24 9:41 AM, Even Xu wrote:
> 
>     Intel Touch Host Controller (THC) is a new high performance input IP
> 
>     which can benefit HID device's data transaction, such as touch screen,
> 
>     touch pad, stylus.
> 
>     THC IP now evoluates to V4, it can support 3 different modes: IPTS,
> 
>     HIDSPI and HIDI2C. Here are upgrade history:
> 
>     - THC v1, for TGL/LKF, supports intel private IPTS (Intel Precise Touch
> 
>        and Stylus) protocol ( IPTS mode)
> 
>     - THC v2, for ADL, add industrial standard HID over SPI protocol support
> 
>        (HIDSPI mode)
> 
>     - THC v3, for MTL, enhance HID over SPI mode
> 
>     - THC v4, for LNL, add inudstrial standard HID over I2C protocol support
> 
>        (HIDI2C mode)
> 
>     Linux Surface community (https://github.com/linux-surface <https://github.com/linux-surface>) already
> 
>     implemented IPTS mode. These patch series provides THC HIDSPI mode and
> 
>     THC HIDI2C mode support on Linux.
> 
>     These patch series includes:
> 
>     1. Document for THC hardware and software introduction.
> 
>     2. Intel THC Hardware layer driver which provides control interfaces
> 
>         for protocol layer.
> 
>     3. Intel QuickSPI (R) driver working as a HIDSPI device driver which
> 
>         implements HID over SPI protocol and flow.
> 
>     4. Intel QuickI2C (R) driver working as a HIDI2C device driver which
> 
>         implements HID over I2C protocol and flow.
> 
>     Change logs:
> 
>     v3:
> 
>     - Change tables in documents from literal block to table format
> 
>     - Change symbol namespace to string literal according to patch:
> 
>        cdd30ebb1b9f ("module: Convert symbol namespace to string literal")
> 
>     - Refine Kconfig description
> 
>     - Enhance Quickspi and Quicki2c driver by clearing THC hardware interal
> 
>        state before doing initialization to avoid BIOS impacts.
> 
>     - A fix in Quicki2c driver when does set_report
> 
>     v2:
> 
>     - Fix document format issues
> 
>     - Add THC device IDs for Intel Panther Lake (PTL) platform
> 
>     Even Xu (13):
> 
>        HID: THC: Add documentation
> 
>        HID: intel-thc-hid: intel-thc: Add THC DMA interfaces
> 
>        HID: intel-thc-hid: intel-thc: Add THC I2C config interfaces
> 
>        HID: intel-thc-hid: intel-quickspi: Add THC QuickSPI driver hid layer
> 
>        HID: intel-thc-hid: intel-quickspi: Add THC QuickSPI ACPI interfaces
> 
>        HID: intel-thc-hid: intel-quickspi: Add HIDSPI protocol implementation
> 
>        HID: intel-thc-hid: intel-quickspi: Add PM implementation
> 
>        HID: intel-thc-hid: intel-quicki2c: Add THC QuickI2C driver skeleton
> 
>        HID: intel-thc-hid: intel-quicki2c: Add THC QuickI2C driver hid layer
> 
>        HID: intel-thc-hid: intel-quicki2c: Add THC QuickI2C ACPI interfaces
> 
>        HID: intel-thc-hid: intel-quicki2c: Add HIDI2C protocol implementation
> 
>        HID: intel-thc-hid: intel-quicki2c: Complete THC QuickI2C driver
> 
>        HID: intel-thc-hid: intel-quicki2c: Add PM implementation
> 
>     Xinpeng Sun (9):
> 
>        HID: intel-thc-hid: Add basic THC driver skeleton
> 
>        HID: intel-thc-hid: intel-thc: Add THC registers definition
> 
>        HID: intel-thc-hid: intel-thc: Add THC PIO operation APIs
> 
>        HID: intel-thc-hid: intel-thc: Add APIs for interrupt
> 
>        HID: intel-thc-hid: intel-thc: Add THC LTR interfaces
> 
>        HID: intel-thc-hid: intel-thc: Add THC interrupt handler
> 
>        HID: intel-thc-hid: intel-thc: Add THC SPI config interfaces
> 
>        HID: intel-thc-hid: intel-quickspi: Add THC QuickSPI driver skeleton
> 
>        HID: intel-thc-hid: intel-quickspi: Complete THC QuickSPI driver
> 
>       Documentation/hid/index.rst                   |    1 +
> 
>       Documentation/hid/intel-thc-hid.rst           |  568 ++++++
> 
>       MAINTAINERS                                   |    6 +
> 
>       drivers/hid/Kconfig                           |    2 +
> 
>       drivers/hid/Makefile                          |    2 +
> 
>       drivers/hid/intel-thc-hid/Kconfig             |   42 +
> 
>       drivers/hid/intel-thc-hid/Makefile            |   22 +
> 
>       .../intel-quicki2c/pci-quicki2c.c             |  966 ++++++++++
> 
>       .../intel-quicki2c/quicki2c-dev.h             |  186 ++
> 
>       .../intel-quicki2c/quicki2c-hid.c             |  166 ++
> 
>       .../intel-quicki2c/quicki2c-hid.h             |   14 +
> 
>       .../intel-quicki2c/quicki2c-protocol.c        |  224 +++
> 
>       .../intel-quicki2c/quicki2c-protocol.h        |   20 +
> 
>       .../intel-quickspi/pci-quickspi.c             |  987 +++++++++++
> 
>       .../intel-quickspi/quickspi-dev.h             |  172 ++
> 
>       .../intel-quickspi/quickspi-hid.c             |  165 ++
> 
>       .../intel-quickspi/quickspi-hid.h             |   14 +
> 
>       .../intel-quickspi/quickspi-protocol.c        |  409 +++++
> 
>       .../intel-quickspi/quickspi-protocol.h        |   25 +
> 
>       .../intel-thc-hid/intel-thc/intel-thc-dev.c   | 1578 +++++++++++++++++
> 
>       .../intel-thc-hid/intel-thc/intel-thc-dev.h   |  116 ++
> 
>       .../intel-thc-hid/intel-thc/intel-thc-dma.c   |  969 ++++++++++
> 
>       .../intel-thc-hid/intel-thc/intel-thc-dma.h   |  146 ++
> 
>       .../intel-thc-hid/intel-thc/intel-thc-hw.h    |  881 +++++++++
> 
>       include/linux/hid-over-i2c.h                  |  117 ++
> 
>       include/linux/hid-over-spi.h                  |  155 ++
> 
>       26 files changed, 7953 insertions(+)
> 
>       create mode 100644 Documentation/hid/intel-thc-hid.rst
> 
>       create mode 100644 drivers/hid/intel-thc-hid/Kconfig
> 
>       create mode 100644 drivers/hid/intel-thc-hid/Makefile
> 
>       create mode 100644 drivers/hid/intel-thc-hid/intel-quicki2c/pci-quicki2c.c
> 
>       create mode 100644 drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-dev.h
> 
>       create mode 100644 drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-hid.c
> 
>       create mode 100644 drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-hid.h
> 
>       create mode 100644 drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-protocol.c
> 
>       create mode 100644 drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-protocol.h
> 
>       create mode 100644 drivers/hid/intel-thc-hid/intel-quickspi/pci-quickspi.c
> 
>       create mode 100644 drivers/hid/intel-thc-hid/intel-quickspi/quickspi-dev.h
> 
>       create mode 100644 drivers/hid/intel-thc-hid/intel-quickspi/quickspi-hid.c
> 
>       create mode 100644 drivers/hid/intel-thc-hid/intel-quickspi/quickspi-hid.h
> 
>       create mode 100644 drivers/hid/intel-thc-hid/intel-quickspi/quickspi-protocol.c
> 
>       create mode 100644 drivers/hid/intel-thc-hid/intel-quickspi/quickspi-protocol.h
> 
>       create mode 100644 drivers/hid/intel-thc-hid/intel-thc/intel-thc-dev.c
> 
>       create mode 100644 drivers/hid/intel-thc-hid/intel-thc/intel-thc-dev.h
> 
>       create mode 100644 drivers/hid/intel-thc-hid/intel-thc/intel-thc-dma.c
> 
>       create mode 100644 drivers/hid/intel-thc-hid/intel-thc/intel-thc-dma.h
> 
>       create mode 100644 drivers/hid/intel-thc-hid/intel-thc/intel-thc-hw.h
> 
>       create mode 100644 include/linux/hid-over-i2c.h
> 
>       create mode 100644 include/linux/hid-over-spi.h
>
Xu, Even Dec. 17, 2024, 8:06 a.m. UTC | #4
> -----Original Message-----
> From: Aaron Ma <aaron.ma@canonical.com>
> Sent: Tuesday, December 17, 2024 3:33 PM
> To: Xu, Even <even.xu@intel.com>; jikos@kernel.org; bentiss@kernel.org;
> corbet@lwn.net; bagasdotme@gmail.com; rdunlap@infradead.org
> Cc: linux-input@vger.kernel.org; linux-kernel@vger.kernel.org; linux-
> doc@vger.kernel.org
> Subject: Re: [PATCH v3 00/22] Add Intel Touch Host Controller drivers
> 
> 
> 
> On 12/17/24 2:58 PM, Xu, Even wrote:
> > Hi, Aaron,
> >
> > Thanks for testing!
> >
> > It’s not a driver error, it just means driver detected a touch device error (Touch
> device report an unexpected RESET Response).
> >
> > I also met the same issue during test, it usually happens during enumeration
> flow.
> >
> > If user keep touching the screen before/during driver do device initialization, it
> will happen.
> >
> 
> During the booting, no touching.
> It still repeats this error when driver is loading.
> 
> After system bootup and in idle, every single touch will report this error.
> 
> Aaron

Interesting!
That's the new issue I never met.

Is touch function abnormal (I mean the single touch)?

Best Regards,
Even Xu

> 
> > In general, Touch devices will self recover from this error, it will not impact
> normal touch function.
> >
> > Thanks!
> >
> > Best Regards,
> >
> > Even Xu
> >
> > *From:*Aaron Ma <aaron.ma@canonical.com>
> > *Sent:* Tuesday, December 17, 2024 2:47 PM
> > *To:* Xu, Even <even.xu@intel.com>; jikos@kernel.org;
> > bentiss@kernel.org; corbet@lwn.net; bagasdotme@gmail.com;
> > rdunlap@infradead.org
> > *Cc:* linux-input@vger.kernel.org; linux-kernel@vger.kernel.org;
> > linux-doc@vger.kernel.org
> > *Subject:* Re: [PATCH v3 00/22] Add Intel Touch Host Controller
> > drivers
> >
> > Hi Even,
> >
> > Tested on 6.13-rc3, there is an error repeated when using touchscreen:
> >
> > intel_quicki2c 0000:00:10.0: *unexpected DIR happen*
> >
> > The device info:
> > [    3.013613] input: quicki2c-hid 27C6:012D Touchscreen as
> > /devices/pci0000:00/0000:00:10.0/000
> > 1:27C6:012D.0001/input/input6
> > [    3.013763] input: quicki2c-hid 27C6:012D as
> /devices/pci0000:00/0000:00:10.0/0001:27C6:012D.
> > 0001/input/input7
> > [    3.013894] hid-generic 0001:27C6:012D.0001: input,hidraw0:
> > <UNKNOWN> HID v8.65 Device [quick i2c-hid 27C6:012D] on
> >
> >
> > Aaron
> >
> > On 12/16/24 9:41 AM, Even Xu wrote:
> >
> >     Intel Touch Host Controller (THC) is a new high performance input
> > IP
> >
> >     which can benefit HID device's data transaction, such as touch
> > screen,
> >
> >     touch pad, stylus.
> >
> >     THC IP now evoluates to V4, it can support 3 different modes:
> > IPTS,
> >
> >     HIDSPI and HIDI2C. Here are upgrade history:
> >
> >     - THC v1, for TGL/LKF, supports intel private IPTS (Intel Precise
> > Touch
> >
> >        and Stylus) protocol ( IPTS mode)
> >
> >     - THC v2, for ADL, add industrial standard HID over SPI protocol
> > support
> >
> >        (HIDSPI mode)
> >
> >     - THC v3, for MTL, enhance HID over SPI mode
> >
> >     - THC v4, for LNL, add inudstrial standard HID over I2C protocol
> > support
> >
> >        (HIDI2C mode)
> >
> >     Linux Surface community (https://github.com/linux-surface
> > <https://github.com/linux-surface>) already
> >
> >     implemented IPTS mode. These patch series provides THC HIDSPI mode
> > and
> >
> >     THC HIDI2C mode support on Linux.
> >
> >     These patch series includes:
> >
> >     1. Document for THC hardware and software introduction.
> >
> >     2. Intel THC Hardware layer driver which provides control
> > interfaces
> >
> >         for protocol layer.
> >
> >     3. Intel QuickSPI (R) driver working as a HIDSPI device driver
> > which
> >
> >         implements HID over SPI protocol and flow.
> >
> >     4. Intel QuickI2C (R) driver working as a HIDI2C device driver
> > which
> >
> >         implements HID over I2C protocol and flow.
> >
> >     Change logs:
> >
> >     v3:
> >
> >     - Change tables in documents from literal block to table format
> >
> >     - Change symbol namespace to string literal according to patch:
> >
> >        cdd30ebb1b9f ("module: Convert symbol namespace to string
> > literal")
> >
> >     - Refine Kconfig description
> >
> >     - Enhance Quickspi and Quicki2c driver by clearing THC hardware
> > interal
> >
> >        state before doing initialization to avoid BIOS impacts.
> >
> >     - A fix in Quicki2c driver when does set_report
> >
> >     v2:
> >
> >     - Fix document format issues
> >
> >     - Add THC device IDs for Intel Panther Lake (PTL) platform
> >
> >     Even Xu (13):
> >
> >        HID: THC: Add documentation
> >
> >        HID: intel-thc-hid: intel-thc: Add THC DMA interfaces
> >
> >        HID: intel-thc-hid: intel-thc: Add THC I2C config interfaces
> >
> >        HID: intel-thc-hid: intel-quickspi: Add THC QuickSPI driver hid
> > layer
> >
> >        HID: intel-thc-hid: intel-quickspi: Add THC QuickSPI ACPI
> > interfaces
> >
> >        HID: intel-thc-hid: intel-quickspi: Add HIDSPI protocol
> > implementation
> >
> >        HID: intel-thc-hid: intel-quickspi: Add PM implementation
> >
> >        HID: intel-thc-hid: intel-quicki2c: Add THC QuickI2C driver
> > skeleton
> >
> >        HID: intel-thc-hid: intel-quicki2c: Add THC QuickI2C driver hid
> > layer
> >
> >        HID: intel-thc-hid: intel-quicki2c: Add THC QuickI2C ACPI
> > interfaces
> >
> >        HID: intel-thc-hid: intel-quicki2c: Add HIDI2C protocol
> > implementation
> >
> >        HID: intel-thc-hid: intel-quicki2c: Complete THC QuickI2C
> > driver
> >
> >        HID: intel-thc-hid: intel-quicki2c: Add PM implementation
> >
> >     Xinpeng Sun (9):
> >
> >        HID: intel-thc-hid: Add basic THC driver skeleton
> >
> >        HID: intel-thc-hid: intel-thc: Add THC registers definition
> >
> >        HID: intel-thc-hid: intel-thc: Add THC PIO operation APIs
> >
> >        HID: intel-thc-hid: intel-thc: Add APIs for interrupt
> >
> >        HID: intel-thc-hid: intel-thc: Add THC LTR interfaces
> >
> >        HID: intel-thc-hid: intel-thc: Add THC interrupt handler
> >
> >        HID: intel-thc-hid: intel-thc: Add THC SPI config interfaces
> >
> >        HID: intel-thc-hid: intel-quickspi: Add THC QuickSPI driver
> > skeleton
> >
> >        HID: intel-thc-hid: intel-quickspi: Complete THC QuickSPI
> > driver
> >
> >       Documentation/hid/index.rst                   |    1 +
> >
> >       Documentation/hid/intel-thc-hid.rst           |  568 ++++++
> >
> >       MAINTAINERS                                   |    6 +
> >
> >       drivers/hid/Kconfig                           |    2 +
> >
> >       drivers/hid/Makefile                          |    2 +
> >
> >       drivers/hid/intel-thc-hid/Kconfig             |   42 +
> >
> >       drivers/hid/intel-thc-hid/Makefile            |   22 +
> >
> >       .../intel-quicki2c/pci-quicki2c.c             |  966 ++++++++++
> >
> >       .../intel-quicki2c/quicki2c-dev.h             |  186 ++
> >
> >       .../intel-quicki2c/quicki2c-hid.c             |  166 ++
> >
> >       .../intel-quicki2c/quicki2c-hid.h             |   14 +
> >
> >       .../intel-quicki2c/quicki2c-protocol.c        |  224 +++
> >
> >       .../intel-quicki2c/quicki2c-protocol.h        |   20 +
> >
> >       .../intel-quickspi/pci-quickspi.c             |  987 +++++++++++
> >
> >       .../intel-quickspi/quickspi-dev.h             |  172 ++
> >
> >       .../intel-quickspi/quickspi-hid.c             |  165 ++
> >
> >       .../intel-quickspi/quickspi-hid.h             |   14 +
> >
> >       .../intel-quickspi/quickspi-protocol.c        |  409 +++++
> >
> >       .../intel-quickspi/quickspi-protocol.h        |   25 +
> >
> >       .../intel-thc-hid/intel-thc/intel-thc-dev.c   | 1578
> > +++++++++++++++++
> >
> >       .../intel-thc-hid/intel-thc/intel-thc-dev.h   |  116 ++
> >
> >       .../intel-thc-hid/intel-thc/intel-thc-dma.c   |  969 ++++++++++
> >
> >       .../intel-thc-hid/intel-thc/intel-thc-dma.h   |  146 ++
> >
> >       .../intel-thc-hid/intel-thc/intel-thc-hw.h    |  881 +++++++++
> >
> >       include/linux/hid-over-i2c.h                  |  117 ++
> >
> >       include/linux/hid-over-spi.h                  |  155 ++
> >
> >       26 files changed, 7953 insertions(+)
> >
> >       create mode 100644 Documentation/hid/intel-thc-hid.rst
> >
> >       create mode 100644 drivers/hid/intel-thc-hid/Kconfig
> >
> >       create mode 100644 drivers/hid/intel-thc-hid/Makefile
> >
> >       create mode 100644
> > drivers/hid/intel-thc-hid/intel-quicki2c/pci-quicki2c.c
> >
> >       create mode 100644
> > drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-dev.h
> >
> >       create mode 100644
> > drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-hid.c
> >
> >       create mode 100644
> > drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-hid.h
> >
> >       create mode 100644
> > drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-protocol.c
> >
> >       create mode 100644
> > drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-protocol.h
> >
> >       create mode 100644
> > drivers/hid/intel-thc-hid/intel-quickspi/pci-quickspi.c
> >
> >       create mode 100644
> > drivers/hid/intel-thc-hid/intel-quickspi/quickspi-dev.h
> >
> >       create mode 100644
> > drivers/hid/intel-thc-hid/intel-quickspi/quickspi-hid.c
> >
> >       create mode 100644
> > drivers/hid/intel-thc-hid/intel-quickspi/quickspi-hid.h
> >
> >       create mode 100644
> > drivers/hid/intel-thc-hid/intel-quickspi/quickspi-protocol.c
> >
> >       create mode 100644
> > drivers/hid/intel-thc-hid/intel-quickspi/quickspi-protocol.h
> >
> >       create mode 100644
> > drivers/hid/intel-thc-hid/intel-thc/intel-thc-dev.c
> >
> >       create mode 100644
> > drivers/hid/intel-thc-hid/intel-thc/intel-thc-dev.h
> >
> >       create mode 100644
> > drivers/hid/intel-thc-hid/intel-thc/intel-thc-dma.c
> >
> >       create mode 100644
> > drivers/hid/intel-thc-hid/intel-thc/intel-thc-dma.h
> >
> >       create mode 100644
> > drivers/hid/intel-thc-hid/intel-thc/intel-thc-hw.h
> >
> >       create mode 100644 include/linux/hid-over-i2c.h
> >
> >       create mode 100644 include/linux/hid-over-spi.h
> >
Aaron Ma Dec. 17, 2024, 8:52 a.m. UTC | #5
On 12/17/24 4:06 PM, Xu, Even wrote:
> 
>> -----Original Message-----
>> From: Aaron Ma <aaron.ma@canonical.com>
>> Sent: Tuesday, December 17, 2024 3:33 PM
>> To: Xu, Even <even.xu@intel.com>; jikos@kernel.org; bentiss@kernel.org;
>> corbet@lwn.net; bagasdotme@gmail.com; rdunlap@infradead.org
>> Cc: linux-input@vger.kernel.org; linux-kernel@vger.kernel.org; linux-
>> doc@vger.kernel.org
>> Subject: Re: [PATCH v3 00/22] Add Intel Touch Host Controller drivers
>>
>>
>>
>> On 12/17/24 2:58 PM, Xu, Even wrote:
>>> Hi, Aaron,
>>>
>>> Thanks for testing!
>>>
>>> It’s not a driver error, it just means driver detected a touch device error (Touch
>> device report an unexpected RESET Response).
>>>
>>> I also met the same issue during test, it usually happens during enumeration
>> flow.
>>>
>>> If user keep touching the screen before/during driver do device initialization, it
>> will happen.
>>>
>>
>> During the booting, no touching.
>> It still repeats this error when driver is loading.
>>
>> After system bootup and in idle, every single touch will report this error.
>>
>> Aaron
> 
> Interesting!
> That's the new issue I never met.
> 
> Is touch function abnormal (I mean the single touch)?
> 

Touchscreen function works.
One touch will cause 10 times of this error.

Aaron

> Best Regards,
> Even Xu
> 
>>
>>> In general, Touch devices will self recover from this error, it will not impact
>> normal touch function.
>>>
>>> Thanks!
>>>
>>> Best Regards,
>>>
>>> Even Xu
>>>
>>> *From:*Aaron Ma <aaron.ma@canonical.com>
>>> *Sent:* Tuesday, December 17, 2024 2:47 PM
>>> *To:* Xu, Even <even.xu@intel.com>; jikos@kernel.org;
>>> bentiss@kernel.org; corbet@lwn.net; bagasdotme@gmail.com;
>>> rdunlap@infradead.org
>>> *Cc:* linux-input@vger.kernel.org; linux-kernel@vger.kernel.org;
>>> linux-doc@vger.kernel.org
>>> *Subject:* Re: [PATCH v3 00/22] Add Intel Touch Host Controller
>>> drivers
>>>
>>> Hi Even,
>>>
>>> Tested on 6.13-rc3, there is an error repeated when using touchscreen:
>>>
>>> intel_quicki2c 0000:00:10.0: *unexpected DIR happen*
>>>
>>> The device info:
>>> [    3.013613] input: quicki2c-hid 27C6:012D Touchscreen as
>>> /devices/pci0000:00/0000:00:10.0/000
>>> 1:27C6:012D.0001/input/input6
>>> [    3.013763] input: quicki2c-hid 27C6:012D as
>> /devices/pci0000:00/0000:00:10.0/0001:27C6:012D.
>>> 0001/input/input7
>>> [    3.013894] hid-generic 0001:27C6:012D.0001: input,hidraw0:
>>> <UNKNOWN> HID v8.65 Device [quick i2c-hid 27C6:012D] on
>>>
>>>
>>> Aaron
>>>
>>> On 12/16/24 9:41 AM, Even Xu wrote:
>>>
>>>      Intel Touch Host Controller (THC) is a new high performance input
>>> IP
>>>
>>>      which can benefit HID device's data transaction, such as touch
>>> screen,
>>>
>>>      touch pad, stylus.
>>>
>>>      THC IP now evoluates to V4, it can support 3 different modes:
>>> IPTS,
>>>
>>>      HIDSPI and HIDI2C. Here are upgrade history:
>>>
>>>      - THC v1, for TGL/LKF, supports intel private IPTS (Intel Precise
>>> Touch
>>>
>>>         and Stylus) protocol ( IPTS mode)
>>>
>>>      - THC v2, for ADL, add industrial standard HID over SPI protocol
>>> support
>>>
>>>         (HIDSPI mode)
>>>
>>>      - THC v3, for MTL, enhance HID over SPI mode
>>>
>>>      - THC v4, for LNL, add inudstrial standard HID over I2C protocol
>>> support
>>>
>>>         (HIDI2C mode)
>>>
>>>      Linux Surface community (https://github.com/linux-surface
>>> <https://github.com/linux-surface>) already
>>>
>>>      implemented IPTS mode. These patch series provides THC HIDSPI mode
>>> and
>>>
>>>      THC HIDI2C mode support on Linux.
>>>
>>>      These patch series includes:
>>>
>>>      1. Document for THC hardware and software introduction.
>>>
>>>      2. Intel THC Hardware layer driver which provides control
>>> interfaces
>>>
>>>          for protocol layer.
>>>
>>>      3. Intel QuickSPI (R) driver working as a HIDSPI device driver
>>> which
>>>
>>>          implements HID over SPI protocol and flow.
>>>
>>>      4. Intel QuickI2C (R) driver working as a HIDI2C device driver
>>> which
>>>
>>>          implements HID over I2C protocol and flow.
>>>
>>>      Change logs:
>>>
>>>      v3:
>>>
>>>      - Change tables in documents from literal block to table format
>>>
>>>      - Change symbol namespace to string literal according to patch:
>>>
>>>         cdd30ebb1b9f ("module: Convert symbol namespace to string
>>> literal")
>>>
>>>      - Refine Kconfig description
>>>
>>>      - Enhance Quickspi and Quicki2c driver by clearing THC hardware
>>> interal
>>>
>>>         state before doing initialization to avoid BIOS impacts.
>>>
>>>      - A fix in Quicki2c driver when does set_report
>>>
>>>      v2:
>>>
>>>      - Fix document format issues
>>>
>>>      - Add THC device IDs for Intel Panther Lake (PTL) platform
>>>
>>>      Even Xu (13):
>>>
>>>         HID: THC: Add documentation
>>>
>>>         HID: intel-thc-hid: intel-thc: Add THC DMA interfaces
>>>
>>>         HID: intel-thc-hid: intel-thc: Add THC I2C config interfaces
>>>
>>>         HID: intel-thc-hid: intel-quickspi: Add THC QuickSPI driver hid
>>> layer
>>>
>>>         HID: intel-thc-hid: intel-quickspi: Add THC QuickSPI ACPI
>>> interfaces
>>>
>>>         HID: intel-thc-hid: intel-quickspi: Add HIDSPI protocol
>>> implementation
>>>
>>>         HID: intel-thc-hid: intel-quickspi: Add PM implementation
>>>
>>>         HID: intel-thc-hid: intel-quicki2c: Add THC QuickI2C driver
>>> skeleton
>>>
>>>         HID: intel-thc-hid: intel-quicki2c: Add THC QuickI2C driver hid
>>> layer
>>>
>>>         HID: intel-thc-hid: intel-quicki2c: Add THC QuickI2C ACPI
>>> interfaces
>>>
>>>         HID: intel-thc-hid: intel-quicki2c: Add HIDI2C protocol
>>> implementation
>>>
>>>         HID: intel-thc-hid: intel-quicki2c: Complete THC QuickI2C
>>> driver
>>>
>>>         HID: intel-thc-hid: intel-quicki2c: Add PM implementation
>>>
>>>      Xinpeng Sun (9):
>>>
>>>         HID: intel-thc-hid: Add basic THC driver skeleton
>>>
>>>         HID: intel-thc-hid: intel-thc: Add THC registers definition
>>>
>>>         HID: intel-thc-hid: intel-thc: Add THC PIO operation APIs
>>>
>>>         HID: intel-thc-hid: intel-thc: Add APIs for interrupt
>>>
>>>         HID: intel-thc-hid: intel-thc: Add THC LTR interfaces
>>>
>>>         HID: intel-thc-hid: intel-thc: Add THC interrupt handler
>>>
>>>         HID: intel-thc-hid: intel-thc: Add THC SPI config interfaces
>>>
>>>         HID: intel-thc-hid: intel-quickspi: Add THC QuickSPI driver
>>> skeleton
>>>
>>>         HID: intel-thc-hid: intel-quickspi: Complete THC QuickSPI
>>> driver
>>>
>>>        Documentation/hid/index.rst                   |    1 +
>>>
>>>        Documentation/hid/intel-thc-hid.rst           |  568 ++++++
>>>
>>>        MAINTAINERS                                   |    6 +
>>>
>>>        drivers/hid/Kconfig                           |    2 +
>>>
>>>        drivers/hid/Makefile                          |    2 +
>>>
>>>        drivers/hid/intel-thc-hid/Kconfig             |   42 +
>>>
>>>        drivers/hid/intel-thc-hid/Makefile            |   22 +
>>>
>>>        .../intel-quicki2c/pci-quicki2c.c             |  966 ++++++++++
>>>
>>>        .../intel-quicki2c/quicki2c-dev.h             |  186 ++
>>>
>>>        .../intel-quicki2c/quicki2c-hid.c             |  166 ++
>>>
>>>        .../intel-quicki2c/quicki2c-hid.h             |   14 +
>>>
>>>        .../intel-quicki2c/quicki2c-protocol.c        |  224 +++
>>>
>>>        .../intel-quicki2c/quicki2c-protocol.h        |   20 +
>>>
>>>        .../intel-quickspi/pci-quickspi.c             |  987 +++++++++++
>>>
>>>        .../intel-quickspi/quickspi-dev.h             |  172 ++
>>>
>>>        .../intel-quickspi/quickspi-hid.c             |  165 ++
>>>
>>>        .../intel-quickspi/quickspi-hid.h             |   14 +
>>>
>>>        .../intel-quickspi/quickspi-protocol.c        |  409 +++++
>>>
>>>        .../intel-quickspi/quickspi-protocol.h        |   25 +
>>>
>>>        .../intel-thc-hid/intel-thc/intel-thc-dev.c   | 1578
>>> +++++++++++++++++
>>>
>>>        .../intel-thc-hid/intel-thc/intel-thc-dev.h   |  116 ++
>>>
>>>        .../intel-thc-hid/intel-thc/intel-thc-dma.c   |  969 ++++++++++
>>>
>>>        .../intel-thc-hid/intel-thc/intel-thc-dma.h   |  146 ++
>>>
>>>        .../intel-thc-hid/intel-thc/intel-thc-hw.h    |  881 +++++++++
>>>
>>>        include/linux/hid-over-i2c.h                  |  117 ++
>>>
>>>        include/linux/hid-over-spi.h                  |  155 ++
>>>
>>>        26 files changed, 7953 insertions(+)
>>>
>>>        create mode 100644 Documentation/hid/intel-thc-hid.rst
>>>
>>>        create mode 100644 drivers/hid/intel-thc-hid/Kconfig
>>>
>>>        create mode 100644 drivers/hid/intel-thc-hid/Makefile
>>>
>>>        create mode 100644
>>> drivers/hid/intel-thc-hid/intel-quicki2c/pci-quicki2c.c
>>>
>>>        create mode 100644
>>> drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-dev.h
>>>
>>>        create mode 100644
>>> drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-hid.c
>>>
>>>        create mode 100644
>>> drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-hid.h
>>>
>>>        create mode 100644
>>> drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-protocol.c
>>>
>>>        create mode 100644
>>> drivers/hid/intel-thc-hid/intel-quicki2c/quicki2c-protocol.h
>>>
>>>        create mode 100644
>>> drivers/hid/intel-thc-hid/intel-quickspi/pci-quickspi.c
>>>
>>>        create mode 100644
>>> drivers/hid/intel-thc-hid/intel-quickspi/quickspi-dev.h
>>>
>>>        create mode 100644
>>> drivers/hid/intel-thc-hid/intel-quickspi/quickspi-hid.c
>>>
>>>        create mode 100644
>>> drivers/hid/intel-thc-hid/intel-quickspi/quickspi-hid.h
>>>
>>>        create mode 100644
>>> drivers/hid/intel-thc-hid/intel-quickspi/quickspi-protocol.c
>>>
>>>        create mode 100644
>>> drivers/hid/intel-thc-hid/intel-quickspi/quickspi-protocol.h
>>>
>>>        create mode 100644
>>> drivers/hid/intel-thc-hid/intel-thc/intel-thc-dev.c
>>>
>>>        create mode 100644
>>> drivers/hid/intel-thc-hid/intel-thc/intel-thc-dev.h
>>>
>>>        create mode 100644
>>> drivers/hid/intel-thc-hid/intel-thc/intel-thc-dma.c
>>>
>>>        create mode 100644
>>> drivers/hid/intel-thc-hid/intel-thc/intel-thc-dma.h
>>>
>>>        create mode 100644
>>> drivers/hid/intel-thc-hid/intel-thc/intel-thc-hw.h
>>>
>>>        create mode 100644 include/linux/hid-over-i2c.h
>>>
>>>        create mode 100644 include/linux/hid-over-spi.h
>>>
>