提交 fc9b4910 编写于 作者: M Mika Westerberg 提交者: David S. Miller

net: ep93xx_eth: pass struct device to DMA API functions

We shouldn't use NULL for any DMA API functions, unless we are dealing with
ISA or EISA device. So pass correct struct dev pointer to these functions.
Signed-off-by: NMika Westerberg <mika.westerberg@iki.fi>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 fa70cf47
...@@ -284,7 +284,7 @@ static int ep93xx_rx(struct net_device *dev, int processed, int budget) ...@@ -284,7 +284,7 @@ static int ep93xx_rx(struct net_device *dev, int processed, int budget)
skb = dev_alloc_skb(length + 2); skb = dev_alloc_skb(length + 2);
if (likely(skb != NULL)) { if (likely(skb != NULL)) {
skb_reserve(skb, 2); skb_reserve(skb, 2);
dma_sync_single_for_cpu(NULL, ep->descs->rdesc[entry].buf_addr, dma_sync_single_for_cpu(dev->dev.parent, ep->descs->rdesc[entry].buf_addr,
length, DMA_FROM_DEVICE); length, DMA_FROM_DEVICE);
skb_copy_to_linear_data(skb, ep->rx_buf[entry], length); skb_copy_to_linear_data(skb, ep->rx_buf[entry], length);
skb_put(skb, length); skb_put(skb, length);
...@@ -362,7 +362,7 @@ static int ep93xx_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -362,7 +362,7 @@ static int ep93xx_xmit(struct sk_buff *skb, struct net_device *dev)
ep->descs->tdesc[entry].tdesc1 = ep->descs->tdesc[entry].tdesc1 =
TDESC1_EOF | (entry << 16) | (skb->len & 0xfff); TDESC1_EOF | (entry << 16) | (skb->len & 0xfff);
skb_copy_and_csum_dev(skb, ep->tx_buf[entry]); skb_copy_and_csum_dev(skb, ep->tx_buf[entry]);
dma_sync_single_for_cpu(NULL, ep->descs->tdesc[entry].buf_addr, dma_sync_single_for_cpu(dev->dev.parent, ep->descs->tdesc[entry].buf_addr,
skb->len, DMA_TO_DEVICE); skb->len, DMA_TO_DEVICE);
dev_kfree_skb(skb); dev_kfree_skb(skb);
...@@ -457,6 +457,7 @@ static irqreturn_t ep93xx_irq(int irq, void *dev_id) ...@@ -457,6 +457,7 @@ static irqreturn_t ep93xx_irq(int irq, void *dev_id)
static void ep93xx_free_buffers(struct ep93xx_priv *ep) static void ep93xx_free_buffers(struct ep93xx_priv *ep)
{ {
struct device *dev = ep->dev->dev.parent;
int i; int i;
for (i = 0; i < RX_QUEUE_ENTRIES; i += 2) { for (i = 0; i < RX_QUEUE_ENTRIES; i += 2) {
...@@ -464,7 +465,7 @@ static void ep93xx_free_buffers(struct ep93xx_priv *ep) ...@@ -464,7 +465,7 @@ static void ep93xx_free_buffers(struct ep93xx_priv *ep)
d = ep->descs->rdesc[i].buf_addr; d = ep->descs->rdesc[i].buf_addr;
if (d) if (d)
dma_unmap_single(NULL, d, PAGE_SIZE, DMA_FROM_DEVICE); dma_unmap_single(dev, d, PAGE_SIZE, DMA_FROM_DEVICE);
if (ep->rx_buf[i] != NULL) if (ep->rx_buf[i] != NULL)
free_page((unsigned long)ep->rx_buf[i]); free_page((unsigned long)ep->rx_buf[i]);
...@@ -475,13 +476,13 @@ static void ep93xx_free_buffers(struct ep93xx_priv *ep) ...@@ -475,13 +476,13 @@ static void ep93xx_free_buffers(struct ep93xx_priv *ep)
d = ep->descs->tdesc[i].buf_addr; d = ep->descs->tdesc[i].buf_addr;
if (d) if (d)
dma_unmap_single(NULL, d, PAGE_SIZE, DMA_TO_DEVICE); dma_unmap_single(dev, d, PAGE_SIZE, DMA_TO_DEVICE);
if (ep->tx_buf[i] != NULL) if (ep->tx_buf[i] != NULL)
free_page((unsigned long)ep->tx_buf[i]); free_page((unsigned long)ep->tx_buf[i]);
} }
dma_free_coherent(NULL, sizeof(struct ep93xx_descs), ep->descs, dma_free_coherent(dev, sizeof(struct ep93xx_descs), ep->descs,
ep->descs_dma_addr); ep->descs_dma_addr);
} }
...@@ -491,9 +492,10 @@ static void ep93xx_free_buffers(struct ep93xx_priv *ep) ...@@ -491,9 +492,10 @@ static void ep93xx_free_buffers(struct ep93xx_priv *ep)
*/ */
static int ep93xx_alloc_buffers(struct ep93xx_priv *ep) static int ep93xx_alloc_buffers(struct ep93xx_priv *ep)
{ {
struct device *dev = ep->dev->dev.parent;
int i; int i;
ep->descs = dma_alloc_coherent(NULL, sizeof(struct ep93xx_descs), ep->descs = dma_alloc_coherent(dev, sizeof(struct ep93xx_descs),
&ep->descs_dma_addr, GFP_KERNEL | GFP_DMA); &ep->descs_dma_addr, GFP_KERNEL | GFP_DMA);
if (ep->descs == NULL) if (ep->descs == NULL)
return 1; return 1;
...@@ -506,8 +508,8 @@ static int ep93xx_alloc_buffers(struct ep93xx_priv *ep) ...@@ -506,8 +508,8 @@ static int ep93xx_alloc_buffers(struct ep93xx_priv *ep)
if (page == NULL) if (page == NULL)
goto err; goto err;
d = dma_map_single(NULL, page, PAGE_SIZE, DMA_FROM_DEVICE); d = dma_map_single(dev, page, PAGE_SIZE, DMA_FROM_DEVICE);
if (dma_mapping_error(NULL, d)) { if (dma_mapping_error(dev, d)) {
free_page((unsigned long)page); free_page((unsigned long)page);
goto err; goto err;
} }
...@@ -529,8 +531,8 @@ static int ep93xx_alloc_buffers(struct ep93xx_priv *ep) ...@@ -529,8 +531,8 @@ static int ep93xx_alloc_buffers(struct ep93xx_priv *ep)
if (page == NULL) if (page == NULL)
goto err; goto err;
d = dma_map_single(NULL, page, PAGE_SIZE, DMA_TO_DEVICE); d = dma_map_single(dev, page, PAGE_SIZE, DMA_TO_DEVICE);
if (dma_mapping_error(NULL, d)) { if (dma_mapping_error(dev, d)) {
free_page((unsigned long)page); free_page((unsigned long)page);
goto err; goto err;
} }
...@@ -829,6 +831,7 @@ static int ep93xx_eth_probe(struct platform_device *pdev) ...@@ -829,6 +831,7 @@ static int ep93xx_eth_probe(struct platform_device *pdev)
} }
ep = netdev_priv(dev); ep = netdev_priv(dev);
ep->dev = dev; ep->dev = dev;
SET_NETDEV_DEV(dev, &pdev->dev);
netif_napi_add(dev, &ep->napi, ep93xx_poll, 64); netif_napi_add(dev, &ep->napi, ep93xx_poll, 64);
platform_set_drvdata(pdev, dev); platform_set_drvdata(pdev, dev);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册