1. 26 5月, 2015 1 次提交
    • R
      dmaengine: pxa: add pxa dmaengine driver · a57e16cf
      Robert Jarzmik 提交于
      This is a new driver for pxa SoCs, which is also compatible with the former
      mmp_pdma.
      
      The rationale behind a new driver (as opposed to incremental patching) was :
      
       - the new driver relies on virt-dma, which obsoletes all the internal
         structures of mmp_pdma (sw_desc, hw_desc, ...), and by consequence all the
         functions
      
       - mmp_pdma allocates dma coherent descriptors containing not only hardware
         descriptors but linked list information
         The new driver only puts the dma hardware descriptors (ie. 4 u32) into the
         dma pool allocated memory. This changes completely the way descriptors are
         handled
      
       - the architecture behind the interrupt/tasklet management was rewritten to be
         more conforming to virt-dma
      
       - the buffers alignment is handled differently
         The former driver assumed that the DMA channel stopped between each
         descriptor. The new one chains descriptors to let the channel running. This
         is a necessary guarantee for real-time high bandwidth usecases such as video
         capture on "old" architectures such as pxa.
      
       - hot chaining / cold chaining / no chaining
         Whenever possible, submitting a descriptor "hot chains" it to a running
         channel. There is still no guarantee that the descriptor will be issued, as
         the channel might be stopped just before the descriptor is submitted. Yet
         this allows to submit several video buffers, and resubmit a buffer while
         another is under handling.
         As before, dma_async_issue_pending() is the only guarantee to have all the
         buffers issued.
         When an alignment issue is detected (ie. one address in a descriptor is not
         a multiple of 8), if the already running channel is in "aligned mode", the
         channel will stop, and restarted in "misaligned mode" to finished the issued
         list.
      
       - descriptors reusing
         A submitted, issued and completed descriptor can be reused, ie resubmitted if
         it was prepared with the proper flag (DMA_PREP_ACK).  Only a channel
         resources release will in this case release that buffer.
         This allows a rolling ring of buffers to be reused, where there are several
         thousands of hardware descriptors used (video buffer for example).
      
      Additionally, a set of more casual features is introduced :
       - debugging traces
       - lockless way to know if a descriptor is terminated or not
      
      The driver was tested on zylonite board (pxa3xx) and mioa701 (pxa27x),
      with dmatest, pxa_camera and pxamci.
      Signed-off-by: NRobert Jarzmik <robert.jarzmik@free.fr>
      Signed-off-by: NVinod Koul <vinod.koul@intel.com>
      a57e16cf
  2. 14 5月, 2015 1 次提交
  3. 02 4月, 2015 2 次提交
  4. 01 4月, 2015 1 次提交
  5. 17 3月, 2015 1 次提交
  6. 07 3月, 2015 1 次提交
  7. 05 2月, 2015 1 次提交
  8. 23 12月, 2014 1 次提交
  9. 06 11月, 2014 1 次提交
  10. 28 9月, 2014 1 次提交
  11. 04 8月, 2014 1 次提交
  12. 25 7月, 2014 1 次提交
  13. 16 7月, 2014 1 次提交
  14. 13 7月, 2014 1 次提交
  15. 30 4月, 2014 1 次提交
  16. 05 4月, 2014 1 次提交
  17. 18 2月, 2014 1 次提交
  18. 20 1月, 2014 1 次提交
  19. 08 1月, 2014 1 次提交
  20. 08 10月, 2013 1 次提交
    • H
      dmaengine: add driver for Samsung s3c24xx SoCs · ddeccb8d
      Heiko Stuebner 提交于
      This adds a new driver to support the s3c24xx dma using the dmaengine
      and makes the old one in mach-s3c24xx obsolete in the long run.
      
      Conceptually the s3c24xx-dma feels like a distant relative of the pl08x
      with numerous virtual channels being mapped to a lot less physical ones.
      The driver therefore borrows a lot from the amba-pl08x driver in this
      regard. Functionality-wise the driver gains a memcpy ability in addition
      to the slave_sg one.
      
      The driver supports both the method for requesting the peripheral used
      by SoCs before the S3C2443 and the different method for S3C2443 and later.
      
      On earlier SoCs the hardware channels usable for specific peripherals is
      constrainted while on later SoCs all channels can be used for any peripheral.
      
      Tested on a s3c2416-based board, memcpy using the dmatest module and
      slave_sg partially using the spi-s3c64xx driver.
      Signed-off-by: NHeiko Stuebner <heiko@sntech.de>
      Acked-by: NLinus Walleij <linus.walleij@linaro.org>
      Acked-by: NVinod Koul <vinod.koul@intel.com>
      Signed-off-by: NKukjin Kim <kgene.kim@samsung.com>
      ddeccb8d
  21. 28 8月, 2013 1 次提交
  22. 09 8月, 2013 1 次提交
    • S
      usb: musb dma: add cppi41 dma driver · 9b3452d1
      Sebastian Andrzej Siewior 提交于
      This driver is currently used by musb' cppi41 couter part. I may merge
      both dma engine user of musb at some point but not just yet.
      
      The driver seems to work in RX/TX mode in host mode, tested on mass
      storage. I increaed the size of the TX / RX transfers and waited for the
      core code to cancel a transfers and it seems to recover.
      
      v2..3:
      - use mall transfers on RX side and check data toggle.
      - use rndis mode on tx side so we haveon interrupt for 4096 transfers.
      - remove custom "transferred" hack and use dmaengine_tx_status() to
        compute the total amount of data that has been transferred.
      - cancel transfers and reclaim descriptors
      
      v1..v2:
      - RX path added
      - dma mode 0 & 1 is working
      - device tree nodes re-created.
      
      Cc: Vinod Koul <vinod.koul@intel.com>
      Cc: Dan Williams <djbw@fb.com>
      Signed-off-by: NSebastian Andrzej Siewior <bigeasy@linutronix.de>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      9b3452d1
  23. 05 7月, 2013 3 次提交
  24. 30 4月, 2013 1 次提交
  25. 16 4月, 2013 1 次提交
    • A
      dma: acpi-dma: introduce ACPI DMA helpers · 1b2e98bc
      Andy Shevchenko 提交于
      There is a new generic API to get a DMA channel for a slave device (commit
      9a6cecc8 "dmaengine: add helper function to request a slave DMA channel"). In
      similar fashion to the DT case (commit aa3da644 "of: Add generic device tree
      DMA helpers") we introduce helpers to the DMAC drivers which are enumerated by
      ACPI.
      
      The proposed extension provides the following API calls:
      	acpi_dma_controller_register(), devm_acpi_dma_controller_register()
      	acpi_dma_controller_free(), devm_acpi_dma_controller_free()
      	acpi_dma_simple_xlate()
      	acpi_dma_request_slave_chan_by_index()
      	acpi_dma_request_slave_chan_by_name()
      
      The first two should be used, for example, at probe() and remove() of the
      corresponding DMAC driver. At the register stage the DMAC driver supplies a
      custom xlate() function to translate a struct dma_spec into struct dma_chan.
      
      Accordingly to the ACPI Fixed DMA resource specification the only two pieces of
      information the slave device has are the channel id and the request line (slave
      id). Those two are represented by struct dma_spec. The
      acpi_dma_request_slave_chan_by_index() provides access to the specifix FixedDMA
      resource by its index. Whereas dma_request_slave_channel() takes a string
      parameter to identify the DMA resources required by the slave device. To make a
      slave device driver work with both DeviceTree and ACPI enumeration a simple
      convention is established: "tx" corresponds to the index 0 and "rx" to the
      index 1. In case of robust configuration the slave device driver unfortunately
      needs to call acpi_dma_request_slave_chan_by_index() directly.
      
      Additionally the patch provides "managed" version of the register/free pair
      i.e. devm_acpi_dma_controller_register() and devm_acpi_dma_controller_free().
      Usually, the driver uses only devm_acpi_dma_controller_register().
      Signed-off-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Reviewed-by: NMika Westerberg <mika.westerberg@linux.intel.com>
      Acked-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Signed-off-by: NVinod Koul <vinod.koul@intel.com>
      1b2e98bc
  26. 14 2月, 2013 1 次提交
  27. 03 1月, 2013 1 次提交
  28. 14 9月, 2012 1 次提交
    • Z
      dmaengine: mmp-pdma support · c8acd6aa
      Zhangfei Gao 提交于
      1. virtual channel vs. physical channel
      Virtual channel is managed by dmaengine
      Physical channel handling resource, such as irq
      Physical channel is alloced dynamically as descending priority,
      freed immediately when irq done.
      The availble highest priority physically channel will alwayes be alloced
      
      Issue pending list -> alloc highest dma physically channel available -> dma done -> free physically channel
      
      2. list: running list & pending list
      submit: desc list -> pending list
      issue_pending_list: if (IDLE) pending list -> running list; free pending list (RUN)
      irq: free running list (IDLE)
           check pendlist -> pending list -> running list; free pending list (RUN)
      
      3. irq:
      Each list generate one irq, calling callback
      One list may contain several desc chain, in such case, make sure only the last desc list generate irq.
      
      4. async
      Submit will add desc chain to pending list, which can be multi-called
      If multi desc chain is submitted, only the last desc would generate irq -> call back
      If IDLE, issue_pending_list start pending_list, transforming pendlist to running list
      If RUN, irq will start pending list
      
      5. test
      5.1 pxa3xx_nand on pxa910
      5.2 insmod dmatest.ko (threads_per_chan=y)
      By default drivers/dma/dmatest.c test every channel and test memcpy with 1 threads per channel
      Signed-off-by: NZhangfei Gao <zhangfei.gao@marvell.com>
      Acked-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NVinod Koul <vinod.koul@linux.intel.com>
      c8acd6aa
  29. 01 9月, 2012 1 次提交
  30. 31 7月, 2012 1 次提交
  31. 13 7月, 2012 1 次提交
  32. 01 7月, 2012 1 次提交
  33. 20 6月, 2012 1 次提交
  34. 08 6月, 2012 1 次提交
  35. 07 3月, 2012 1 次提交
    • R
      DMA: sa11x0: add SA-11x0 DMA driver · 6365bead
      Russell King 提交于
      Add support for the SA-11x0 DMA driver, which replaces the private
      API version in arch/arm/mach-sa1100/dma.c.
      
      We model this as a set of virtual DMA channels, one for each request
      signal, and assign the virtual DMA channel to a physical DMA channel
      when there is work to be done.  This allows DMA users to claim their
      channels, and hold them while not in use, without affecting the
      availability of the physical channels.
      
      Another advantage over this approach, compared to the private version,
      is that a channel can be reconfigured on the fly without having to
      release and re-request it - which for the IrDA driver, allows us to
      use DMA for SIR mode transmit without eating up three physical
      channels.  As IrDA is half-duplex, we actually only need one physical
      channel, and this architecture allows us to achieve that.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      6365bead
  36. 18 11月, 2011 1 次提交
  37. 09 6月, 2011 1 次提交