16 Apr, 2014

3 commits

  • Because of some driver base on DMA, changed the initcall order as subsys_initcall.

    Signed-off-by: Yuan Yao
    Signed-off-by: Vinod Koul

    Yuan Yao
     
  • The ">" here should be ">=" or we are one step beyond the end of the
    sdma->channels[] array.

    Fixes: 2e041c94628c ('dmaengine: sirf: enable generic dt binding for dma channels')
    Signed-off-by: Dan Carpenter
    Acked-by: Barry Song
    Signed-off-by: Vinod Koul

    Dan Carpenter
     
  • VIDEO_TIMBERDALE selects TIMB_DMA which itself depends on
    MFD_TIMBERDALE, so VIDEO_TIMBERDALE should either select or depend on
    MFD_TIMBERDALE as well. I chose to make it depend on it because I
    think it makes more sense and it is consistent with what other options
    are doing.

    Adding a "|| HAS_IOMEM" to the TIMB_DMA dependencies silenced the
    kconfig warning about unmet direct dependencies but it was wrong:
    without MFD_TIMBERDALE, TIMB_DMA is useless as the driver has no
    device to bind to.

    Signed-off-by: Jean Delvare
    Cc: Vinod Koul
    Cc: Dan Williams
    Cc: Mauro Carvalho Chehab
    Signed-off-by: Vinod Koul

    Jean Delvare
     

14 Apr, 2014

1 commit

  • The code to handle any length SG lists calls edma_resume()
    even before edma_start() is called. This is incorrect
    because edma_resume() enables edma events on the channel
    after which CPU (in edma_start) cannot clear posted
    events by writing to ECR (per the EDMA user's guide).

    Because of this EDMA transfers fail to start if due
    to some reason there is a pending EDMA event registered
    even before EDMA transfers are started. This can happen if
    an EDMA event is a byproduct of device initialization.

    Fix this by calling edma_resume() only if it is not the
    first batch of MAX_NR_SG elements.

    Without this patch, MMC/SD fails to function on DA850 EVM
    with DMA. The behaviour is triggered by specific IP and
    this can explain why the issue was not reported before
    (example with MMC/SD on AM335x).

    Tested on DA850 EVM and AM335x EVM-SK using MMC/SD card.

    Cc: stable@vger.kernel.org # v3.12.x+
    Cc: Joel Fernandes
    Acked-by: Joel Fernandes
    Tested-by: Jon Ringle
    Tested-by: Alexander Holler
    Reported-by: Jon Ringle
    Signed-off-by: Sekhar Nori
    Signed-off-by: Vinod Koul

    Sekhar Nori
     

10 Apr, 2014

1 commit

  • Pull slave-dmaengine updates from Vinod Koul:
    - New driver for Qcom bam dma
    - New driver for RCAR peri-peri
    - New driver for FSL eDMA
    - Various odd fixes and updates thru the subsystem

    * 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma: (29 commits)
    dmaengine: add Qualcomm BAM dma driver
    shdma: add R-Car Audio DMAC peri peri driver
    dmaengine: sirf: enable generic dt binding for dma channels
    dma: omap-dma: Implement device_slave_caps callback
    dmaengine: qcom_bam_dma: Add device tree binding
    dma: dw: Add suspend and resume handling for PCI mode DW_DMAC.
    dma: dw: allocate memory in two stages in probe
    Add new line to test result strings produced in verbose mode
    dmaengine: pch_dma: use tasklet_kill in teardown
    dmaengine: at_hdmac: use tasklet_kill in teardown
    dma: cppi41: start tear down only if channel is busy
    usb: musb: musb_cppi41: Dont reprogram DMA if tear down is initiated
    dmaengine: s3c24xx-dma: make phy->irq signed for error handling
    dma: imx-dma: Add missing module owner field
    dma: imx-dma: Replace printk with dev_*
    dma: fsl-edma: fix static checker warning of NULL dereference
    dma: Remove comment about embedding dma_slave_config into custom structs
    dma: mmp_tdma: move to generic device tree binding
    dma: mmp_pdma: add IRQF_SHARED when request irq
    dma: edma: Fix memory leak in edma_prep_dma_cyclic()
    ...

    Linus Torvalds
     

05 Apr, 2014

2 commits

  • Conflicts:
    drivers/dma/Makefile

    Signed-off-by: Vinod Koul

    Vinod Koul
     
  • Add the DMA engine driver for the QCOM Bus Access Manager (BAM) DMA controller
    found in the MSM 8x74 platforms.

    Each BAM DMA device is associated with a specific on-chip peripheral. Each
    channel provides a uni-directional data transfer engine that is capable of
    transferring data between the peripheral and system memory (System mode), or
    between two peripherals (BAM2BAM).

    The initial release of this driver only supports slave transfers between
    peripherals and system memory.

    Signed-off-by: Andy Gross
    Tested-by: Stanimir Varbanov
    Signed-off-by: Vinod Koul

    Andy Gross
     

04 Apr, 2014

21 commits


29 Mar, 2014

3 commits


26 Mar, 2014

3 commits


17 Mar, 2014

3 commits

  • Vinod Koul
     
  • As discussed in [1] the tasklet_disable is not a proper function for teardown.
    We need to ensure irq is disabled, followed by ensuring that don't schedule any
    more tasklets and then its safe to use tasklet_kill().

    Here in pch dma driver we need to use free_irq() before tasklet_kill(). So move
    up the free_irq() which will ensure that the irq is disabled and also wait till
    all scheduled interrupts are executed by invoking synchronize_irq().

    [1]: http://lwn.net/Articles/588457/

    Reported-by: Thomas Gleixner
    Signed-off-by: Vinod Koul

    Vinod Koul
     
  • As discussed in [1] the tasklet_disable is not a proper function for teardown.
    We need to ensure irq is disabled, followed by ensuring that don't schedule any
    more tasklets and then its safe to use tasklet_kill().

    Here in at_hdmac driver we use free_irq() before tasklet_kill(). The free_irq()
    will ensure that the irq is disabled and also wait till all scheduled interrupts
    are executed by invoking synchronize_irq(). So we need to only do tasklet_kill()
    after invoking free_irq()

    [1]: http://lwn.net/Articles/588457/

    Reported-by: Thomas Gleixner
    Acked-by: Nicolas Ferre
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Vinod Koul

    Vinod Koul
     

11 Mar, 2014

2 commits


06 Mar, 2014

1 commit