[PATCH net-next 8/8] ARM: orion: Register DSA switch as a MDIO device

From: Florian Fainelli
Date: Tue Jan 10 2017 - 15:13:35 EST


Utilize the ability to pass board specific MDIO bus information towards a
particular MDIO device thus allowing us to provide the per-port switch layout
to the Marvell 88E6XXX switch driver.

Since we would end-up with conflicting registration paths, do not register the
"dsa" platform device anymore.

Signed-off-by: Florian Fainelli <f.fainelli@xxxxxxxxx>
---
arch/arm/plat-orion/common.c | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)

diff --git a/arch/arm/plat-orion/common.c b/arch/arm/plat-orion/common.c
index 272f49b2c68f..1d8f4ad1ac9a 100644
--- a/arch/arm/plat-orion/common.c
+++ b/arch/arm/plat-orion/common.c
@@ -22,6 +22,7 @@
#include <linux/platform_data/dma-mv_xor.h>
#include <linux/platform_data/usb-ehci-orion.h>
#include <plat/common.h>
+#include <linux/phy.h>

/* Create a clkdev entry for a given device/clk */
void __init orion_clkdev_add(const char *con_id, const char *dev_id,
@@ -470,15 +471,27 @@ void __init orion_ge11_init(struct mv643xx_eth_platform_data *eth_data,
/*****************************************************************************
* Ethernet switch
****************************************************************************/
+static __initdata const char *orion_ge00_mvmdio_bus_name = "orion-mii";
+static __initdata struct mdio_board_info
+ orion_ge00_switch_board_info[DSA_MAX_SWITCHES];
+
void __init orion_ge00_switch_init(struct dsa_platform_data *d)
{
+ struct mdio_board_info *bd;
int i;

d->netdev = &orion_ge00.dev;
- for (i = 0; i < d->nr_chips; i++)
- d->chip[i].host_dev = &orion_ge_mvmdio.dev;
+ for (i = 0; i < d->nr_chips; i++) {
+ bd = &orion_ge00_switch_board_info[i];
+ bd->bus_id = orion_ge00_mvmdio_bus_name;
+ bd->mdio_addr = d->chip[i].sw_addr;
+ strcpy(bd->modalias, "mv88e6085");
+ bd->platform_data = d;
+ }
+
+ mdiobus_register_board_info(orion_ge00_switch_board_info,
+ ARRAY_SIZE(orion_ge00_switch_board_info));

- platform_device_register_data(NULL, "dsa", 0, d, sizeof(d));
}

/*****************************************************************************
--
2.9.3