• Jon Hunter's avatar
    dmaengine: tegra-apb: Return the actual descriptor status · d3183447
    Jon Hunter authored
    Commit 71f7e6cc ('dmaengine: tegra20-apb-dma: Only calculate residue
    if txstate exists') changed the tegra_dma_tx_status() function to only
    calculate the residue if there is a valid 'txstate' pointer for storing
    the residue. Although this makes sense, this changed the behaviour of
    the function tegra_dma_tx_status() such that if the pointer 'txstate' is
    not valid, then we will return whatever state is returned by
    dma_cookie_status() and no longer return the state by looking up the DMA
    descriptor and returning it's state.
    
    Please note that dma_cookie_status() will either return DMA_COMPLETE or
    DMA_IN_PROGRESS. However, if dma_cookie_status() returns DMA_IN_PROGRESS
    the actual status could be DMA_ERROR which will only be seen from
    checking the descriptor status. Therefore, even if 'txstate' is not
    valid, still check to see if there is a valid descriptor for the cookie
    in question and if so return the descriptor state. Finally, ensure the
    residue is still not calculated if the 'txstate' is not valid.
    Signed-off-by: default avatarJon Hunter <jonathanh@nvidia.com>
    Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
    d3183447
tegra20-apb-dma.c 44.4 KB