Hi Andrew, thank you for the example, your input got me further. Sorry if my e-mails made the impression that the MAC is sending MDIO on its own. It can issue MDIO but I assume it will do this only on request of the MCU.
I read the data sheets again and found what might have confused us. There is: a) Auto Negotiation (Phy-Phy) b) Automatic Speed Detection, ASD (Mac-Phy) c) Automatic Duplex Detection, ADD (Mac-Phy) My current hypothesis is: When Phy-Phy auto negotiation is done, the ASD and ADD of the MAC will implicitly catch up the new mode of the Phy on a low level (clocks, pins). A dumb silicon would need the MCU to re-configure the MAC after MDIO told the MCU about a change in the Phy mode. But this ultra smart silicon would neither need MDIO, nor an MCU to understand what’s going on on the busses :) If this hypothesis is correct, I should change in the driver all comments that mention „auto negoriation“ to „ADD, ASD“, and future readers will not be confused anymore. Conclusion: - Maybe I can leave ASD and ADD even active in fixed-link scenarios, when in the device tree an empty fixed-link node is present. - And I need to disable ASD and/or ADD only if speed and/or duplex is configured inside the fixed-link mode. I need to verify this hypothesis. Thank you for reviewing and sharing topics we need to consider, Roelof > Am 18.05.2020 um 22:34 schrieb Andrew Lunn <and...@lunn.ch>: > >> I double checked the vendor documentation and according to the data >> sheet in this device the MAC detects speed and duplex mode. It uses >> PINs, traces clocks … Also according to an application note of the >> vendor duplex and speed detection should be enabled in the MAC >> registers. > > In general, the MAC should not perform MDIO requests on the PHY. The > MAC has no access to the mutex which phylib users. So if the MAC > directly accesses registers in the PHY, it could do it at the wrong > time, when the PHY driver is active. > > This can be particularly bad when Marvell PHYs are used. They have > paged registers. One example is the page with the temperature sensor. > This can be selected due to a read on the hwmon device. If the MAC > tried to read the speed/duplex which the temperature sensor is > selected, it would wrongly read the temperature sensor registers, not > the link state. > > There is no need for the MAC to directly access the PHY. It will get > told what the result of auto-neg is. So please turn this off all the > time. > > Andrew >