[PATCH] [net-next] ARM: orion: fix PHYLIB dependency
From: arnd@arndb.de (Arnd Bergmann)
Date: 2017-02-09 17:15:26
Also in:
lkml, netdev
On Thursday, February 9, 2017 4:57:51 PM CET Andrew Lunn wrote:
On Thu, Feb 09, 2017 at 04:08:11PM +0100, Arnd Bergmann wrote:quoted
The newly introduced mdiobus_register_board_info() function is only available as part of PHYLIB, so we get a link error when we call that from a board while phylib is disabled: arch/arm/plat-orion/common.o: In function `orion_ge00_switch_init': common.c:(.init.text+0x6a4): undefined reference to `mdiobus_register_board_info' This adds a workaround that is made up of three parts: - in plat-orion, the function for declaring the switch is hidden without PHYLIB. - in mach-orion5x, the caller conditionally stubs out the call to the removed function, so we can still build other orion5x boards without PHYLIB - For the boards that actually declare the switch, we select PHYLIB explicitly from Kconfig if NETDEVICES is set. Without NETDEVICES, we cannot enable PHYLIB, but we also wouldn't need it.Hi Arnd Although all correct, would it not be simpler to just select PHYLIB and NETDEVICES? These devices are all NAS boxes and WiFi access points. What sense does it make to build a kernel without working networking for these classes of devices?
Adding a 'select' statement to something as broad as NETDEVICES sounds really bad, it has a significant risk of introducing dependency loops and may be confusing if you want to build a multiplatform config without networking support (note that NETDEVICES in turn depends on NET, which can also be disabled). One possibility would be to have a special Kconfig symbol that controls mdiobus_register_board_info() being present and have that symbol force PHYLIB to never be "=m". Then we can either have no networking support and no phylib, turning mdiobus_register_board_info() into a stub, or we have the function built-in and reachable from the board code. Arnd