18 Jan, 2011

1 commit

  • * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx: (63 commits)
    ARM: PL08x: cleanup comments
    Update CONFIG_MD_RAID6_PQ to CONFIG_RAID6_PQ in drivers/dma/iop-adma.c
    ARM: PL08x: fix a warning
    Fix dmaengine_submit() return type
    dmaengine: at_hdmac: fix race while monitoring channel status
    dmaengine: at_hdmac: flags located in first descriptor
    dmaengine: at_hdmac: use subsys_initcall instead of module_init
    dmaengine: at_hdmac: no need set ACK in new descriptor
    dmaengine: at_hdmac: trivial add precision to unmapping comment
    dmaengine: at_hdmac: use dma_address to program DMA hardware
    pch_dma: support new device ML7213 IOH
    ARM: PL08x: prevent dma_set_runtime_config() reconfiguring memcpy channels
    ARM: PL08x: allow dma_set_runtime_config() to return errors
    ARM: PL08x: fix locking between prepare function and submit function
    ARM: PL08x: introduce 'phychan_hold' to hold on to physical channels
    ARM: PL08x: put txd's on the pending list in pl08x_tx_submit()
    ARM: PL08x: rename 'desc_list' as 'pend_list'
    ARM: PL08x: implement unmapping of memcpy buffers
    ARM: PL08x: store prep_* flags in async_tx structure
    ARM: PL08x: shrink srcbus/dstbus in txd structure
    ...

    Linus Torvalds
     

15 Jan, 2011

1 commit

  • Support new device OKI SEMICONDUCTOR's ML7213 IOH(Input/Output Hub) which is for
    IVI(In-Vehicle Infotainment) use.
    The ML7213 is companion chip for Intel Atom E6xx series.
    The ML7213 is completely compatible for Intel EG20T PCH.

    Signed-off-by: Tomoya MORINAGA
    Signed-off-by: Dan Williams

    Tomoya MORINAGA
     

30 Dec, 2010

1 commit


30 Oct, 2010

1 commit


08 Oct, 2010

3 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
     

11 Aug, 2010

1 commit


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
     

31 May, 2010

1 commit


24 May, 2010

2 commits


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
     

07 Apr, 2010

1 commit


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
     

17 Dec, 2009

1 commit

  • * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx:
    ppc440spe-adma: adds updated ppc440spe adma driver
    iop-adma.c: use resource_size()
    dmaengine: clarify the meaning of the DMA_CTRL_ACK flag
    sh: stylistic improvements for the DMA driver
    dmaengine: fix dmatest to verify minimum transfer length and test buffer size
    sh: DMA driver has to specify its alignment requirements
    Add COH 901 318 DMA block driver v5

    Linus Torvalds
     

12 Dec, 2009

1 commit


05 Dec, 2009

1 commit


20 Nov, 2009

2 commits

  • 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
     
  • ioat3.2 does not support asynchronous error notifications which makes
    the driver experience latencies when non-zero pq validate results are
    expected. Provide a mechanism for turning off async_xor_val and
    async_syndrome_val via Kconfig. This approach is generally useful for
    any driver that specifies ASYNC_TX_DISABLE_CHANNEL_SWITCH and would like
    to force the async_tx api to fall back to the synchronous path for
    certain operations.

    Signed-off-by: Dan Williams

    Dan Williams
     

26 Oct, 2009

1 commit


09 Sep, 2009

5 commits

  • This restriction prevented ASYNC_TX_DMA from being enabled on platform
    configurations where DMA address conversion could not be performed in
    place on the stack. Since commit 04ce9ab3 ("async_xor: permit callers
    to pass in a 'dma/page scribble' region") the async_tx api now either
    uses a caller provided 'scribble' buffer, or performs the conversion in
    place when sizeof(dma_addr_t)

    Dan Williams
     
  • This supported all DMA channels, and it was tested in SH7722,
    SH7780, SH7785 and SH7763.
    This can not use with SH DMA API.

    Signed-off-by: Nobuhiro Iwamatsu
    Reviewed-by: Matt Fleming
    Acked-by: Maciej Sosnowski
    Acked-by: Paul Mundt
    Signed-off-by: Dan Williams

    Nobuhiro Iwamatsu
     
  • Conflicts:
    crypto/async_tx/async_xor.c
    drivers/dma/ioat/dma_v2.h
    drivers/dma/ioat/pci.c
    drivers/md/raid5.c

    Dan Williams
     
  • Channel switching is problematic for some dmaengine drivers as the
    architecture precludes separating the ->prep from ->submit. In these
    cases the driver can select ASYNC_TX_DISABLE_CHANNEL_SWITCH to modify
    the async_tx allocator to only return channels that support all of the
    required asynchronous operations.

    For example MD_RAID456=y selects support for asynchronous xor, xor
    validate, pq, pq validate, and memcpy. When
    ASYNC_TX_DISABLE_CHANNEL_SWITCH=y any channel with all these
    capabilities is marked DMA_ASYNC_TX allowing async_tx_find_channel() to
    quickly locate compatible channels with the guarantee that dependency
    chains will remain on one channel. When
    ASYNC_TX_DISABLE_CHANNEL_SWITCH=n async_tx_find_channel() may select
    channels that lead to operation chains that need to cross channel
    boundaries using the async_tx channel switch capability.

    Signed-off-by: Dan Williams

    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
     

02 Jul, 2009

1 commit

  • On HIGHMEM64G systems dma_addr_t is known to be larger than (void *)
    which precludes async_xor from performing dma address conversions by
    reusing the input parameter address list. However, other parts of the
    dmaengine infrastructure do not suffer this constraint, so the
    HIGHMEM64G restriction can be down-levelled.

    Signed-off-by: Dan Williams

    Dan Williams
     

17 Jun, 2009

1 commit


04 Jun, 2009

1 commit

  • async_xor() needs space to perform dma and page address conversions. In
    most cases the code can simply reuse the struct page * array because the
    size of the native pointer matches the size of a dma/page address. In
    order to support archs where sizeof(dma_addr_t) is larger than
    sizeof(struct page *), or to preserve the input parameters, we utilize a
    memory region passed in by the caller.

    Since the code is now prepared to handle the case where it cannot
    perform address conversions on the stack, we no longer need the
    !HIGHMEM64G dependency in drivers/dma/Kconfig.

    [ Impact: don't clobber input buffers for address conversions ]

    Reviewed-by: Andre Noll
    Acked-by: Maciej Sosnowski
    Signed-off-by: Dan Williams

    Dan Williams
     

26 Mar, 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
     

06 Jan, 2009

1 commit

  • async_tx.ko is a consumer of dma channels. A circular dependency arises
    if modules in drivers/dma rely on common code in async_tx.ko. It
    prevents either module from being unloaded.

    Move dma_wait_for_async_tx and async_tx_run_dependencies to dmaeninge.o
    where they should have been from the beginning.

    Reviewed-by: Andrew Morton
    Signed-off-by: Dan Williams

    Dan Williams
     

27 Sep, 2008

1 commit

  • Modify the Freescale Elo / Elo Plus DMA driver so that it can be compiled as
    a module.

    The primary change is to stop treating the DMA controller as a bus, and the
    DMA channels as devices on the bus. This is because the Open Firmware (OF)
    kernel code does not allow busses to be removed, so although we can call
    of_platform_bus_probe() to probe the DMA channels, there is no
    of_platform_bus_remove(). Instead, the DMA channels are manually probed,
    similar to what fsl_elbc_nand.c does.

    Cc: Scott Wood
    Acked-by: Li Yang
    Signed-off-by: Timur Tabi
    Signed-off-by: Dan Williams

    Timur Tabi
     

09 Jul, 2008

1 commit

  • 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