OpenWrt – Rev 1

Subversion Repositories:
Rev:
From b7d1d1f345bb3b25c360c1df812d98866e2ee7fb Mon Sep 17 00:00:00 2001
From: Jonas Gorski <jonas.gorski@gmail.com>
Date: Sat, 30 Sep 2017 13:50:03 +0200
Subject: [PATCH 2/4] bcm63xx_enet: use platform data for dma channel numbers

To reduce the reliance on device ids, pass the dma channel numbers to
the enet devices as platform data.

Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
---
 arch/mips/bcm63xx/dev-enet.c                          |  8 ++++++++
 arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_enet.h |  4 ++++
 drivers/net/ethernet/broadcom/bcm63xx_enet.c          | 11 ++---------
 3 files changed, 14 insertions(+), 9 deletions(-)

--- a/arch/mips/bcm63xx/dev-enet.c
+++ b/arch/mips/bcm63xx/dev-enet.c
@@ -265,6 +265,14 @@ int __init bcm63xx_enet_register(int uni
                dpd->dma_chan_width = ENETDMA_CHAN_WIDTH;
        }
 
+       if (unit == 0) {
+               dpd->rx_chan = 0;
+               dpd->tx_chan = 1;
+       } else {
+               dpd->rx_chan = 2;
+               dpd->tx_chan = 3;
+       }
+
        ret = platform_device_register(pdev);
        if (ret)
                return ret;
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_enet.h
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_enet.h
@@ -54,6 +54,10 @@ struct bcm63xx_enet_platform_data {
 
        /* DMA descriptor shift */
        unsigned int dma_desc_shift;
+
+       /* dma channel ids */
+       int rx_chan;
+       int tx_chan;
 };
 
 /*
--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
@@ -1772,15 +1772,6 @@ static int bcm_enet_probe(struct platfor
        priv->irq_tx = res_irq_tx->start;
        priv->mac_id = pdev->id;
 
-       /* get rx & tx dma channel id for this mac */
-       if (priv->mac_id == 0) {
-               priv->rx_chan = 0;
-               priv->tx_chan = 1;
-       } else {
-               priv->rx_chan = 2;
-               priv->tx_chan = 3;
-       }
-
        priv->mac_clk = devm_clk_get(&pdev->dev, "enet");
        if (IS_ERR(priv->mac_clk)) {
                ret = PTR_ERR(priv->mac_clk);
@@ -1812,6 +1803,8 @@ static int bcm_enet_probe(struct platfor
                priv->dma_chan_width = pd->dma_chan_width;
                priv->dma_has_sram = pd->dma_has_sram;
                priv->dma_desc_shift = pd->dma_desc_shift;
+               priv->rx_chan = pd->rx_chan;
+               priv->tx_chan = pd->tx_chan;
        }
 
        if (priv->mac_id == 0 && priv->has_phy && !priv->use_external_mii) {