Skip to content
Arda Coskunses edited this page Oct 16, 2016 · 21 revisions

Welcome to the ipts-linux wiki!

Intel Precise Touch and Stylus Technology offloads the touch signal processing to GPU and enable more computational power to support advanced algorithms.

Intel developed the HID Driver for Linux kernel for Intel Precise Touch. The development is still in progress and has not yet been up streamed. This HID Driver was developed for Linux Kernel 4.4 and above.

Kernel Compile instructions

$ make intelpt_defconfig

  • Make sure “CONFIG_INTEL_MEI_ITOUCH=m” is set, after this regular kernel compile instructions can be followed.

Installing i915 GuC FW

We need to use specific GuC FW for IPTS, this FW comes within kernel repo within the following directory:

  • ipts-linux/firmware/i915/skl_guc_ver4.bin
  • ipts-linux/firmware/i915/skl_guc_ver4_3.bin

These files should end up in rootfs in the following location:

  • /lib/firmware/i915/skl_guc_ver4.bin -> /lib/firmware/i915/skl_guc_ver4_3.bin
  • /lib/firmware/i915/skl_guc_ver4_3.bin

If above files are missing, please add them manually and link

  • ln -sf /lib/firmware/i915/skl_guc_ver4_3.bin /lib/firmware/i915/skl_guc_ver4.bin

and reboot.

Best to check kernel logs if GuC FW loaded gracefully or not.

For more information

Note: for current release we need GuC version v4.3 only. OTC website has GuC v6.1 which will not work with this kernel!!

User Space Components

Intel Precise Touch uses Touch OpenCL kernel binaries provided by Touch Vendor. They are explained below table.

  1. Descriptor.bin: A HID descriptor file provided by vendor. The HID Driver appends the panel’s HID descriptor to information.
  2. iaPreciseTouchDescriptor.bin: A HID descriptor file. A bare minimum HID descriptor descripting the device. The HID Driver appends the panel’s HID descriptor to information.
  3. KernelSKL.bin: Touch Vendor provided OpenCL kernel includes touch algorithms.
  4. SFTConfig.bin: Touch Vendor provided configuration binary.

Each Touch vendor runs different OpenCL kernels. So for different machines these files needs to be updated. On IPTS supported platforms these files can be extracted from Windows OS. These files are located in:

*%Windir%\inf\PreciseTouch*

Binary names explained above can be different on different systems but fundamentally we need these 4 files: Vendor descriptor, IA Descriptor, Vendor kernel, vendor configuration file.

Kernel will look for these user space binaries in /itouch folder under specific names.

  • /itouch/vendor_kernel_skl.bin
  • /itouch/integ_sft_cfg_skl.bin
  • /itouch/vendor_descriptor.bin
  • /itouch/integ_descriptor.bin

So to be able to try different vendor kernels using softlinks can be used as:

  • ln -sf /itouch/KernelSKL.bin /itouch/vendor_kernel_skl.bin
  • ln -sf /itouch/SFTConfig.bin /itouch/integ_sft_cfg_skl.bin
  • ln -sf /itouch/Descriptor.bin /itouch/vendor_descriptor.bin
  • ln -sf /itouch/iaPreciseTouchDescriptor.bin /itouch/integ_descriptor.bin

Open Issues

No Open issues at the moment.

Fixed issues

Previously reported screen fragmentation issue is fixed by enabling RC6 in this release. After Display off and on iTouch stops working.

With updating Mesa 11.2 or above the screen fragmentation issue cannot be reproduced.

Reporting a new issue

When you observe an issue please report it with following information:

  1. Explanation of the use case, s.a.: system was in sleep, screen was off and issue happened after I resume the system touch stopped working or I was running a graphics application and touch stopped.
  2. Please try to provide exact steps to reproduce the issue.
  3. When you have exact steps to reproduce the issue please enable IPTS debug logs:
  • in drivers/misc/itouch/itouch.h enable the following definitions

#define DEBUGITOUCH for Enable General iTouch debug

#define DEBUG_PTOUCH for Enable iTouch ME debug thread

#define DEBUG_THREAD_SLEEP 100 to specify how often the debug thread resumes, smaller number has performance impact but provides more granular data, 3000 would provide balanced information.

#define DUMP_BUF for Dump buffers if debug thread enabled

#define DUMP_BYTES_OF_BUF 128 Specifies how many bytes of buf to Dump

And try to reproduce the issue again, collect the kernel logs and include into bug report.

Note: Keep in mind debug logs can we extensive and might impact the performance.