dw_dmac: update tx_node_active in dwc_do_single_block
PATCH 1/1 dw_dmac: update tx_node_active in dwc_do_single_block
The "else" keyword in the dw_dma_tasklet is removed as well. All together simplifies the logic of the code and understanding of what is happening there.
Signed-off-by Andy Shevchenko <[email protected]>
--- drivers/dma/dw_dmac.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-)
drivers/dma/dw_dmac.c +6 -8
@@ -264,6 +264,9 @@ static inline void dwc_do_single_block(struct dw_dma_chan *dwc,channel_writel (dwc,CTL_LO , ctllo);channel_writel (dwc,CTL_HI , desc->lli.ctlhi);channel_set_bit (dw,CH_EN , dwc->mask); + +/* Move pointer to next descriptor */ + dwc->tx_node_active = dwc->tx_node_active->next; }/* Called with dwc->lock held and bh disabled */
@@ -295,7 +298,7 @@ static void dwc_dostart(struct dw_dma_chan *dwc, struct dw_desc *first)dwc_initialize (dwc); dwc->tx_list = &first->tx_list; - dwc->tx_node_active = first->tx_list.next; + dwc->tx_node_active = &first->tx_list;dwc_do_single_block (dwc, first);
@@ -621,18 +624,13 @@ static void dw_dma_tasklet(unsigned long data)dma_writel (dw,CLEAR .XFER, dwc->mask); -/* move pointer to next descriptor */ - dwc->tx_node_active = - dwc->tx_node_active->next; -dwc_do_single_block (dwc, desc);spin_unlock_irqrestore (&dwc->lock, flags);continue ; - }else { -/* we are done here */ -clear_bit (DW_DMA_IS_SOFT_LLP , &dwc->flags); } +/* we are done here */ +clear_bit (DW_DMA_IS_SOFT_LLP , &dwc->flags); }spin_unlock_irqrestore (&dwc->lock, flags);
Signature · 1 line
1.7.10.4
Quoted 7 lines · Andy Shevchenko
The "else" keyword in the
dw_dma_taskletis removed as well. All together simplifies the logic of the code and understanding of what is happening there.Signed-off-by Andy Shevchenko <[email protected]>--- drivers/dma/dw_dmac.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-)
Sorry for doing this late, was finding some time to go through code :)
Acked-by Viresh Kumar <[email protected]>