lkml.org 
[lkml]   [2009]   [Jun]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 50/62] Blackfin: add SSYNC to set_dma_sg() for descriptor fetching
    Date
    From: Sonic Zhang <sonic.zhang@analog.com>

    Make sure the internal core buffers are flushed before telling the DMA
    engine to fetch the descriptor structure so that it gets the right values.

    Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
    Signed-off-by: Mike Frysinger <vapier@gentoo.org>
    ---
    arch/blackfin/include/asm/dma.h | 8 +++++++-
    1 files changed, 7 insertions(+), 1 deletions(-)
    diff --git a/arch/blackfin/include/asm/dma.h b/arch/blackfin/include/asm/dma.h
    index 46c5618..c9a5962 100644
    --- a/arch/blackfin/include/asm/dma.h
    +++ b/arch/blackfin/include/asm/dma.h
    @@ -206,10 +206,16 @@ static inline unsigned long get_dma_curr_addr(unsigned int channel)

    static inline void set_dma_sg(unsigned int channel, struct dmasg *sg, int ndsize)
    {
    + /* Make sure the internal data buffers in the core are drained
    + * so that the DMA descriptors are completely written when the
    + * DMA engine goes to fetch them below.
    + */
    + SSYNC();
    +
    + dma_ch[channel].regs->next_desc_ptr = sg;
    dma_ch[channel].regs->cfg =
    (dma_ch[channel].regs->cfg & ~(0xf << 8)) |
    ((ndsize & 0xf) << 8);
    - dma_ch[channel].regs->next_desc_ptr = sg;
    }

    static inline int dma_channel_active(unsigned int channel)
    --
    1.6.3.1


    \
     
     \ /
      Last update: 2009-06-05 10:33    [from the cache]
    ©2003-2014 Jasper Spaans. hosted at Digital Ocean