-
Notifications
You must be signed in to change notification settings - Fork 5
Home
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.