Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d43e85b7 authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Gregory CLEMENT
Browse files

ARM: orion5x: only call into phylib when available



Board code cannot call mdiobus_register_board_info() when phylib
or mdio_device is a loadable module:

arch/arm/plat-orion/common.o: In function `orion_ge00_switch_init':
:(.init.text+0x474): undefined reference to `mdiobus_register_board_info'

I had a number of ideas for how this could be solved, but after the MDIO
code got split out from PHYLIB it has gotten too hard, so I'm basically
giving up, and only call the mdiobus_register_board_info() function
if the MDIO layer is built-in to avoid the link error. This is similar
to how we handle PHY registration on other ARM platforms.

Fixes: 90eff909 ("net: phy: Allow splitting MDIO bus/device support from PHYs")
Fixes: 648ea013 ("net: phy: Allow pre-declaration of MDIO devices")
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarGregory CLEMENT <gregory.clement@free-electrons.com>
parent c1ae3cfa
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ menuconfig ARCH_ORION5X
	select GPIOLIB
	select MVEBU_MBUS
	select PCI
	select PHYLIB if NETDEVICES
	select PLAT_ORION_LEGACY
	help
	  Support for the following Marvell Orion 5x series SoCs:
+5 −0
Original line number Diff line number Diff line
@@ -468,6 +468,7 @@ void __init orion_ge11_init(struct mv643xx_eth_platform_data *eth_data,
		    eth_data, &orion_ge11);
}

#ifdef CONFIG_ARCH_ORION5X
/*****************************************************************************
 * Ethernet switch
 ****************************************************************************/
@@ -480,6 +481,9 @@ void __init orion_ge00_switch_init(struct dsa_chip_data *d)
	struct mdio_board_info *bd;
	unsigned int i;

	if (!IS_BUILTIN(CONFIG_PHYLIB))
		return;

	for (i = 0; i < ARRAY_SIZE(d->port_names); i++)
		if (!strcmp(d->port_names[i], "cpu"))
			break;
@@ -493,6 +497,7 @@ void __init orion_ge00_switch_init(struct dsa_chip_data *d)

	mdiobus_register_board_info(&orion_ge00_switch_board_info, 1);
}
#endif

/*****************************************************************************
 * I2C