2006-05-23 18:50:37 -06:00
|
|
|
obj-$(CONFIG_DMA_ENGINE) += dmaengine.o
|
|
|
|
obj-$(CONFIG_NET_DMA) += iovlock.o
|
2008-07-08 12:58:45 -06:00
|
|
|
obj-$(CONFIG_DMATEST) += dmatest.o
|
2009-07-28 15:32:12 -06:00
|
|
|
obj-$(CONFIG_INTEL_IOATDMA) += ioat/
|
dmaengine: driver for the iop32x, iop33x, and iop13xx raid engines
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 <asm/arch/adma.h> 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 <rmk@arm.linux.org.uk>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2007-01-02 13:52:26 -07:00
|
|
|
obj-$(CONFIG_INTEL_IOP_ADMA) += iop-adma.o
|
2008-03-01 07:42:48 -07:00
|
|
|
obj-$(CONFIG_FSL_DMA) += fsldma.o
|
2008-07-08 12:58:36 -06:00
|
|
|
obj-$(CONFIG_MV_XOR) += mv_xor.o
|
2008-07-08 12:59:42 -06:00
|
|
|
obj-$(CONFIG_DW_DMAC) += dw_dmac.o
|
2009-07-03 11:24:33 -06:00
|
|
|
obj-$(CONFIG_AT_HDMAC) += at_hdmac.o
|
i.MX31: Image Processing Unit DMA and IRQ drivers
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 <s.hauer@pengutronix.de>
Signed-off-by: Guennadi Liakhovetski <lg@denx.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2009-01-19 15:36:21 -07:00
|
|
|
obj-$(CONFIG_MX3_IPU) += ipu/
|
2009-04-22 09:40:30 -06:00
|
|
|
obj-$(CONFIG_TXX9_DMAC) += txx9dmac.o
|
2009-09-06 21:26:23 -06:00
|
|
|
obj-$(CONFIG_SH_DMAE) += shdma.o
|
2009-11-19 11:49:17 -07:00
|
|
|
obj-$(CONFIG_COH901318) += coh901318.o coh901318_lli.o
|
2009-12-11 21:24:44 -07:00
|
|
|
obj-$(CONFIG_AMCC_PPC440SPE_ADMA) += ppc4xx/
|