<br><br>On Friday, September 30, 2011, David Daney <<a href="mailto:david.daney@cavium.com">david.daney@cavium.com</a>> wrote:<br>> Many 10 gigabit Ethernet PHY devices are interfaced to the MDIO bus<br>> using a protocol called IEEE802.3-2005 Section 45.  Where as PHYS for<br>
> 1G, 100M and 10M usually use IEEE802.3-2005 Section 22.  These two<br>> protocols can be present on the same MDIO bus.<br>><br>> If we look at the Linux PHY probing code in drivers/of/of_mdio.c and<br>> drivers/net/phy/phy_device.c, we have the situation where we need to<br>
> read the PHY registers to get the PHY ID out so that we can use this<br>> to bind to a compatible driver.  However we can only read these<br>> registers if we know the proper MDIO bus protocol to use.<br>><br>
> My idea is as follows:<br>><br>> o Add an optional property "mdio-clause-45" to the PHY's device tree<br>>  node to indicate that clause 45 addressing is used.<br>><br>> o When calling get_phy_id() we will set MII_ADDR_C45 in the address<br>
>  if we know that clause 45 addressing is required for the PHY.<br>>  get_phy_id() will then use the proper bus protocol and register<br>>  numbers to read PHY ID based on MII_ADDR_C45.<br>><br>> o of_mdiobus_register() will signal MII_ADDR_C45 for PHYs tagged with<br>
>  "mdio-clause-45"<br>><br>> o Existing PHYs without "mdio-clause-45" are unaffected.<br>><br>> o If no specific driver for the probed PHY ID is present, we can still<br>>  communicate with the PHY and perhaps use a generic 10G phy driver.<br>
>  If the MDIO bus protocol were just to depend on the "compatible"<br>>  property, then we could not use generic drivers for unknown PHY IDs<br>><br>> Comments/other ideas welcome.<br><br><br>About a year ago, I  submitted some patches to deal with the Clause 45 stuff. I'm currently working on updating them and fixing the issues raised during the review. My preferred solution is actually to modify all of the mdio drivers to support an additional argument which will either be MDIO_DEVAD_NONE, or an actual device address. IMHO, it makes the interface more communicative.<br>
<br>I had a mechanism in place in my patches which, I believe, should have properly noted whether a PHY at a given address was operating under clause 45 rather than clause 22. I also had a generic driver (The last issues remaining with my patches are related to how the generic driver operates; my original driver was a stub which worked fine for my particular PHY, but assumed too much about the PHY state).<br>
<br>However, I think that the idea of a different compatible property for 10g PHYs could be useful, anyway.<br><br>><br>> Thanks,<br>><br>> Signed-off-by: David Daney <<a href="mailto:david.daney@cavium.com">david.daney@cavium.com</a>><br>
> ---<br>>  Documentation/devicetree/bindings/net/phy.txt |    5 +++++<br>>  1 files changed, 5 insertions(+), 0 deletions(-)<br>><br>> diff --git a/Documentation/devicetree/bindings/net/phy.txt b/Documentation/devicetree/bindings/net/phy.txt<br>
> index bb8c742..69fd948 100644<br>> --- a/Documentation/devicetree/bindings/net/phy.txt<br>> +++ b/Documentation/devicetree/bindings/net/phy.txt<br>> @@ -14,6 +14,11 @@ Required properties:<br>>  - linux,phandle :  phandle for this node; likely referenced by an<br>
>    ethernet controller node.<br>><br>> +Optional properties:<br>> +<br>> + - mdio-clause-45 : Optional.  If present, IEEE802.3-2005 Section 45<br>> +   protocol is used for register access (usually for 10G PHYs).<br>
> +<br>>  Example:<br>><br>>  ethernet-phy@0 {<br>> --<br>> 1.7.2.3<br>><br>> --<br>> To unsubscribe from this list: send the line "unsubscribe netdev" in<br>> the body of a message to <a href="mailto:majordomo@vger.kernel.org">majordomo@vger.kernel.org</a><br>
> More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html">http://vger.kernel.org/majordomo-info.html</a><br>>