ath79: ag71xx: pass correct device pointer to dma functions

linux 4.19 doesn't accept a NULL device for these functions.
It also complains that the device struct in net_device doesn't have
a dma_mask set.
Pass the device struct from platform_device for these functions.

Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
master
Chuanhong Guo 6 years ago committed by Petr Štetiar
parent 8d3af284e0
commit 4eaa3626a8
  1. 14
      target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c

@ -162,7 +162,7 @@ static void ag71xx_ring_rx_clean(struct ag71xx *ag)
for (i = 0; i < ring_size; i++) for (i = 0; i < ring_size; i++)
if (ring->buf[i].rx_buf) { if (ring->buf[i].rx_buf) {
dma_unmap_single(&ag->dev->dev, ring->buf[i].dma_addr, dma_unmap_single(&ag->pdev->dev, ring->buf[i].dma_addr,
ag->rx_buf_size, DMA_FROM_DEVICE); ag->rx_buf_size, DMA_FROM_DEVICE);
skb_free_frag(ring->buf[i].rx_buf); skb_free_frag(ring->buf[i].rx_buf);
} }
@ -187,7 +187,7 @@ static bool ag71xx_fill_rx_buf(struct ag71xx *ag, struct ag71xx_buf *buf,
return false; return false;
buf->rx_buf = data; buf->rx_buf = data;
buf->dma_addr = dma_map_single(&ag->dev->dev, data, ag->rx_buf_size, buf->dma_addr = dma_map_single(&ag->pdev->dev, data, ag->rx_buf_size,
DMA_FROM_DEVICE); DMA_FROM_DEVICE);
desc->data = (u32) buf->dma_addr + offset; desc->data = (u32) buf->dma_addr + offset;
return true; return true;
@ -276,7 +276,7 @@ static int ag71xx_rings_init(struct ag71xx *ag)
if (!tx->buf) if (!tx->buf)
return -ENOMEM; return -ENOMEM;
tx->descs_cpu = dma_alloc_coherent(NULL, ring_size * AG71XX_DESC_SIZE, tx->descs_cpu = dma_alloc_coherent(&ag->pdev->dev, ring_size * AG71XX_DESC_SIZE,
&tx->descs_dma, GFP_ATOMIC); &tx->descs_dma, GFP_ATOMIC);
if (!tx->descs_cpu) { if (!tx->descs_cpu) {
kfree(tx->buf); kfree(tx->buf);
@ -299,7 +299,7 @@ static void ag71xx_rings_free(struct ag71xx *ag)
int ring_size = BIT(tx->order) + BIT(rx->order); int ring_size = BIT(tx->order) + BIT(rx->order);
if (tx->descs_cpu) if (tx->descs_cpu)
dma_free_coherent(NULL, ring_size * AG71XX_DESC_SIZE, dma_free_coherent(&ag->pdev->dev, ring_size * AG71XX_DESC_SIZE,
tx->descs_cpu, tx->descs_dma); tx->descs_cpu, tx->descs_dma);
kfree(tx->buf); kfree(tx->buf);
@ -892,7 +892,7 @@ static netdev_tx_t ag71xx_hard_start_xmit(struct sk_buff *skb,
goto err_drop; goto err_drop;
} }
dma_addr = dma_map_single(&dev->dev, skb->data, skb->len, dma_addr = dma_map_single(&ag->pdev->dev, skb->data, skb->len,
DMA_TO_DEVICE); DMA_TO_DEVICE);
i = ring->curr & ring_mask; i = ring->curr & ring_mask;
@ -934,7 +934,7 @@ static netdev_tx_t ag71xx_hard_start_xmit(struct sk_buff *skb,
return NETDEV_TX_OK; return NETDEV_TX_OK;
err_drop_unmap: err_drop_unmap:
dma_unmap_single(&dev->dev, dma_addr, skb->len, DMA_TO_DEVICE); dma_unmap_single(&ag->pdev->dev, dma_addr, skb->len, DMA_TO_DEVICE);
err_drop: err_drop:
dev->stats.tx_dropped++; dev->stats.tx_dropped++;
@ -1147,7 +1147,7 @@ static int ag71xx_rx_packets(struct ag71xx *ag, int limit)
pktlen = desc->ctrl & pktlen_mask; pktlen = desc->ctrl & pktlen_mask;
pktlen -= ETH_FCS_LEN; pktlen -= ETH_FCS_LEN;
dma_unmap_single(&dev->dev, ring->buf[i].dma_addr, dma_unmap_single(&ag->pdev->dev, ring->buf[i].dma_addr,
ag->rx_buf_size, DMA_FROM_DEVICE); ag->rx_buf_size, DMA_FROM_DEVICE);
dev->stats.rx_packets++; dev->stats.rx_packets++;

Loading…
Cancel
Save