• Mika Westerberg's avatar
    i2c: designware: Do not use parameters from ACPI on Dell Inspiron 7348 · 9f964e99
    Mika Westerberg authored
    commit 56d4b8a2 upstream.
    
    ACPI SSCN/FMCN methods were originally added because then the platform can
    provide the most accurate HCNT/LCNT values to the driver. However, this
    seems not to be true for Dell Inspiron 7348 where using these causes the
    touchpad to fail in boot:
    
      i2c_hid i2c-DLL0675:00: failed to retrieve report from device.
      i2c_designware INT3433:00: i2c_dw_handle_tx_abort: lost arbitration
      i2c_hid i2c-DLL0675:00: failed to retrieve report from device.
      i2c_designware INT3433:00: controller timed out
    
    The values received from ACPI are (in fast mode):
    
      HCNT: 72
      LCNT: 160
    
    this translates to following timings (input clock is 100MHz on Broadwell):
    
      tHIGH: 720 ns (spec min 600 ns)
      tLOW: 1600 ns (spec min 1300 ns)
      Bus period: 2920 ns (assuming 300 ns tf and tr)
      Bus speed: 342.5 kHz
    
    Both tHIGH and tLOW are within the I2C specification.
    
    The calculated values when ACPI parameters are not used are (in fast mode):
    
      HCNT: 87
      LCNT: 159
    
    which translates to:
    
      tHIGH: 870 ns (spec min 600 ns)
      tLOW: 1590 ns (spec min 1300 ns)
      Bus period 3060 ns (assuming 300 ns tf and tr)
      Bus speed 326.8 kHz
    
    These values are also within the I2C specification.
    
    Since both ACPI and calculated values meet the I2C specification timing
    requirements it is hard to say why the touchpad does not function properly
    with the ACPI values except that the bus speed is higher in this case (but
    still well below the max 400kHz).
    
    Solve this by adding DMI quirk to the driver that disables using ACPI
    parameters on this particulare machine.
    Reported-by: default avatarPavel Roskin <plroskin@gmail.com>
    Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    Tested-by: default avatarPavel Roskin <plroskin@gmail.com>
    Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
    Signed-off-by: default avatarLuis Henriques <luis.henriques@canonical.com>
    9f964e99
i2c-designware-platdrv.c 8.33 KB