20 Aug, 2015

1 commit

  • set_irq_flags is ARM specific with custom flags which have genirq
    equivalents. Convert drivers to use the genirq interfaces directly, so we
    can kill off set_irq_flags. The translation of flags is as follows:

    IRQF_VALID -> !IRQ_NOREQUEST
    IRQF_PROBE -> !IRQ_NOPROBE
    IRQF_NOAUTOEN -> IRQ_NOAUTOEN

    For IRQs managed by an irqdomain, the irqdomain core code handles clearing
    and setting IRQ_NOREQUEST already, so there is no need to do this in
    .map() functions and we can simply remove the set_irq_flags calls. Some
    users also modify IRQ_NOPROBE and this has been maintained although it
    is not clear that is really needed. There appears to be a great deal of
    blind copy and paste of this code.

    Signed-off-by: Rob Herring
    Cc: Dan Williams
    Cc: Vinod Koul
    Cc: dmaengine@vger.kernel.org
    Signed-off-by: Vinod Koul

    Rob Herring
     

19 Aug, 2015

16 commits

  • The new Solo X has more requirements for SDMA events. So it creates
    a event mux to remap most of event numbers in GPR (General Purpose
    Register). If we want to use SDMA support for those module who do
    not get the even number as default, we need to configure GPR first.

    Thus this patch adds this support of GPR event remapping configuration
    to the SDMA driver.

    Signed-off-by: Zidan Wang
    Signed-off-by: Vinod Koul

    Zidan Wang
     
  • In cyclic mode, the round chaining has been broken by the introduction
    of at_xdmac_queue_desc(): AT_XDMAC_MBR_UBC_NDE is set for all descriptors
    excepted for the last one. at_xdmac_queue_desc() has to be called one
    more time to chain the last and the first descriptors.

    Signed-off-by: Ludovic Desroches
    Fixes: 0d0ee751f7f7 ("dmaengine: xdmac: Rework the chaining logic")
    Signed-off-by: Vinod Koul

    Ludovic Desroches
     
  • Tasklets may have been scheduled as a result of an earlier interrupt
    that could still be running. Kill them before unregistering the
    device.

    Signed-off-by: Alex Smith
    Cc: Vinod Koul
    Cc: Zubair Lutfullah Kakakhel
    Cc: dmaengine@vger.kernel.org
    Signed-off-by: Vinod Koul

    Alex Smith
     
  • We must explicitly free the IRQ before the device is unregistered in
    case any device interrupt still occurs, so there's no point in using
    the managed variations of the IRQ functions. Change to the regular
    versions.

    Signed-off-by: Alex Smith
    Cc: Vinod Koul
    Cc: Zubair Lutfullah Kakakhel
    Cc: dmaengine@vger.kernel.org
    Signed-off-by: Vinod Koul

    Alex Smith
     
  • The header just includes definitions of hardware-specific numbers which
    can be written directly in the device tree, there's no need for a public
    header containing these definitions.

    Signed-off-by: Alex Smith
    Cc: Vinod Koul
    Cc: Zubair Lutfullah Kakakhel
    Cc: dmaengine@vger.kernel.org
    Signed-off-by: Vinod Koul

    Alex Smith
     
  • When scanning for a free DMA channel, the filter function should ensure
    that the channel is on the controller that it was requested to be on in
    the DT.

    Signed-off-by: Alex Smith
    Cc: Vinod Koul
    Cc: Zubair Lutfullah Kakakhel
    Cc: dmaengine@vger.kernel.org
    Signed-off-by: Vinod Koul

    Alex Smith
     
  • When the DT requests a specific channel to use it is not necesssary
    to scan through all DMA channels in the system. Just return the
    requested channel using dma_get_slave_channel().

    Signed-off-by: Alex Smith
    Cc: Vinod Koul
    Cc: Zubair Lutfullah Kakakhel
    Cc: dmaengine@vger.kernel.org
    Signed-off-by: Vinod Koul

    Alex Smith
     
  • There are a some signedness bugs such as testing for < 0 on unsigned
    return values. Additionally there are some cases where functions which
    should return NULL on error actually return a PTR_ERR value which can
    result in oopses on error. Fix these issues.

    Signed-off-by: Alex Smith
    Cc: Vinod Koul
    Cc: Zubair Lutfullah Kakakhel
    Cc: dmaengine@vger.kernel.org
    Signed-off-by: Vinod Koul

    Alex Smith
     
  • For some reason the controller does not support 8 byte transfers (but
    does support all other powers of 2 up to 128). In this case fall back
    to 4 bytes. In addition, fall back to 128 bytes when any larger power
    of 2 would be possible within the alignment constraints, as this is
    the maximum supported.

    It makes no sense to outright reject 8 or >128 bytes just because the
    alignment constraints make those the maximum possible size given the
    parameters for the transaction. For instance, this can result in a DMA
    from/to an 8 byte aligned address failing.

    It is perfectly safe to fall back to smaller transfer sizes, the only
    consequence is reduced transfer efficiency, which is far better than
    not allowing the transfer at all.

    Signed-off-by: Alex Smith
    Cc: Vinod Koul
    Cc: Zubair Lutfullah Kakakhel
    Cc: dmaengine@vger.kernel.org
    Signed-off-by: Vinod Koul

    Alex Smith
     
  • Several function prototypes did not match the dmaengine API they were
    implementing, resulting in build warnings. Correct these.

    Signed-off-by: Alex Smith
    Cc: Vinod Koul
    Cc: Zubair Lutfullah Kakakhel
    Cc: dmaengine@vger.kernel.org
    Signed-off-by: Vinod Koul

    Alex Smith
     
  • If DMA interrupt comes and is latched by IRQ controller during the
    execution of dma_terminate_all(), dma_irq routine will be executed
    after dma terminated, and it will cause kernel panic.
    We clear DMA interrupts in dma_terminate_all() to avoid this useless
    interrupt.

    Signed-off-by: Yanchang Li
    Signed-off-by: Barry Song
    Signed-off-by: Vinod Koul

    Yanchang Li
     
  • Add device tree bindings documentation for the
    lpc1850-dmamux DMA router.

    Signed-off-by: Joachim Eastwood
    Signed-off-by: Vinod Koul

    Joachim Eastwood
     
  • Add support for DMA on NXP LPC18xx/43xx platforms which has
    a multiplexer in front of the PL080 dma request lines.

    The mux is a single register in the LPC18xx/43xx CREG block
    and can multiplex up to 4 request lines to each of the 16
    lines on the PL080.

    Signed-off-by: Joachim Eastwood
    Signed-off-by: Vinod Koul

    Joachim Eastwood
     
  • This introduces device tree bindings for the PL08x DMA controllers
    when used with fixed signal assignment per channel, i.e. if each
    channel on the PL08x is assigned precisely one burst/single signal
    set.

    [je: remove channel sub-node parsing, use cell value to assign AHB]

    Signed-off-by: Linus Walleij
    Signed-off-by: Joachim Eastwood
    Signed-off-by: Vinod Koul

    Linus Walleij
     
  • Add support for assigning DMA channels from a device tree.

    [je: remove channel sub-node parsing, dynamic channel creation on xlate]

    Signed-off-by: Linus Walleij
    Signed-off-by: Joachim Eastwood
    Signed-off-by: Vinod Koul

    Linus Walleij
     
  • This fixes the following error:
    drivers/dma/pxa_dma.c: In function ‘dbg_show_requester_chan’:
    drivers/dma/pxa_dma.c:192:2: error: void value not ignored as it ought to be
    pos += seq_printf(s, "DMA channel %d requester :\n", phy->idx);
    ^
    drivers/dma/pxa_dma.c:197:8: error: void value not ignored as it ought to be
    !!(drcmr & DRCMR_MAPVLD));
    ^
    scripts/Makefile.build:258: recipe for target 'drivers/dma/pxa_dma.o' failed

    Signed-off-by: Robert Jarzmik
    Signed-off-by: Vinod Koul

    Robert Jarzmik
     

17 Aug, 2015

20 commits


06 Aug, 2015

3 commits