Skip to content
Hyungwoo Yang edited this page Feb 15, 2017 · 6 revisions

Welcome to the ipts-linux-new wiki!

IPTS(Intel Precise Touch & Stylus) is now refactored. This repo is for supporting IPTS in v4.9-rc3

  • BUILD

enable IPTS feature by adding "CONFIG_INTEL_IPTS=m" in kernel configuration.
For Chrome OS, You can do this by adding "CONFIG_INTEL_IPTS=m" in $TOP/chromeos/x86_64/common.config
There will be separate repo for Chrome OS support.

Normally you can use "make menuconfig" for platforms like Ubuntu, Fedora but they also have their own automated way of doing this. like "fakeroot debian/rules ......."

  • Preparation

** FIRMWARE

*** i915

IPTS uses GuC submission from i915 which requires GuC firmware. So please get DMC fw and GuC fw from here or here
push them into /lib/firmare/i915/
make symbolic links to the firmwares.

$ cd /lib/firmware/i915
$ ln -s skl_dmc_ver1_26.bin skl_dmc_ver1.bin <= this is needed for some kernel like v4.4.14
$ ln -s skl_guc_ver6_1.bin skl_guc_ver6.bin <= this is needed for some kernel like v4.4.14

*** IPTS

For now, IPTS requires 5 binaries. one is in this repo "/lib/firmware/intel/ipts/ipts_fw_config.bin" and you can find other 4 files in %Windir%\inf\PreciseTouch\ in Windows OS
SurfaceTouchServicingKernelSKLMSHW0078.bin
SurfaceTouchServicingSFTConfigMSHW0078.bin
SurfaceTouchServicingDescriptorMSHW0078.bin
iaPreciseTouchDescriptor.bin

create "ipts" folder under /lib/firmware/intel/, push the .bin files into the folder, and make the following symbolic links.
$ cd /lib/firmware/intel/ipts
$ ln -s iaPreciseTouchDescriptor.bin intel_desc.bin
$ ln -s SurfaceTouchServicingKernelSKLMSHW0078.bin vendor_kernel.bin
$ ln -s SurfaceTouchServicingSFTConfigMSHW0078.bin config.bin
$ ln -s SurfaceTouchServicingDescriptorMSHW0078.bin vendor_desc.bin

  • Test

Test is done with kernel 4.9-rc1 with Ubuntu 16.04

** Changing mode between single touch and multi touches

multi to single

$ echo 0 > /sys/kernel/debug/ipts/mode

sing to multi

$ echo 1 > /sys/kernel/debug/ipts/mode

  • issues

** hid-multitouch.c is not well written to support HID report from current surface pro 4. Still under debugging.

** i915 implementation is too much IPTS specific. More generic way to handle non-Linux GuC clients will be there.

** IPTS should be able to handle i915(Gfx) hang. Recover after GFX hangs.

** MEI driver doesn't support callback for fixed clients so I created kernel thread which has a loop getting message using the blocking function(mei_cldev_recv()).

** HID set feature cannot be used at early stage. Since we are getting a case that requires "HID set feature" at early stage, it will be fixed.

Clone this wiki locally