Re: [PATCH net-next v5 3/4] net: phy: Allow pre-declaration of MDIO devices
From: Florian Fainelli <f.fainelli@gmail.com>
Date: 2017-02-06 19:17:37
Also in:
linux-arm-kernel, lkml
On 02/06/2017 06:04 AM, Andrew Lunn wrote:
quoted
+/** + * mdio_register_board_info - register MDIO devices for a given board + * @info: array of devices descriptors + * @n: number of descriptors provided + * Context: can sleep + * + * The board info passed can be marked with __initdata but be pointers + * such as platform_data etc. are copied as-is + */ +int mdiobus_register_board_info(const struct mdio_board_info *info, + unsigned int n) +{ + struct mdio_board_entry *be; + unsigned int i; + + be = kcalloc(n, sizeof(*be), GFP_KERNEL); + if (!be) + return -ENOMEM; + + for (i = 0; i < n; i++, be++, info++) { + memcpy(&be->board_info, info, sizeof(*info)); + mutex_lock(&mdio_board_lock); + list_add_tail(&be->list, &mdio_board_list); + mutex_unlock(&mdio_board_lock); + } + + return 0;Hi Florian I've recently been playing with a hot-pluggable SPI bus controller. It is a USB device, hence can come and go. On the SPI bus i have an SRAM. On order to instantiate the MTD device, i need SPI board info. I cannot add the board info until after the SPI bus master appears, since i need to know its ID to fill in the board info. At the moment, i have udev script which when the SPI bus master appears loads a little kernel module which registers the board info. Such a scheme will not work here. You need to iterate the list of MDIO devices at the end of mdiobus_register_board_info() to see if the just registered board info applies to any existing MDIO bus.
I was thinking when mdio_device_register() is called, see if there is a matching board info for it, and if so, assign its platform_data accordingly. In the case where mdiobus_register_with_board
I don't think we yet have any hardware which would do this. But there have been patches to one of the USB-Ethernet dongles to allow it run without a PHY. My guess is, to allow an SFP module. But it is not too big a step for somebody to make a USB attached Ethernet switch. Maybe consider adding this functionality? Also an unregister call?
Sure, makes sense. -- Florian