I am in the process of planning a conversion of Octeon SOC platform code to use the OF device tree in the Linux kernel.

One issue that I have encountered, is that for some boards, we need to pass a non-zero flags argument to the phy_attach_direct() method. The value of the flags is board dependent, so it would make some sense to encode its value in the device tree itself. The flags I am interested in control the configuration of clocking modes and status LED connections.

I would suggest the following:

o Add a new property to "ethernet-phy" dts bindings called "linux,flags". It would contain a comma separated string of flag names. Something like "led-mode1,clock-mode2". The semantics of the flag names would be interpreted by the PHY driver...

o Add a new function pointer to struct phy_driver: u32 (*of_parse_flags)(struct phy_device *phydev). This would parse and return the flags value for the "linux,flags" property from the device_node associated with the particular PHY device in question.

o Modify of_phy_connect() to do something like the following:

.
.
.
        if (phy->driver && phy->driver->of_parse_flags)
                flags |= phy->driver->of_parse_flags(phy);
.
.
.

o Perhaps add some helper functions to of_mdio.c to assist in parsing the "linux,flags" properties string.

o Any extra code in the PHY drivers and struct phy_driver would be protected by #ifdef CONFIG_OF

How does this sound?

Any suggestions as for improvements, or better names for things?


Thanks,
David Daney
_______________________________________________
devicetree-discuss mailing list
[email protected]
https://lists.ozlabs.org/listinfo/devicetree-discuss

Reply via email to