diff --git a/drivers/dma/amba-pl08x.c b/drivers/dma/amba-pl08x.c index 1081165d01a3..760b71eec84c 100644 --- a/drivers/dma/amba-pl08x.c +++ b/drivers/dma/amba-pl08x.c @@ -559,7 +559,7 @@ static int pl08x_fill_lli_for_desc(struct pl08x_driver_data *pl08x, u32 cctl, u32 *remainder) { struct pl08x_lli *llis_va = txd->llis_va; - struct pl08x_lli *llis_bus = (struct pl08x_lli *) txd->llis_bus; + dma_addr_t llis_bus = txd->llis_bus; BUG_ON(num_llis >= MAX_NUM_TSFR_LLIS); @@ -576,8 +576,7 @@ static int pl08x_fill_lli_for_desc(struct pl08x_driver_data *pl08x, * memory. So we don't manipulate this bit currently. */ - llis_va[num_llis].next = - (dma_addr_t)((u32) &(llis_bus[num_llis + 1])); + llis_va[num_llis].next = llis_bus + (num_llis + 1) * sizeof(struct pl08x_lli); if (cctl & PL080_CONTROL_SRC_INCR) txd->srcbus.addr += len; @@ -621,7 +620,6 @@ static int pl08x_fill_llis_for_desc(struct pl08x_driver_data *pl08x, int max_bytes_per_lli; int total_bytes = 0; struct pl08x_lli *llis_va; - struct pl08x_lli *llis_bus; txd->llis_va = dma_pool_alloc(pl08x->pool, GFP_NOWAIT, &txd->llis_bus); @@ -971,8 +969,7 @@ static void pl08x_free_txd(struct pl08x_driver_data *pl08x, struct pl08x_txd *txd) { /* Free the LLI */ - dma_pool_free(pl08x->pool, txd->llis_va, - txd->llis_bus); + dma_pool_free(pl08x->pool, txd->llis_va, txd->llis_bus); pl08x->pool_ctr--;