1. 27 3月, 2010 2 次提交
    • L
      DMAENGINE: generic channel status v2 · 07934481
      Linus Walleij 提交于
      Convert the device_is_tx_complete() operation on the
      DMA engine to a generic device_tx_status()operation which
      can return three states, DMA_TX_RUNNING, DMA_TX_COMPLETE,
      DMA_TX_PAUSED.
      
      [dan.j.williams@intel.com: update for timberdale]
      Signed-off-by: NLinus Walleij <linus.walleij@stericsson.com>
      Acked-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      Cc: Maciej Sosnowski <maciej.sosnowski@intel.com>
      Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
      Cc: Pavel Machek <pavel@ucw.cz>
      Cc: Li Yang <leoli@freescale.com>
      Cc: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
      Cc: Magnus Damm <damm@opensource.se>
      Cc: Liam Girdwood <lrg@slimlogic.co.uk>
      Cc: Joe Perches <joe@perches.com>
      Cc: Roland Dreier <rdreier@cisco.com>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      07934481
    • L
      DMAENGINE: generic slave control v2 · c3635c78
      Linus Walleij 提交于
      Convert the device_terminate_all() operation on the
      DMA engine to a generic device_control() operation
      which can now optionally support also pausing and
      resuming DMA on a certain channel. Implemented for the
      COH 901 318 DMAC as an example.
      
      [dan.j.williams@intel.com: update for timberdale]
      Signed-off-by: NLinus Walleij <linus.walleij@stericsson.com>
      Acked-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      Cc: Maciej Sosnowski <maciej.sosnowski@intel.com>
      Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
      Cc: Pavel Machek <pavel@ucw.cz>
      Cc: Li Yang <leoli@freescale.com>
      Cc: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
      Cc: Magnus Damm <damm@opensource.se>
      Cc: Liam Girdwood <lrg@slimlogic.co.uk>
      Cc: Joe Perches <joe@perches.com>
      Cc: Roland Dreier <rdreier@cisco.com>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      c3635c78
  2. 01 3月, 2010 2 次提交
  3. 03 2月, 2010 9 次提交
  4. 09 9月, 2009 3 次提交
  5. 23 7月, 2009 1 次提交
  6. 17 6月, 2009 3 次提交
  7. 28 5月, 2009 1 次提交
    • K
      fsldma: Fix compile warnings · b787f2e2
      Kumar Gala 提交于
      We we build with dma_addr_t as a 64-bit quantity we get:
      
      drivers/dma/fsldma.c: In function 'fsl_chan_xfer_ld_queue':
      drivers/dma/fsldma.c:625: warning: cast to pointer from integer of different size
      drivers/dma/fsldma.c: In function 'fsl_dma_chan_do_interrupt':
      drivers/dma/fsldma.c:737: warning: cast to pointer from integer of different size
      drivers/dma/fsldma.c:737: warning: cast to pointer from integer of different size
      drivers/dma/fsldma.c: In function 'of_fsl_dma_probe':
      drivers/dma/fsldma.c:927: warning: cast to pointer from integer of different
      Signed-off-by: NKumar Gala <galak@kernel.crashing.org>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      b787f2e2
  8. 22 5月, 2009 5 次提交
    • I
      fsldma: fix memory leak on error path in fsl_dma_prep_memcpy() · 2e077f8e
      Ira Snyder 提交于
      When preparing a memcpy operation, if the kernel fails to allocate memory
      for a link descriptor after the first link descriptor has already been
      allocated, then some memory will never be released. Fix the problem by
      walking the list of allocated descriptors backwards, and freeing the
      allocated descriptors back into the DMA pool.
      Signed-off-by: NIra W. Snyder <iws@ovro.caltech.edu>
      Signed-off-by: NLi Yang <leoli@freescale.com>
      2e077f8e
    • I
      fsldma: snooping is not enabled for last entry in descriptor chain · 776c8943
      Ira Snyder 提交于
      On the 83xx controller, snooping is necessary for the DMA controller to
      ensure cache coherence with the CPU when transferring to/from RAM.
      
      The last descriptor in a chain will always have the End-of-Chain interrupt
      bit set, so we can set the snoop bit while adding the End-of-Chain
      interrupt bit.
      Signed-off-by: NIra W. Snyder <iws@ovro.caltech.edu>
      Signed-off-by: NLi Yang <leoli@freescale.com>
      776c8943
    • I
      fsldma: fix infinite loop on multi-descriptor DMA chain completion · bcfb7465
      Ira Snyder 提交于
      When creating a DMA transaction with multiple descriptors, the async_tx
      cookie is set to 0 for each descriptor in the chain, excluding the last
      descriptor, whose cookie is set to -EBUSY.
      
      When fsl_dma_tx_submit() is run, it only assigns a cookie to the first
      descriptor. All of the remaining descriptors keep their original value,
      including the last descriptor, which is set to -EBUSY.
      
      After the DMA completes, the driver will update the last completed cookie
      to be -EBUSY, which is an error code instead of a valid cookie. This causes
      dma_async_is_complete() to always return DMA_IN_PROGRESS.
      
      This causes the fsldma driver to never cleanup the queue of link
      descriptors, and the driver will re-run the DMA transaction on the hardware
      each time it receives the End-of-Chain interrupt. This causes an infinite
      loop.
      
      With this patch, fsl_dma_tx_submit() is changed to assign a cookie to every
      descriptor in the chain. The rest of the code then works without problems.
      Signed-off-by: NIra W. Snyder <iws@ovro.caltech.edu>
      Signed-off-by: NLi Yang <leoli@freescale.com>
      bcfb7465
    • I
      fsldma: fix "DMA halt timeout!" errors · 138ef018
      Ira Snyder 提交于
      When using the DMA controller from multiple threads at the same time, it is
      possible to get lots of "DMA halt timeout!" errors printed to the kernel
      log.
      
      This occurs due to a race between fsl_dma_memcpy_issue_pending() and the
      interrupt handler, fsl_dma_chan_do_interrupt(). Both call the
      fsl_chan_xfer_ld_queue() function, which does not protect against
      concurrent accesses to dma_halt() and dma_start().
      
      The existing spinlock is moved to cover the dma_halt() and dma_start()
      functions. Testing shows that the "DMA halt timeout!" errors disappear.
      Signed-off-by: NIra W. Snyder <iws@ovro.caltech.edu>
      Signed-off-by: NLi Yang <leoli@freescale.com>
      138ef018
    • R
      fsldma: fix check on potential fdev->chan[] overflow · f47edc6d
      Roel Kluin 提交于
      Fix the check of potential array overflow when using corrupted channel
      device tree nodes.
      Signed-off-by: NRoel Kluin <roel.kluin@gmail.com>
      Signed-off-by: NLi Yang <leoli@freescale.com>
      f47edc6d
  9. 19 5月, 2009 1 次提交
    • K
      fsldma: Fix compile warnings · 190ee6ed
      Kumar Gala 提交于
      We we build with dma_addr_t as a 64-bit quantity we get:
      
      drivers/dma/fsldma.c: In function 'fsl_chan_xfer_ld_queue':
      drivers/dma/fsldma.c:625: warning: cast to pointer from integer of different size
      drivers/dma/fsldma.c: In function 'fsl_dma_chan_do_interrupt':
      drivers/dma/fsldma.c:737: warning: cast to pointer from integer of different size
      drivers/dma/fsldma.c:737: warning: cast to pointer from integer of different size
      drivers/dma/fsldma.c: In function 'of_fsl_dma_probe':
      drivers/dma/fsldma.c:927: warning: cast to pointer from integer of different
      Signed-off-by: NKumar Gala <galak@kernel.crashing.org>
      Acked-by: NDan Williams <dan.j.williams@intel.com>
      190ee6ed
  10. 26 3月, 2009 1 次提交
  11. 05 3月, 2009 1 次提交
  12. 16 1月, 2009 1 次提交
  13. 15 1月, 2009 1 次提交
  14. 13 1月, 2009 1 次提交
  15. 07 1月, 2009 2 次提交
  16. 27 9月, 2008 1 次提交
  17. 24 9月, 2008 1 次提交
    • T
      fsldma: remove internal self-test from Freescale Elo DMA driver · 59f647c2
      Timur Tabi 提交于
      The Freescale Elo DMA driver runs an internal self-test before registering
      the channels with the DMA engine.  This self-test has a fundemental flaw in
      that it calls the DMA engine's callback functions directly before the
      registration.  However, the registration initializes some variables that the
      callback functions uses, namely the device struct.
      
      The code works today because there are two device structs: the one created
      by the DMA engine, and one created by the Open Firmware (OF) subsystem.  The
      self-test currently uses the device struct created by OF.  However, in the
      future, some of the device structs created by OF will be eliminated.
      This means that the self-test will only have access to the device struct
      created by the DMA engine.  But this device struct isn't initialized when
      the self-test runs, and this causes a kernel panic.
      
      Since there is already a DMA test module (dmatest), the internal self-test
      code is not useful anyway.  It is extremely unlikely that the test will fail
      in normal usage.  It may have been helpful during development, but not any more.
      
      Cc: Kumar Gala <galak@kernel.crashing.org>
      Cc: Li Yang <leoli@freescale.com>
      Cc: Scott Wood <scottwood@freescale.com>
      Signed-off-by: NTimur Tabi <timur@freescale.com>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      59f647c2
  18. 09 7月, 2008 2 次提交
  19. 18 4月, 2008 2 次提交