diff options
Diffstat (limited to 'target/linux/lantiq/patches-5.4/0005-lantiq_etop-pass-struct-device-to-DMA-API-functions.patch')
-rw-r--r-- | target/linux/lantiq/patches-5.4/0005-lantiq_etop-pass-struct-device-to-DMA-API-functions.patch | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/target/linux/lantiq/patches-5.4/0005-lantiq_etop-pass-struct-device-to-DMA-API-functions.patch b/target/linux/lantiq/patches-5.4/0005-lantiq_etop-pass-struct-device-to-DMA-API-functions.patch new file mode 100644 index 0000000000..ccde787d2d --- /dev/null +++ b/target/linux/lantiq/patches-5.4/0005-lantiq_etop-pass-struct-device-to-DMA-API-functions.patch @@ -0,0 +1,43 @@ +From 74e0deb89a8ba27c132b1f0e08643e215b5c1f92 Mon Sep 17 00:00:00 2001 +From: Christoph Hellwig <hch@lst.de> +Date: Mon, 11 Feb 2019 14:20:00 +0100 +Subject: [PATCH] lantiq_etop: pass struct device to DMA API functions + +The DMA API generally relies on a struct device to work properly, and +only barely works without one for legacy reasons. Pass the easily +available struct device from the platform_device to remedy this. + +Note this driver seems to lack dma_unmap_* calls entirely, but fixing +that is left for another time. + +Signed-off-by: Christoph Hellwig <hch@lst.de> +Signed-off-by: David S. Miller <davem@davemloft.net> +--- + drivers/net/ethernet/lantiq_etop.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +--- a/drivers/net/ethernet/lantiq_etop.c ++++ b/drivers/net/ethernet/lantiq_etop.c +@@ -112,10 +112,12 @@ struct ltq_etop_priv { + static int + ltq_etop_alloc_skb(struct ltq_etop_chan *ch) + { ++ struct ltq_etop_priv *priv = netdev_priv(ch->netdev); ++ + ch->skb[ch->dma.desc] = netdev_alloc_skb(ch->netdev, MAX_DMA_DATA_LEN); + if (!ch->skb[ch->dma.desc]) + return -ENOMEM; +- ch->dma.desc_base[ch->dma.desc].addr = dma_map_single(NULL, ++ ch->dma.desc_base[ch->dma.desc].addr = dma_map_single(&priv->pdev->dev, + ch->skb[ch->dma.desc]->data, MAX_DMA_DATA_LEN, + DMA_FROM_DEVICE); + ch->dma.desc_base[ch->dma.desc].addr = +@@ -493,7 +495,7 @@ ltq_etop_tx(struct sk_buff *skb, struct + netif_trans_update(dev); + + spin_lock_irqsave(&priv->lock, flags); +- desc->addr = ((unsigned int) dma_map_single(NULL, skb->data, len, ++ desc->addr = ((unsigned int) dma_map_single(&priv->pdev->dev, skb->data, len, + DMA_TO_DEVICE)) - byte_offset; + wmb(); + desc->ctl = LTQ_DMA_OWN | LTQ_DMA_SOP | LTQ_DMA_EOP | |