diff options
Diffstat (limited to 'target/linux/generic/patches-4.4/071-v4.8-0002-net-ethernet-bgmac-add-dma_dev-pointer.patch')
-rw-r--r-- | target/linux/generic/patches-4.4/071-v4.8-0002-net-ethernet-bgmac-add-dma_dev-pointer.patch | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/target/linux/generic/patches-4.4/071-v4.8-0002-net-ethernet-bgmac-add-dma_dev-pointer.patch b/target/linux/generic/patches-4.4/071-v4.8-0002-net-ethernet-bgmac-add-dma_dev-pointer.patch new file mode 100644 index 0000000000..dd5b8772e3 --- /dev/null +++ b/target/linux/generic/patches-4.4/071-v4.8-0002-net-ethernet-bgmac-add-dma_dev-pointer.patch @@ -0,0 +1,112 @@ +From a0b68486f6f680c7c0352a47c60042d7d95ffd87 Mon Sep 17 00:00:00 2001 +From: Jon Mason <jon.mason@broadcom.com> +Date: Thu, 7 Jul 2016 19:08:54 -0400 +Subject: [PATCH 2/5] net: ethernet: bgmac: add dma_dev pointer + +The dma buffer allocation, etc references a dma_dev device pointer from +the bcma core. In anticipation of removing the bcma requirement for +this driver, these must be changed to not reference that struct. Add a +dma_dev device pointer to the bgmac stuct and reference that instead. + +Signed-off-by: Jon Mason <jon.mason@broadcom.com> +Acked-by: Arnd Bergmann <arnd@arndb.de> +Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> +Tested-by: Florian Fainelli <f.fainelli@gmail.com> +Signed-off-by: David S. Miller <davem@davemloft.net> +--- + drivers/net/ethernet/broadcom/bgmac.c | 17 +++++++++-------- + drivers/net/ethernet/broadcom/bgmac.h | 1 + + 2 files changed, 10 insertions(+), 8 deletions(-) + +--- a/drivers/net/ethernet/broadcom/bgmac.c ++++ b/drivers/net/ethernet/broadcom/bgmac.c +@@ -152,7 +152,7 @@ static netdev_tx_t bgmac_dma_tx_add(stru + struct bgmac_dma_ring *ring, + struct sk_buff *skb) + { +- struct device *dma_dev = bgmac->core->dma_dev; ++ struct device *dma_dev = bgmac->dma_dev; + struct net_device *net_dev = bgmac->net_dev; + int index = ring->end % BGMAC_TX_RING_SLOTS; + struct bgmac_slot_info *slot = &ring->slots[index]; +@@ -254,7 +254,7 @@ err_drop: + /* Free transmitted packets */ + static void bgmac_dma_tx_free(struct bgmac *bgmac, struct bgmac_dma_ring *ring) + { +- struct device *dma_dev = bgmac->core->dma_dev; ++ struct device *dma_dev = bgmac->dma_dev; + int empty_slot; + bool freed = false; + unsigned bytes_compl = 0, pkts_compl = 0; +@@ -355,7 +355,7 @@ static void bgmac_dma_rx_enable(struct b + static int bgmac_dma_rx_skb_for_slot(struct bgmac *bgmac, + struct bgmac_slot_info *slot) + { +- struct device *dma_dev = bgmac->core->dma_dev; ++ struct device *dma_dev = bgmac->dma_dev; + dma_addr_t dma_addr; + struct bgmac_rx_header *rx; + void *buf; +@@ -444,7 +444,7 @@ static int bgmac_dma_rx_read(struct bgma + end_slot /= sizeof(struct bgmac_dma_desc); + + while (ring->start != end_slot) { +- struct device *dma_dev = bgmac->core->dma_dev; ++ struct device *dma_dev = bgmac->dma_dev; + struct bgmac_slot_info *slot = &ring->slots[ring->start]; + struct bgmac_rx_header *rx = slot->buf + BGMAC_RX_BUF_OFFSET; + struct sk_buff *skb; +@@ -547,7 +547,7 @@ static bool bgmac_dma_unaligned(struct b + static void bgmac_dma_tx_ring_free(struct bgmac *bgmac, + struct bgmac_dma_ring *ring) + { +- struct device *dma_dev = bgmac->core->dma_dev; ++ struct device *dma_dev = bgmac->dma_dev; + struct bgmac_dma_desc *dma_desc = ring->cpu_base; + struct bgmac_slot_info *slot; + int i; +@@ -573,7 +573,7 @@ static void bgmac_dma_tx_ring_free(struc + static void bgmac_dma_rx_ring_free(struct bgmac *bgmac, + struct bgmac_dma_ring *ring) + { +- struct device *dma_dev = bgmac->core->dma_dev; ++ struct device *dma_dev = bgmac->dma_dev; + struct bgmac_slot_info *slot; + int i; + +@@ -594,7 +594,7 @@ static void bgmac_dma_ring_desc_free(str + struct bgmac_dma_ring *ring, + int num_slots) + { +- struct device *dma_dev = bgmac->core->dma_dev; ++ struct device *dma_dev = bgmac->dma_dev; + int size; + + if (!ring->cpu_base) +@@ -632,7 +632,7 @@ static void bgmac_dma_free(struct bgmac + + static int bgmac_dma_alloc(struct bgmac *bgmac) + { +- struct device *dma_dev = bgmac->core->dma_dev; ++ struct device *dma_dev = bgmac->dma_dev; + struct bgmac_dma_ring *ring; + static const u16 ring_base[] = { BGMAC_DMA_BASE0, BGMAC_DMA_BASE1, + BGMAC_DMA_BASE2, BGMAC_DMA_BASE3, }; +@@ -1733,6 +1733,7 @@ static int bgmac_probe(struct bcma_devic + net_dev->ethtool_ops = &bgmac_ethtool_ops; + bgmac = netdev_priv(net_dev); + bgmac->dev = &core->dev; ++ bgmac->dma_dev = core->dma_dev; + bgmac->net_dev = net_dev; + bgmac->core = core; + bcma_set_drvdata(core, bgmac); +--- a/drivers/net/ethernet/broadcom/bgmac.h ++++ b/drivers/net/ethernet/broadcom/bgmac.h +@@ -429,6 +429,7 @@ struct bgmac { + struct bcma_device *cmn; /* Reference to CMN core for BCM4706 */ + + struct device *dev; ++ struct device *dma_dev; + struct net_device *net_dev; + struct napi_struct napi; + struct mii_bus *mii_bus; |