ARM: orion: Register DSA switch as a MDIO device
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. Note that the MDIO devices registered by code in net/dsa/dsa2.c does not parse a dsa_platform_data, but directly take a dsa_chip_data (specific to a single switch chip), so we update the different call sites to pass this structure down to orion_ge00_switch_init(). Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Tento commit je obsažen v:

odevzdal
David S. Miller

rodič
648ea01340
revize
575e93f7b5
@@ -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
|
||||
****************************************************************************/
|
||||
void __init orion_ge00_switch_init(struct dsa_platform_data *d)
|
||||
static __initconst const char *orion_ge00_mvmdio_bus_name = "orion-mii";
|
||||
static __initdata struct mdio_board_info
|
||||
orion_ge00_switch_board_info;
|
||||
|
||||
void __init orion_ge00_switch_init(struct dsa_chip_data *d)
|
||||
{
|
||||
int i;
|
||||
struct mdio_board_info *bd;
|
||||
unsigned 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 < ARRAY_SIZE(d->port_names); i++)
|
||||
if (!strcmp(d->port_names[i], "cpu"))
|
||||
break;
|
||||
|
||||
platform_device_register_data(NULL, "dsa", 0, d, sizeof(d));
|
||||
bd = &orion_ge00_switch_board_info;
|
||||
bd->bus_id = orion_ge00_mvmdio_bus_name;
|
||||
bd->mdio_addr = d->sw_addr;
|
||||
d->netdev[i] = &orion_ge00.dev;
|
||||
strcpy(bd->modalias, "mv88e6085");
|
||||
bd->platform_data = d;
|
||||
|
||||
mdiobus_register_board_info(&orion_ge00_switch_board_info, 1);
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
Odkázat v novém úkolu
Zablokovat Uživatele