Re: [PATCH net-next v3 3/6] net: hisilicon: add support for hisi_femac core on Hi3798MV200

From: Yang Xiwen
Date: Mon Feb 19 2024 - 17:32:14 EST


On 2/20/2024 6:05 AM, Andrew Lunn wrote:
It's not MAC which behaves wrongly, it's the MDIO bus. If we don't follow
the reset procedure properly. The MDIO bus fails to respond to any
write/read commands. But i believe MAC controller and PHY are still working.
I recalled that it can still transfer network packets, though it fails to
read PHY registers from MDIO bus so only 10Mbps is available (And the phy id
read out is always 0x0, normally it's 0x20669853).

Maybe during initialization, PHY sent some garbage to MDIO bus and killed
it.
MDIO bus masters are really simple things, not much more than a shift
register. I find it hard to believe the MDIO bus master breaks because
of reset order. If the MDIO pins went to SoC pins, it would be simple
to prove, a bus-pirate or similar can capture the signals and sigrok
can decode MDIO.

To me, its more likely the PHY side of the MDIO bus is broken somehow.

The MDIO pins are not accessible from outside, only PHY pins are exported.

Maybe. I've tried many different approaches before i sent this patch. This is almost the only simple way i can implement to make it work. The downstream is also not telling us why it is needed to disable MAC controller before PHY reset. But it is mandatory. All i can do is to guess, unless HiSilicon people can join this conversion and tell us why. So the conclusion i got from trial and error is that MAC controller MUST be disabled during PHY reset, no matter what the reason is. I hope we can have the framework providing utilities for me to resolve this (e.g. provide a custom callback for PHY reset, in mdio_device_reset() function).

Also it's very strange that, if the PHY is reset in a wrong order, (i.e. Now we can not operate MDIO bus), we have to do the PHY reset procedure once again, simply resetting MAC does not work. So it might also be the PHY which is broken (partially).


Andrew


--
Regards,
Yang Xiwen