Re: [PATCH 1/3] net: thunderx: Cleanup PHY probing code.

From: David Daney
Date: Fri Mar 11 2016 - 14:34:37 EST

On 03/11/2016 11:06 AM, Andrew Lunn wrote:
I don't see why it should wait around forever. I have boards with
Marvell PHYs, yet if i don't build the Marvell driver, the Ethernet
driver still loads, because the generic PHY driver is used instead.
Why does this not work here?

As I said before, there is no driver for the device, so
of_phy_find_device() will always return NULL.

I'm not yet convinced this is true.

Which part don't you believe? Is it:

- there is no driver for the device.


- for PHYs with no driver, of_phy_find_device() will return NULL

I really do expect that the
generic PHY driver will bind to it. It might then go horribly wrong,
because it is not standard compliant, but that is a different issue.

At a higher level, the way we handle either of:

- Lack of a driver.

- "Horribly wrong" driver

is the same, we cannot use a PHY driver.

The generic driver should probably have a black list for such devices.
This is a PHY issue, not an MDIO issue, and the problem should be
solved in the PHY layer, not in one MDIO driver.

This isn't an MDIO driver patch. This is more about handling a defective device tree in the only driver (a non-MDIO driver) that will ever see such a device tree node.

We should also consider what happens when somebody actually writes a
driver for this PHY. Are you not going to use it?

Easy to answer: We remove the "&& !of_device_is_compatible(phy_np, "cortina,cs4223-slice")" clause from this driver.

Before this patchset, you did not special case this compatible
string. So at the very least, you need to split this into a separate
patch, so the maintainers can ACK/NACK it, independent of the other
change it is embedded in.

I can, and will, do that.

David Daney