Re: [PATCH 2/2] net: dsa: microchip: Provide Module 4 KSZ9477 errata (DS80000754C)

From: Florian Fainelli
Date: Tue Aug 29 2023 - 18:01:45 EST


On 8/29/23 14:57, Tristram.Ha@xxxxxxxxxxxxx wrote:
On Fri, Aug 25, 2023 at 06:48:41PM +0000, Tristram.Ha@xxxxxxxxxxxxx wrote:
IMHO adding functions to MMD modification would facilitate further
development (for example LED setup).

We already have some KSZ9477 specific initialization done in the Micrel
PHY driver under drivers/net/phy/micrel.c, can we converge on the PHY
driver which has a reasonable amount of infrastructure for dealing with
workarounds, indirect or direct MMD accesses etc.?

Actually the internal PHY used in the KSZ9897/KSZ9477/KSZ9893 switches
are special and only used inside those switches. Putting all the switch
related code in Micrel PHY driver does not really help. When the switch
is reset all those PHY registers need to be set again, but the PHY driver
only executes those code during PHY initialization. I do not know if
there is a good way to tell the PHY to re-initialize again.

Suppose there was a method to tell the PHY driver to re-initialize itself.
What would be the key points in which the DSA switch driver would need
to trigger that method? Where is the switch reset at runtime?

Currently the DSA switch driver loads independently and is then
controlled by the main DSA driver. The switch is reset during
initialization, and later the PHYs are initialized. I was talking
hypothetically that the switch may need to be reset to correct some
hardware problems, but then there may be no good way to tell the PHYs to
re-initialize.

There is phy_init_hw() which will do just that.
--
Florian