Re: [RFC PATCH net-next 8/8] dt-bindings: net: fsl,backplane-anlt: new binding document

From: Vladimir Oltean
Date: Mon Aug 21 2023 - 17:55:12 EST


On Mon, Aug 21, 2023 at 11:10:27PM +0200, Andrew Lunn wrote:
> > But, there's already something else at those MDIO registers (where the
> > standard PHY ID location is), in the MMD that the AN/LT block responds to.
> > And that would be:
> >
> > /* Auto-Negotiation Control and Status Registers are on page 0: 0x0 */
> > static const u16 mtip_lx2160a_an_regs[] = {
> > [AN_CTRL] = 0,
> > [AN_STAT] = 1,
> > [AN_ADV_0] = 2, // overlaps with MII_PHYSID1
> > [AN_ADV_1] = 3, // overlaps with MII_PHYSID2
> > [AN_ADV_2] = 4,
> > [AN_LPA_0] = 5, // overlaps with MDIO_DEVS1
> > [AN_LPA_1] = 6, // overlaps with MDIO_DEVS2
> > [AN_LPA_2] = 7,
> > [AN_MS_CNT] = 8,
> > [AN_ADV_XNP_0] = 9,
> > [AN_ADV_XNP_1] = 10,
> > [AN_ADV_XNP_2] = 11,
> > [AN_LPA_XNP_0] = 12,
> > [AN_LPA_XNP_1] = 13,
> > [AN_LPA_XNP_2] = 14,
> > [AN_BP_ETH_STAT] = 15,
> > };
> >
> > The AN advertisement registers are kinda important to the operation of
> > the driver, so I wouldn't want to mask them with fake PHY ID values
> > reported by the MDIO controller.
>
> O.K, not ideal. For C22, you could just put the ID values in the
> compatible, which is enough to get a driver loaded which supports that
> ID. But somebody recently commented that that does not work for C45. I
> assume NXP has an OUI, and could allocate an ID to this device in
> retrospect. So maybe it makes sense to make C45 work with an ID in the
> compatible? And get the driver loaded that way?
>
> Andrew

There are 2 clarification questions that I can think of right now.
Maybe more later.

First: Compatible strings per C45 MMD? Drivers per C45 MMD? Is there
supposed to be an interest in that? I might end up needing it (see the
problem description in the cover letter, with PCS and AN/LT block merged
into the same MDIO address, but responding to separate MMDs)

Second: Suppose I add something like "ethernet-phy-ieee802.3-c45-idXXXX.XXXX".
Do I replace just this with that:

compatible = "fsl,lx2160a-backplane-anlt", "ethernet-phy-ieee802.3-c45";

or also this?

compatible = "fsl,lx2160a-secondary-anlt";


I suppose it would be just the first one, but going that route would IMO
just increase the dissonance between the description of primary and
secondary AN/LT blocks. They're the same IP blocks, don't they also have
the same fake PHY ID?