25 May, 2011

1 commit

  • Nobody is currently maintaining dw_dmac. We are using dw_dmac for SPEAr13xx and
    are currently maintaining it. After discussing with Vinod, sending this patch to
    update maintainer-ship of dw_dmac.

    Signed-off-by: Viresh Kumar
    Acked-by: Havard Skinnemoen
    Signed-off-by: Vinod Koul

    Viresh Kumar
     

07 Mar, 2011

4 commits

  • Msize or Burst Size is peripheral dependent in case of prep_slave_sg and
    cyclic_prep transfers, and in case of memcpy transfers it is platform dependent.
    So msize configuration must come from platform data.

    Also some peripherals (ex: JPEG), need to be flow controller for dma transfers,
    so this information in case of slave_sg & cyclic_prep transfers must come from
    platform data.

    Signed-off-by: Viresh Kumar
    Signed-off-by: Vinod Koul

    Viresh KUMAR
     
  • src_master & dest_master don't required u32 as they have values limited to u8
    only. Also their description is missing from doc style comment. This patch
    fixes above mentioned issues.

    Signed-off-by: Viresh Kumar
    Signed-off-by: Vinod Koul

    Viresh Kumar
     
  • In Synopsys designware, channel priority is programmable. This patch adds
    support for passing channel priority through platform data. By default Ascending
    channel priority will be followed, i.e. channel 0 will get highest priority and
    channel 7 will get lowest.

    Signed-off-by: Viresh Kumar
    Signed-off-by: Vinod Koul

    Viresh Kumar
     
  • In SPEAr Platform channels 4-7 have more Fifo depth. So we must get better
    channel first. This patch introduces concept of channel allocation order in
    dw_dmac. If user doesn't pass anything or 0, than normal (ascending) channel
    allocation will follow, else channels will be allocated in descending order.

    Signed-off-by: Viresh Kumar
    Signed-off-by: Vinod Koul

    Viresh Kumar
     

30 Jan, 2011

2 commits

  • Some platforms (e.g. Picochip PC3XX) have multiple DMA controllers
    where some may be used for slave transfers and others for general
    purpose memcpy type transfers. Add a .is_private boolean to the
    platform data structure so that controllers can be marked as private
    so that the DMA_PRIVATE capability will be set for that controller.

    Signed-off-by: Jamie Iles
    Signed-off-by: Dan Williams

    Jamie Iles
     
  • Some platforms have flexible mastering capabilities and this needs
    to be selected at runtime. If the platform has specified private
    data in the form of the dw_dma_slave then fetch the source and
    destination masters from here. If this isn't present, default to
    the previous of 0 and 1.

    v2: cleanup whitespace

    Acked-by: Hans-Christian Egtvedt
    Signed-off-by: Jamie Iles
    Signed-off-by: Dan Williams

    Jamie Iles
     

02 Apr, 2009

1 commit

  • This patch adds a cyclic DMA interface to the DW DMA driver. This is
    very useful if you want to use the DMA controller in combination with a
    sound device which uses cyclic buffers.

    Using a DMA channel for cyclic DMA will disable the possibility to use
    it as a normal DMA engine until the user calls the cyclic free function
    on the DMA channel. Also a cyclic DMA list can not be prepared if the
    channel is already active.

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

    Hans-Christian Egtvedt
     

07 Jan, 2009

1 commit


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