On Fri, Feb 02, 2024 at 05:04:23PM +0000, Russell King (Oracle) wrote: > On Fri, Feb 02, 2024 at 05:40:21PM +0100, Christian Marangi wrote: > > On Fri, Feb 02, 2024 at 02:43:37AM +0100, Andrew Lunn wrote: > > > > + > > > > + phydev->drv->led_brightness_set = NULL; > > > > + phydev->drv->led_blink_set = NULL; > > > > + phydev->drv->led_hw_is_supported = NULL; > > > > + phydev->drv->led_hw_control_set = NULL; > > > > + phydev->drv->led_hw_control_get = NULL; > > > > > > I don't see how that works. You have multiple PHYs using this > > > driver. Some might have LEDs, some might have GPOs. But if you modify > > > the driver structure like this, you prevent all PHYs from having LEDs, > > > and maybe cause a Opps if a PHY device has already registered its > > > LEDs? > > > > > > > God you are right! Off-topic but given the effects this may cause, why > > the thing is not const? I assume it wouldn't make sense to add OPS based > > on the detected feature since it would have side effect on other PHYs > > that use the same driver. > > Maybe phydev->drv should be const to avoid this kind of thing. It > doesn't look like it would be hard to do, and importantly doesn't > require casting away the const-ness anywhere. PHY drivers themselves > can't be const because the driver model needs to be able to modify > the embedded device_driver struct (e.g. see bus_add_driver().) > > drivers/net/phy/phy.c | 3 +-- > drivers/net/phy/phy_device.c | 4 ++-- > drivers/net/phy/xilinx_gmii2rgmii.c | 2 +- > include/linux/phy.h | 2 +- > 4 files changed, 5 insertions(+), 6 deletions(-) > > Just build-testing it. > Seems sensible to me. Also for everyone that does that (downstream or driver that needs to be handled) it would result in a warning for modifying const stuff. Maybe I'm wrong but I can only see benefits in doing this change. -- Ansuel