1. 21 1月, 2013 1 次提交
    • M
      i2c: mxs: Fix misuse init_completion · 85de7fac
      Marek Vasut 提交于
      The init_completion() call does reinit not only the variable carrying
      the flag that the completion finished, but also initialized the
      waitqueue associated with the completion. On the contrary, the
      INIT_COMPLETION() call only reinits the flag.
      
      In case there was anything still stuck in the waitqueue, subsequent call
      to init_completion() would be able to create possible race condition. This
      patch uses the proper function and moves init_completion() into .probe() call
      of the driver, to be issued only once.
      
      Note that such scenario is impossible, since two threads can never enter the
      mxs_i2c_xfer_msg(), since whole this section is protected by mutex in I2C core.
      This by no means allows this issue to exit though.
      Signed-off-by: NMarek Vasut <marex@denx.de>
      Signed-off-by: NWolfram Sang <w.sang@pengutronix.de>
      85de7fac
  2. 23 12月, 2012 1 次提交
  3. 23 11月, 2012 3 次提交
  4. 02 11月, 2012 1 次提交
    • W
      i2c: mxs: remove broken PIOQUEUE support · 82fa63bd
      Wolfram Sang 提交于
      This I2C master can do DMA and PIOQUEUE (PIO with FIFO). Originally,
      only PIOQUEUE was supported and it had issues, then DMA support was added
      this cycle. The original intention was to keep PIOQUEUE since it has
      less overhead what is nice for small transfers. However, runtime
      switching between PIOQEUE and DMA depending on the transfer size never
      worked despite a lot of trying. Since PIOQUEUE mode itself was flaky
      (polling at places where interrupts failed to work) and the
      implementation also imposed a size limit for transfers, it is best to
      remove the support, so users don't fall over its limitations. It also
      makes the driver a lot cleaner and more robust. If somebody really wants
      less overhead, plain PIO mode could still be implemented with the
      addidtional advantage that this mode is also available on MX23, too.
      Signed-off-by: NWolfram Sang <w.sang@pengutronix.de>
      Reviewed-by: NMarek Vasut <marex@denx.de>
      82fa63bd
  5. 08 10月, 2012 1 次提交
  6. 12 9月, 2012 1 次提交
  7. 13 7月, 2012 1 次提交
  8. 09 7月, 2012 1 次提交
  9. 13 5月, 2012 1 次提交
  10. 12 5月, 2012 1 次提交
  11. 27 4月, 2012 1 次提交
    • W
      i2c: mxs: disable QUEUE when sending is done · 1e4f0b82
      Wolfram Sang 提交于
      Since the last fixes to this driver ensure now the queue termination is
      done correctly, we can finally disable the queue after a transfer
      without problems. The gain is that it will only be reenabled after the
      next transfer is fully set up. Before, the queue was running all the
      time and if the setup of the next message was interrupted by another
      thread, an incomplete buffer could have been sent, padded with zeroes.
      Signed-off-by: NWolfram Sang <w.sang@pengutronix.de>
      1e4f0b82
  12. 26 4月, 2012 1 次提交
  13. 21 4月, 2012 1 次提交
  14. 25 2月, 2012 1 次提交
    • W
      i2c: mxs: only flag completion when queue is completely done · 844990da
      Wolfram Sang 提交于
      The hardware generates an interrupt for every completed command in the
      queue while the code assumed that it will only generate one interrupt
      when the queue is empty. So, explicitly check if the queue is really
      empty. This patch fixed problems which occurred due to high traffic on
      the bus. While we are here, move the completion-initialization after the
      parameter error checking.
      Signed-off-by: NWolfram Sang <w.sang@pengutronix.de>
      Cc: Shawn Guo <shawn.guo@linaro.org>
      Cc: Marek Vasut <marek.vasut@gmail.com>
      Cc: Lothar Waßmann <LW@KARO-electronics.de>
      Cc: stable@kernel.org
      844990da
  15. 31 3月, 2011 1 次提交
  16. 21 3月, 2011 1 次提交
  17. 23 2月, 2011 1 次提交