[Vivid][PULL] backport of skylake i2c driver

Jesse Sung jesse.sung at canonical.com
Fri Sep 4 09:01:10 UTC 2015


BugLink: https://launchpad.net/bugs/1488395

Some newly released laptops talk to touchpad via I2C to provide
advanced functions. The new Intel Skylake uses Sunrisepoint PCH, thus
the I2C on it needs to be enabled in order to support these touchpads.

The driver supports SPI, UART, and I2C on the Sunrisepoint PCH, but we
only focus on the I2C part. All of these commits except 2a3d404 and
259a8b5 are quite self-contained.

Tests was done with two different Skylake systems (one with ELAN i2c
touchpad, and the other with Synaptics), and other randomly picked
AMD, IvyBridge, Haswell, and Broadwell systems.

Each of them went through 30 reboots, and see if every hardware
components, especially touchpad, still work after each boot.

Skylake1 (ELAN - i2c) : Passed (Failed once *1)
Skylake2 (Synaptics - i2c) : Passed
AMD (Cypress - PS/2) : Passed
IvyBridge (Synaptics - PS/2) : Passed
Haswell (Synaptics - I2C) : Passed
Broadwell (ALPS - PS/2) : Passed

*1
When this happns, i2c_hid failed to communicate with touchpad. Thus
touchpad still worked as a PS/2 mouse.
[ 11.858424] i2c_hid i2c-DLL06FD:01: hid_descr_cmd failed
Touchpad switched to i2c mode after reloading i2c_hid.
[ 402.635558] i2c_hid i2c-DLL06FD:01: error in i2c_hid_init_report
size:633 / ret_size:7
[ 402.638143] i2c_hid i2c-DLL06FD:01: error in i2c_hid_init_report
size:69 / ret_size:7
[ 402.648983] input: DLL06FD:01 04F3:300F UNKNOWN as
/devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-4/i2c




The following changes since commit a40c74aabfbf47d504f3168cde843036a40aee93:

  UBUNTU: Ubuntu-3.19.0-27.29 (2015-08-14 13:55:47 -0700)

are available in the git repository at:

  git://kernel.ubuntu.com/jesse/ubuntu-vivid.git i2c-spt-wo-dma64

for you to fetch changes up to 715ae8844a154b6e834762f41183be0dcc72b85a:

  UBUNTU: [Config]
MFD_INTEL_LPSS/MFD_INTEL_LPSS_ACPI/MFD_INTEL_LPSS_PCI=m (2015-08-25
16:57:36 +0800)

----------------------------------------------------------------
Andy Shevchenko (4):
      klist: implement klist_prev()
      driver core: implement device_for_each_child_reverse()
      mfd: make mfd_remove_devices() iterate in reverse order
      mfd: Add support for Intel Sunrisepoint LPSS devices

Mika Westerberg (2):
      PM / QoS: Make it possible to expose device latency tolerance to userspace
      ACPI / PM: Attach ACPI power domain only once

Rafael J. Wysocki (1):
      Driver core: wakeup the parent device before trying probe

Wen-chien Jesse Sung (1):
      UBUNTU: [Config] MFD_INTEL_LPSS/MFD_INTEL_LPSS_ACPI/MFD_INTEL_LPSS_PCI=m

 debian.master/config/config.common.ubuntu |   3 +
 drivers/acpi/device_pm.c                  |   8 +++
 drivers/acpi/internal.h                   |   2 +
 drivers/acpi/scan.c                       |  44 +++++++++-----
 drivers/base/core.c                       |  43 ++++++++++++++
 drivers/base/dd.c                         |  15 +++++
 drivers/base/power/power.h                |   2 +
 drivers/base/power/qos.c                  |  37 ++++++++++++
 drivers/base/power/sysfs.c                |  11 ++++
 drivers/mfd/Kconfig                       |  23 ++++++++
 drivers/mfd/Makefile                      |   3 +
 drivers/mfd/intel-lpss-acpi.c             |  84 ++++++++++++++++++++++++++
 drivers/mfd/intel-lpss-pci.c              | 113
+++++++++++++++++++++++++++++++++++
 drivers/mfd/intel-lpss.c                  | 525
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 drivers/mfd/intel-lpss.h                  |  62 ++++++++++++++++++++
 drivers/mfd/mfd-core.c                    |   2 +-
 include/linux/device.h                    |   2 +
 include/linux/klist.h                     |   1 +
 include/linux/pm_qos.h                    |   5 ++
 lib/klist.c                               |  41 +++++++++++++
 20 files changed, 1011 insertions(+), 15 deletions(-)
 create mode 100644 drivers/mfd/intel-lpss-acpi.c
 create mode 100644 drivers/mfd/intel-lpss-pci.c
 create mode 100644 drivers/mfd/intel-lpss.c
 create mode 100644 drivers/mfd/intel-lpss.h




More information about the kernel-team mailing list