• Sascha Hauer's avatar
    dmaengine: Add Freescale i.MX SDMA support · 1ec1e82f
    Sascha Hauer authored
    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: default avatarSascha Hauer <s.hauer@pengutronix.de>
    Reviewed-by: default avatarLinus Walleij <linus.ml.walleij@gmail.com>
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    1ec1e82f
imx-sdma.c 34 KB