• Paul Cercueil's avatar
    dmaengine: dma-jz4780: Separate chan/ctrl registers · 33633583
    Paul Cercueil authored
    The register area of the JZ4780 DMA core can be split into different
    sections for different purposes:
    
    * one set of registers is used to perform actions at the DMA core level,
    that will generally affect all channels;
    
    * one set of registers per DMA channel, to perform actions at the DMA
    channel level, that will only affect the channel in question.
    
    The problem rises when trying to support new versions of the JZ47xx
    Ingenic SoC. For instance, the JZ4770 has two DMA cores, each one
    with six DMA channels, and the register sets are interleaved:
    <DMA0 chan regs> <DMA1 chan regs> <DMA0 ctrl regs> <DMA1 ctrl regs>
    
    By using one memory resource for the channel-specific registers and
    one memory resource for the core-specific registers, we can support
    the JZ4770, by initializing the driver once per DMA core with different
    addresses.
    Signed-off-by: default avatarPaul Cercueil <paul@crapouillou.net>
    Tested-by: default avatarMathieu Malaterre <malat@debian.org>
    Signed-off-by: default avatarVinod Koul <vkoul@kernel.org>
    33633583
dma-jz4780.c 25.6 KB