Skip to content
Snippets Groups Projects
  1. Apr 03, 2018
  2. Dec 12, 2017
  3. Dec 07, 2017
  4. Nov 27, 2017
  5. Oct 13, 2017
  6. Jun 22, 2017
  7. Feb 09, 2017
  8. Oct 25, 2016
  9. Sep 15, 2016
  10. Aug 22, 2016
  11. Apr 26, 2016
    • Oleksij Rempel's avatar
      i2c: imx: reduce load by using usleep_range instead of udelay · 2b899f34
      Oleksij Rempel authored
      
      Documentation/timers/timers-howto.txt recommends to use
      usleep_range on delays > 10usec. According to my test results
      with Neonode zForce touchscreen driver, usleep_range indeed
      reduces CPU load.
      
      Stats collected with "./perf record -a -g -F 1000 sleep 10"
      
      i2c-imx with udelay(50):
      34.19% 0.00% irq/220-Neonode [kernel.kallsyms] [k] irq_thread
          ---irq_thread
             |--33.75%--irq_thread_fn
             |    |--19.27%--0x7f08a878
             |    |     i2c_master_recv
             |    |     i2c_transfer
             |    |     __i2c_transfer
             |    |     i2c_imx_xfer
             |    |     |--11.71%--i2c_imx_trx_complete
             |    |     |--5.70%--i2c_imx_start <<<<----------------
             |    |     |     |--5.38%--__timer_const_udelay
             |    |     |     |      __timer_delay
             |    |     |     |      --5.07%--read_current_timer
      
      i2c-imx with usleep_range(50,100)
      29.08% 0.00% irq/220-Neonode  [kernel.kallsyms] [k] irq_thread
          ---irq_thread
             |--28.89%--irq_thread_fn
             |    |--17.21%--0x7f08a878
             |    |     i2c_master_recv
             |    |     |--17.14%--i2c_transfer
             |    |     |     __i2c_transfer
             |    |     |     i2c_imx_xfer
             |    |     |     |--14.29%--i2c_imx_trx_complete
             |    |     |     |--1.42%--i2c_imx_start <<<<----------
             |    |     |     |      |--0.71%--usleep_range
             |    |     |     |      |--0.53%--i2c_imx_bus_busy
      
      Signed-off-by: default avatarOleksij Rempel <linux@rempel-privat.de>
      Signed-off-by: default avatarDirk Behme <dirk.behme@de.bosch.com>
      Reviewed-by: default avatarVladimir Zapolskiy <vladimir_zapolskiy@mentor.com>
      Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
      2b899f34
  12. Mar 03, 2016
  13. Jan 10, 2016
  14. Jan 04, 2016
  15. Jan 03, 2016
  16. Dec 09, 2015
  17. Nov 20, 2015
  18. Oct 23, 2015
  19. May 12, 2015
  20. Mar 15, 2015
  21. Jan 22, 2015
  22. Jan 14, 2015
  23. Jan 13, 2015
  24. Nov 19, 2014
  25. Nov 18, 2014
  26. Nov 10, 2014
  27. Nov 07, 2014
  28. Oct 20, 2014
  29. Oct 06, 2014
  30. Sep 29, 2014
    • Haibo Chen's avatar
      i2c: imx: Add arbitration lost check · 639a26cf
      Haibo Chen authored
      
      According to the i.mx spec, for multimaster mode, if I2C is
      enabled when the bus is busy and asserts start, hardware inhibits
      the transmission, clears MSTA without signaling a stop, generate
      an interrupt, and set I2C_I2SR[IAL] to indicate a failed attempt
      to engage the bus, which means arbitration lost. In this case,
      we should first test I2C_I2SR[IAL], and clear this bit if it is
      set, and then I2C controller default to slave receive mode.
      
      This patch check the IAL bit every time before an I2c transmission.
      if IAL is set, clear it and make I2C controller to default mode.
      
      Signed-off-by: default avatarHaibo Chen <haibo.chen@freescale.com>
      Acked-by: default avatarFugang Duan <B38611@freescale.com>
      Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
      639a26cf
  31. Aug 06, 2014
  32. Jun 02, 2014
Loading