09 Jun, 2011

1 commit

  • The ep93xx DMA controller has 10 independent memory to peripheral (M2P)
    channels, and 2 dedicated memory to memory (M2M) channels. M2M channels can
    also be used by SPI and IDE to perform DMA transfers to/from their memory
    mapped FIFOs.

    This driver supports both M2P and M2M channels with DMA_SLAVE, DMA_CYCLIC and
    DMA_MEMCPY (M2M only) capabilities.

    Signed-off-by: Mika Westerberg
    Signed-off-by: Ryan Mallon
    Acked-by: H Hartley Sweeten
    Acked-by: Vinod Koul
    Signed-off-by: Grant Likely

    Mika Westerberg
     

23 Mar, 2011

1 commit

  • * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx: (66 commits)
    avr32: at32ap700x: fix typo in DMA master configuration
    dmaengine/dmatest: Pass timeout via module params
    dma: let IMX_DMA depend on IMX_HAVE_DMA_V1 instead of an explicit list of SoCs
    fsldma: make halt behave nicely on all supported controllers
    fsldma: reduce locking during descriptor cleanup
    fsldma: support async_tx dependencies and automatic unmapping
    fsldma: fix controller lockups
    fsldma: minor codingstyle and consistency fixes
    fsldma: improve link descriptor debugging
    fsldma: use channel name in printk output
    fsldma: move related helper functions near each other
    dmatest: fix automatic buffer unmap type
    drivers, pch_dma: Fix warning when CONFIG_PM=n.
    dmaengine/dw_dmac fix: use readl & writel instead of __raw_readl & __raw_writel
    avr32: at32ap700x: Specify DMA Flow Controller, Src and Dst msize
    dw_dmac: Setting Default Burst length for transfers as 16.
    dw_dmac: Allow src/dst msize & flow controller to be configured at runtime
    dw_dmac: Changing type of src_master and dest_master to u8.
    dw_dmac: Pass Channel Priority from platform_data
    dw_dmac: Pass Channel Allocation Order from platform_data
    ...

    Linus Torvalds
     

17 Mar, 2011

1 commit


02 Mar, 2011

1 commit

  • This patch adds dma support for Freescale MXS-based SoC i.MX23/28,
    including apbh-dma and apbx-dma.

    * apbh-dma and apbx-dma are supported in the driver as two mxs-dma
    instances.

    * apbh-dma is different between mx23 and mx28, hardware version
    register is used to differentiate.

    * mxs-dma supports pio function besides data transfer. The driver
    uses dma_data_direction DMA_NONE to identify the pio mode, and
    steals sgl and sg_len to get pio words and numbers from clients.

    * mxs dmaengine has some very specific features, like sense function
    and the special NAND support (nand_lock, nand_wait4ready). These
    are too specific to implemented in generic dmaengine driver.

    * The driver refers to imx-sdma and only a single descriptor is
    statically assigned to each channel.

    Signed-off-by: Shawn Guo
    Signed-off-by: Vinod Koul

    Shawn Guo
     

03 Dec, 2010

1 commit


08 Oct, 2010

2 commits


06 Oct, 2010

1 commit

  • This patch adds support for the Freescale i.MX SDMA engine.

    The SDMA engine is a scatter/gather DMA engine which is implemented
    as a seperate coprocessor. SDMA needs its own firmware which is
    requested using the standard request_firmware mechanism. The firmware
    has different entry points for each peripheral type, so drivers
    have to pass the peripheral type to the DMA engine which in turn
    picks the correct firmware entry point from a table contained in
    the firmware image itself.
    The original Freescale code also supports support for transfering
    data to the internal SRAM which needs different entry points to
    the firmware. Support for this is currently not implemented. Also,
    support for the ASRC (asymmetric sample rate converter) is skipped.

    I took a very simple approach to implement dmaengine support. Only
    a single descriptor is statically assigned to a each channel. This
    means that transfers can't be queued up but only a single transfer
    is in progress. This simplifies implementation a lot and is sufficient
    for the usual device/memory transfers.

    Signed-off-by: Sascha Hauer
    Reviewed-by: Linus Walleij
    Signed-off-by: Dan Williams

    Sascha Hauer
     

30 Sep, 2010

1 commit

  • This creates a DMAengine driver for the ARM PL080/PL081 PrimeCells
    based on the implementation earlier submitted by Peter Pearse.
    This is working like a charm for memcpy and slave DMA to the PL011
    PrimeCell on the PB11MPCore.

    This DMA controller is used in mostly unmodified form in the ARM
    RealView and Versatile platforms, in the ST-Ericsson Nomadik, and
    in the ST SPEAr platform.

    It has been converted to use the header from the Samsung PL080
    derivate instead of its own defintions. The Samsungs have a custom
    driver in their mach-* folders though, atleast we can share the
    register definitions.

    Cc: Peter Pearse
    Cc: Ben Dooks
    Cc: Kukjin Kim
    Cc: Alessandro Rubini
    Acked-by: Viresh Kumar
    Signed-off-by: Linus Walleij
    [GFP_KERNEL to GFP_NOWAIT in pl08x_prep_dma_memcpy]
    Signed-off-by: Dan Williams

    Linus Walleij
     

05 Aug, 2010

1 commit

  • Topcliff PCH is the platform controller hub that is going to
    be used in Intel's upcoming general embedded platforms. This
    adds the driver for Topcliff PCH DMA controller. The DMA
    channels are strictly for device to host or host to device
    transfers and cannot be used for generic memcpy.

    Signed-off-by: Yong Wang
    [kill GFP_ATOMIC, kill __raw_{read|write}l, locking fixlet]
    Signed-off-by: Dan Williams

    Yong Wang
     

28 Jul, 2010

1 commit

  • This patch add DMA drivers for DMA controllers in Langwell chipset
    of Intel(R) Moorestown platform and DMA controllers in Penwell of
    Intel(R) Medfield platfrom

    This patch adds support for Moorestown DMAC1 and DMAC2 controllers.
    It also add support for Medfiled GP DMA and DMAC1 controllers.
    These controllers supports memory to peripheral and peripheral to
    memory transfers. It support only single block transfers.

    This driver is based on Kernel DMA engine
    Anyone who wishes to use this controller should use DMA engine APIs

    This controller exposes DMA_SLAVE capabilities and notifies the client drivers
    of DMA transaction completion

    Config option required to be enabled CONFIG_INTEL_MID_DMAC=y

    Signed-off-by: Vinod Koul
    Signed-off-by: Alan Cox
    Signed-off-by: Dan Williams

    Vinod Koul
     

24 May, 2010

1 commit

  • Add DMA Engine API driver for the PL330 DMAC.
    This driver is supposed to be reusable by various
    platforms that have one or more PL330 DMACs.
    Atm, DMA_SLAVE and DMA_MEMCPY capabilities have been
    implemented.

    Signed-off-by: Jassi Brar
    Reviewed-by: Linus Walleij
    [dan.j.williams@intel.com: missing slab.h and ->device_control() fixups]
    Signed-off-by: Dan Williams

    Jassi Brar
     

15 Apr, 2010

1 commit

  • This is a straightforward driver for the ST-Ericsson DMA40 DMA
    controller found in U8500, implemented akin to the existing
    COH 901 318 driver.

    Signed-off-by: Linus Walleij
    Acked-by: Srinidh Kasagar
    Cc: STEricsson_nomadik_linux@list.st.com
    Cc: Alessandro Rubini
    Signed-off-by: Andrew Morton
    Signed-off-by: Dan Williams

    Linus Walleij
     

26 Mar, 2010

1 commit

  • Adds the support for the DMA engine withing the timberdale FPGA.

    The DMA channels are strict device to host, or host to device
    and can not be used for generic memcpy.

    Signed-off-by: Richard Röjfors
    Signed-off-by: Dan Williams

    Richard Röjfors
     

02 Mar, 2010

2 commits

  • Adds initial version of MPC512x DMA driver.
    Only memory to memory transfers are currenly supported.

    Signed-off-by: Piotr Ziecik
    Signed-off-by: Wolfgang Denk
    Signed-off-by: Anatolij Gustschin
    Cc: John Rigby
    Acked-by: Grant Likely
    Signed-off-by: Dan Williams

    Piotr Ziecik
     
  • This adds Kconfig options for DEBUG and VERBOSE_DEBUG to the DMA
    engine subsystem, I got tired of editing the Makefile manually
    each time I want to debug things in here, modelled this on the
    debug switches for other subsystems and works like a charm when
    working on our DMA engines.

    Signed-off-by: Linus Walleij
    Signed-off-by: Dan Williams

    Linus Walleij
     

12 Dec, 2009

1 commit


20 Nov, 2009

1 commit

  • This patch adds support for the ST-Ericsson COH 901 318 DMA block,
    found in the U300 series platforms. It registers a DMA slave for
    device I/O and also a memcpy slave for memcpy.

    Signed-off-by: Linus Walleij
    Acked-by: Maciej Sosnowski
    Signed-off-by: Dan Williams

    Linus Walleij
     

09 Sep, 2009

3 commits


29 Jul, 2009

1 commit

  • When first created the ioat driver was the only inhabitant of
    drivers/dma/. Now, it is the only multi-file (more than a .c and a .h)
    driver in the directory. Moving it to an ioat/ subdirectory allows the
    naming convention to be cleaned up, and allows for future splitting of
    the source files by hardware version (v1, v2, and v3).

    Signed-off-by: Maciej Sosnowski
    Signed-off-by: Dan Williams

    Dan Williams
     

23 Jul, 2009

1 commit

  • This AHB DMA Controller (aka HDMA or DMAC on AT91 systems) is availlable on
    at91sam9rl chip. It will be used on other products in the future.

    This first release covers only the memory-to-memory tranfer type. This is the
    only tranfer type supported by this chip. On other products, it will be used
    also for peripheral DMA transfer (slave API support to come).

    I used dmatest client without problem in different configurations to test it.

    Full documentation for this controller can be found in the SAM9RL datasheet:
    http://www.atmel.com/dyn/products/product_card.asp?part_id=4243

    Signed-off-by: Nicolas Ferre
    Acked-by: Maciej Sosnowski
    Signed-off-by: Dan Williams

    Nicolas Ferre
     

17 Jun, 2009

1 commit


20 Jan, 2009

1 commit

  • i.MX3x SoCs contain an Image Processing Unit, consisting of a Control
    Module (CM), Display Interface (DI), Synchronous Display Controller (SDC),
    Asynchronous Display Controller (ADC), Image Converter (IC), Post-Filter
    (PF), Camera Sensor Interface (CSI), and an Image DMA Controller (IDMAC).
    CM contains, among other blocks, an Interrupt Generator (IG) and a Clock
    and Reset Control Unit (CRCU). This driver serves IDMAC and IG. They are
    supported over dmaengine and irq-chip APIs respectively.

    IDMAC is a specialised DMA controller, its DMA channels cannot be used for
    general-purpose operations, even though it might be possible to configure
    a memory-to-memory channel for memcpy operation. This driver will not work
    with generic dmaengine clients, clients, wishing to use it must use
    respective wrapper structures, they also must specify which channels they
    require, as channels are hard-wired to specific IPU functions.

    Acked-by: Sascha Hauer
    Signed-off-by: Guennadi Liakhovetski
    Signed-off-by: Dan Williams

    Guennadi Liakhovetski
     

09 Jul, 2008

3 commits

  • This adds a driver for the Synopsys DesignWare DMA controller (aka
    DMACA on AVR32 systems.) This DMA controller can be found integrated
    on the AT32AP7000 chip and is primarily meant for peripheral DMA
    transfer, but can also be used for memory-to-memory transfers.

    This patch is based on a driver from David Brownell which was based on
    an older version of the DMA Engine framework. It also implements the
    proposed extensions to the DMA Engine API for slave DMA operations.

    The dmatest client shows no problems, but there may still be room for
    improvement performance-wise. DMA slave transfer performance is
    definitely "good enough"; reading 100 MiB from an SD card running at ~20
    MHz yields ~7.2 MiB/s average transfer rate.

    Full documentation for this controller can be found in the Synopsys
    DW AHB DMAC Databook:

    http://www.synopsys.com/designware/docs/iip/DW_ahb_dmac/latest/doc/dw_ahb_dmac_db.pdf

    The controller has lots of implementation options, so it's usually a
    good idea to check the data sheet of the chip it's intergrated on as
    well. The AT32AP7000 data sheet can be found here:

    http://www.atmel.com/dyn/products/datasheets.asp?family_id=682

    Changes since v4:
    * Use client_count instead of dma_chan_is_in_use()
    * Add missing include
    * Unmap buffers unless client told us not to

    Changes since v3:
    * Update to latest DMA engine and DMA slave APIs
    * Embed the hw descriptor into the sw descriptor
    * Clean up and update MODULE_DESCRIPTION, copyright date, etc.

    Changes since v2:
    * Dequeue all pending transfers in terminate_all()
    * Rename dw_dmac.h -> dw_dmac_regs.h
    * Define and use controller-specific dma_slave data
    * Fix up a few outdated comments
    * Define hardware registers as structs (doesn't generate better
    code, unfortunately, but it looks nicer.)
    * Get number of channels from platform_data instead of hardcoding it
    based on CONFIG_WHATEVER_CPU.
    * Give slave clients exclusive access to the channel

    Acked-by: Maciej Sosnowski ,
    Signed-off-by: Haavard Skinnemoen
    Signed-off-by: Dan Williams

    Haavard Skinnemoen
     
  • This client tests DMA memcpy using various lengths and various offsets
    into the source and destination buffers. It will initialize both
    buffers with a repeatable pattern and verify that the DMA engine copies
    the requested region and nothing more. It will also verify that the
    bytes aren't swapped around, and that the source buffer isn't modified.

    The dmatest module can be configured to test a specific device, a
    specific channel. It can also test multiple channels at the same time,
    and it can start multiple threads competing for the same channel.

    Changes since v2:
    * Support testing multiple channels at the same time
    * Support testing with multiple threads competing for the same channel
    * Use counting test patterns in order to catch byte ordering issues

    Changes since v1:
    * Remove extra dashes around "help"
    * Remove "default n" from Kconfig
    * Turn TEST_BUF_SIZE into a module parameter
    * Return DMA_NAK instead of DMA_DUP
    * Print unhandled events
    * Support testing specific channels and devices
    * Move to the end of the Makefile

    Acked-by: Maciej Sosnowski
    Signed-off-by: Haavard Skinnemoen
    Signed-off-by: Dan Williams

    Haavard Skinnemoen
     
  • The XOR engine found in Marvell's SoCs and system controllers
    provides XOR and DMA operation, iSCSI CRC32C calculation, memory
    initialization, and memory ECC error cleanup operation support.

    This driver implements the DMA engine API and supports the following
    capabilities:
    - memcpy
    - xor
    - memset

    The XOR engine can be used by DMA engine clients implemented in the
    kernel, one of those clients is the RAID module. In that case, I
    observed 20% improvement in the raid5 write throughput, and 40%
    decrease in the CPU utilization when doing array construction, those
    results obtained on an 5182 running at 500Mhz.

    When enabling the NET DMA client, the performance decreased, so
    meanwhile it is recommended to keep this client off.

    Signed-off-by: Saeed Bishara
    Signed-off-by: Lennert Buytenhek
    Signed-off-by: Nicolas Pitre
    Acked-by: Maciej Sosnowski
    Signed-off-by: Dan Williams

    Saeed Bishara
     

05 Mar, 2008

1 commit

  • The driver implements DMA engine API for Freescale MPC85xx DMA controller,
    which could be used by devices in the silicon. The driver supports the
    Basic mode of Freescale MPC85xx DMA controller. The MPC85xx processors
    supported include MPC8540/60, MPC8555, MPC8548, MPC8641 and so on.

    The MPC83xx(MPC8349, MPC8360) are also supported.

    [kamalesh@linux.vnet.ibm.com: build fix]
    [dan.j.williams@intel.com: merge mm fixes, rebase on async_tx-2.6.25]
    Signed-off-by: Zhang Wei
    Signed-off-by: Ebony Zhu
    Acked-by: Kumar Gala
    Cc: Shannon Nelson
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Signed-off-by: Andrew Morton
    Signed-off-by: Dan Williams

    Zhang Wei
     

17 Oct, 2007

3 commits

  • Add code to connect to the DCA driver and provide cpu tags for use by
    drivers that would like to use Direct Cache Access hints.

    [Adrian Bunk] Several Kconfig cleanup items
    [Andrew Morten, Chris Leech] Fix for using cpu_physical_id() even when
    built for uni-processor

    Signed-off-by: Shannon Nelson
    Acked-by: David S. Miller
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Shannon Nelson
     
  • Split the general PCI startup from the DMA handling code in order to
    prepare for adding support for DCA services and future versions of the
    ioatdma device.

    [Rusty Russell] Removal of __unsafe() usage.

    Signed-off-by: Shannon Nelson
    Acked-by: David S. Miller
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Shannon Nelson
     
  • Rename the ioatdma.c file in preparation for splitting into multiple files,
    which will allow for easier adding new functionality.

    Signed-off-by: Shannon Nelson
    Acked-by: David S. Miller
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Shannon Nelson
     

13 Jul, 2007

1 commit

  • The Intel(R) IOP series of i/o processors integrate an Xscale core with
    raid acceleration engines. The capabilities per platform are:

    iop219:
    (2) copy engines
    iop321:
    (2) copy engines
    (1) xor and block fill engine
    iop33x:
    (2) copy and crc32c engines
    (1) xor, xor zero sum, pq, pq zero sum, and block fill engine
    iop34x (iop13xx):
    (2) copy, crc32c, xor, xor zero sum, and block fill engines
    (1) copy, crc32c, xor, xor zero sum, pq, pq zero sum, and block fill engine

    The driver supports the features of the async_tx api:
    * asynchronous notification of operation completion
    * implicit (interupt triggered) handling of inter-channel transaction
    dependencies

    The driver adapts to the platform it is running by two methods.
    1/ #include which defines the hardware specific
    iop_chan_* and iop_desc_* routines as a series of static inline
    functions
    2/ The private platform data attached to the platform_device defines the
    capabilities of the channels

    20070626: Callbacks are run in a tasklet. Given the recent discussion on
    LKML about killing tasklets in favor of workqueues I did a quick conversion
    of the driver. Raid5 resync performance dropped from 50MB/s to 30MB/s, so
    the tasklet implementation remains until a generic softirq interface is
    available.

    Changelog:
    * fixed a slot allocation bug in do_iop13xx_adma_xor that caused too few
    slots to be requested eventually leading to data corruption
    * enabled the slot allocation routine to attempt to free slots before
    returning -ENOMEM
    * switched the cleanup routine to solely use the software chain and the
    status register to determine if a descriptor is complete. This is
    necessary to support other IOP engines that do not have status writeback
    capability
    * make the driver iop generic
    * modified the allocation routines to understand allocating a group of
    slots for a single operation
    * added a null xor initialization operation for the xor only channel on
    iop3xx
    * support xor operations on buffers larger than the hardware maximum
    * split the do_* routines into separate prep, src/dest set, submit stages
    * added async_tx support (dependent operations initiation at cleanup time)
    * simplified group handling
    * added interrupt support (callbacks via tasklets)
    * brought the pending depth inline with ioat (i.e. 4 descriptors)
    * drop dma mapping methods, suggested by Chris Leech
    * don't use inline in C files, Adrian Bunk
    * remove static tasklet declarations
    * make iop_adma_alloc_slots easier to read and remove chances for a
    corrupted descriptor chain
    * fix locking bug in iop_adma_alloc_chan_resources, Benjamin Herrenschmidt
    * convert capabilities over to dma_cap_mask_t
    * fixup sparse warnings
    * add descriptor flush before iop_chan_enable
    * checkpatch.pl fixes
    * gpl v2 only correction
    * move set_src, set_dest, submit to async_tx methods
    * move group_list and phys to async_tx

    Cc: Russell King
    Signed-off-by: Dan Williams

    Dan Williams
     

18 Jun, 2006

3 commits