You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.1 KiB
72 lines
2.1 KiB
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) {
|
|
|