diff options
author | Lucas Stach <dev@lynxeye.de> | 2015-03-13 21:23:44 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2015-03-16 05:30:19 +0100 |
commit | a76c62f80d95860e6c5904ab5cb91667c43f61eb (patch) | |
tree | 81535e067c42691149100ce217a129724a93f45c /drivers/net/mvneta.c | |
parent | eab9e4cdd9648b8b795ba04ec56cb842deac564e (diff) | |
download | barebox-a76c62f80d95860e6c5904ab5cb91667c43f61eb.tar.gz barebox-a76c62f80d95860e6c5904ab5cb91667c43f61eb.tar.xz |
net: mvneta: convert to streaming DMA ops
Move to the common streaming DMA ops in order to get rid of
the direct usage of the ARM MMU functions for the cache
maintenance.
Signed-off-by: Lucas Stach <dev@lynxeye.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/net/mvneta.c')
-rw-r--r-- | drivers/net/mvneta.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/net/mvneta.c b/drivers/net/mvneta.c index f2948e4ed7..d4c8a2c68d 100644 --- a/drivers/net/mvneta.c +++ b/drivers/net/mvneta.c @@ -393,7 +393,7 @@ static int mvneta_send(struct eth_device *edev, void *data, int len) int ret, error, last_desc; /* Flush transmit data */ - dma_flush_range((unsigned long)data, (unsigned long)data+len); + dma_sync_single_for_device((unsigned long)data, len, DMA_TO_DEVICE); /* Fill the Tx descriptor */ txdesc->cmd_sts |= MVNETA_TX_L4_CSUM_NOT | MVNETA_TXD_FLZ_DESC; @@ -409,6 +409,7 @@ static int mvneta_send(struct eth_device *edev, void *data, int len) * the Tx port status register (PTXS). */ ret = wait_on_timeout(TRANSFER_TIMEOUT, !mvneta_pending_tx(priv)); + dma_sync_single_for_cpu((unsigned long)data, len, DMA_TO_DEVICE); if (ret) { dev_err(&edev->dev, "transmit timeout\n"); return ret; @@ -459,15 +460,17 @@ static int mvneta_recv(struct eth_device *edev) } /* invalidate current receive buffer */ - dma_inv_range((unsigned long)rxdesc->buf_phys_addr, - (unsigned long)rxdesc->buf_phys_addr + - ALIGN(PKTSIZE, 8)); + dma_sync_single_for_cpu((unsigned long)rxdesc->buf_phys_addr, + ALIGN(PKTSIZE, 8), DMA_FROM_DEVICE); /* received packet is padded with two null bytes (Marvell header) */ net_receive(edev, (void *)(rxdesc->buf_phys_addr + MVNETA_MH_SIZE), rxdesc->data_size - MVNETA_MH_SIZE); ret = 0; + dma_sync_single_for_device((unsigned long)rxdesc->buf_phys_addr, + ALIGN(PKTSIZE, 8), DMA_FROM_DEVICE); + recv_err: /* reset this and get next rx descriptor*/ rxdesc->data_size = 0; |