1. 24 2月, 2019 2 次提交
  2. 23 2月, 2019 6 次提交
    • H
      i2c: designware: Do not allow i2c_dw_xfer() calls while suspended · 27515415
      Hans de Goede 提交于
      On most Intel Bay- and Cherry-Trail systems the PMIC is connected over I2C
      and the PMIC is accessed through various means by the _PS0 and _PS3 ACPI
      methods (power on / off methods) of various devices.
      
      This leads to suspend/resume ordering problems where a device may be
      resumed and get its _PS0 method executed before the I2C controller is
      resumed. On Cherry Trail this leads to errors like these:
      
           i2c_designware 808622C1:06: controller timed out
           ACPI Error: AE_ERROR, Returned by Handler for [UserDefinedRegion]
           ACPI Error: Method parse/execution failed \_SB.P18W._ON, AE_ERROR
           video LNXVIDEO:00: Failed to change power state to D0
      
      But on Bay Trail this caused I2C reads to seem to succeed, but they end
      up returning wrong data, which ends up getting written back by the typical
      read-modify-write cycle done to turn on various power-resources.
      
      Debugging the problems caused by this silent data corruption is quite
      nasty. This commit adds a check which disallows i2c_dw_xfer() calls to
      happen until the controller's resume method has completed.
      
      Which turns the silent data corruption into getting these errors in
      dmesg instead:
      
          i2c_designware 80860F41:04: Error i2c_dw_xfer call while suspended
          ACPI Error: AE_ERROR, Returned by Handler for [UserDefinedRegion]
          ACPI Error: Method parse/execution failed \_SB.PCI0.GFX0._PS0, AE_ERROR
      
      Which is much better.
      
      Note the above errors are an example of issues which this patch will
      help to debug, the actual fix requires fixing the suspend order and
      this has been fixed by a different commit.
      
      Note the setting / clearing of the suspended flag in the suspend / resume
      methods is NOT protected by i2c_lock_bus(). This is intentional as these
      methods get called from i2c_dw_xfer() (through pm_runtime_get/put) a nd
      i2c_dw_xfer() is called with the i2c_bus_lock held, so otherwise we would
      deadlock. This means that there is a theoretical race between a non runtime
      suspend and the suspended check in i2c_dw_xfer(), this is not a problem
      since normally we should not hit the race and this check is primarily a
      debugging tool so hitting the check if there are suspend/resume ordering
      problems does not need to be 100% reliable.
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Reviewed-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Signed-off-by: NWolfram Sang <wsa@the-dreams.de>
      27515415
    • J
      i2c: tegra: Only display error messages if DMA setup fails · 89328b1b
      Jonathan Hunter 提交于
      Commit 86c92b99 ("i2c: tegra: Add DMA support") added DMA support
      to the Tegra I2C driver for Tegra devices that support the APB DMA
      controller. One side-effect of this change is that even for Tegra
      devices that do not have an APB DMA controller and hence, cannot
      support DMA tranfers for I2C transactions, the following error messages
      are still displayed ...
      
       ERR KERN tegra-i2c 31c0000.i2c: cannot use DMA: -19
       ERR KERN tegra-i2c 31c0000.i2c: falling back to PIO
      
      There is no point displaying the above messages for devices that do not
      have an APB DMA controller and so fix this by returning from the
      tegra_i2c_init_dma() function if 'has_apb_dma' is not true.
      
      Furthermore, if CONFIG_TEGRA20_APB_DMA is not set, then rather than
      printing an error message, print an debug message as for whatever reason
      this could be intentional.
      
      Fixes: 86c92b99 ("i2c: tegra: Add DMA support")
      Signed-off-by: NJonathan Hunter <jonathanh@nvidia.com>
      Reviewed-by: NDmitry Osipenko <digetx@gmail.com>
      Acked-by: NThierry Reding <treding@nvidia.com>
      Signed-off-by: NWolfram Sang <wsa@the-dreams.de>
      89328b1b
    • W
      i2c: gpio: fault-injector: add 'inject_panic' injector · bb6bdd51
      Wolfram Sang 提交于
      Add a fault injector simulating a Kernel panic happening after starting
      a transfer. Read the docs for its usage.
      Signed-off-by: NWolfram Sang <wsa+renesas@sang-engineering.com>
      Signed-off-by: NWolfram Sang <wsa@the-dreams.de>
      bb6bdd51
    • W
      i2c: gpio: fault-injector: add 'lose_arbitration' injector · 63e57b6f
      Wolfram Sang 提交于
      Add a fault injector simulating 'arbitration lost' from multi-master
      setups. Read the docs for its usage.
      
      A helper function for future fault injectors using SCL interrupts is
      created to achieve this.
      Signed-off-by: NWolfram Sang <wsa+renesas@sang-engineering.com>
      Signed-off-by: NWolfram Sang <wsa@the-dreams.de>
      63e57b6f
    • S
      i2c: tegra: remove multi-master support · 6b9932bc
      Sowjanya Komatineni 提交于
      Multi-master support is defeatured on Tegra210 and Tegra186 due to
      known bugs.
      
      This patch removes multi-master support for Tegra210 and Tegra186
      I2C HW feature.
      Acked-by: NThierry Reding <treding@nvidia.com>
      Signed-off-by: NSowjanya Komatineni <skomatineni@nvidia.com>
      Signed-off-by: NWolfram Sang <wsa@the-dreams.de>
      6b9932bc
    • S
      i2c: tegra: remove master fifo support on tegra186 · 9ffc125c
      Sowjanya Komatineni 提交于
      Tegra186 does not have master FIFO  control register and instead
      uses FIFO control register like prior Tegra chipset.
      
      This patch fixes this and prevents crashing during boot when
      accessing FIFO control registers.
      Acked-by: NThierry Reding <treding@nvidia.com>
      Signed-off-by: NSowjanya Komatineni <skomatineni@nvidia.com>
      Signed-off-by: NWolfram Sang <wsa@the-dreams.de>
      9ffc125c
  3. 16 2月, 2019 1 次提交
  4. 15 2月, 2019 19 次提交
  5. 14 2月, 2019 4 次提交
  6. 11 2月, 2019 6 次提交
  7. 10 2月, 2019 2 次提交