Re: [net-next v4 1/3] dt-bindings: net: dsa: yt921x: Add Motorcomm YT921x switch support

From: Yangfl
Date: Mon Aug 18 2025 - 13:10:05 EST


On Tue, Aug 19, 2025 at 12:55 AM Andrew Lunn <andrew@xxxxxxx> wrote:
>
> > + motorcomm,switch-id:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description: |
> > + Value selected by Pin SWITCH_ID_1 / SWITCH_ID_0.
> > +
> > + Up to 4 chips can share the same MII port ('reg' in DT) by giving
> > + different SWITCH_ID values. The default value should work if only one chip
> > + is present.
> > + enum: [0, 1, 2, 3]
> > + default: 0
>
> It is like getting blood from a stone.
>
> So what you are saying is that you have:
>
> mdio {
> #address-cells = <1>;
> #size-cells = <0>;
>
> switch@1d {
> compatible = "motorcomm,yt9215";
> /* default 0x1d, alternate 0x0 */
> reg = <0x1d>;
> motorcomm,switch-id = <0>;
> reset-gpios = <&tlmm 39 GPIO_ACTIVE_LOW>;
> ...
> }
>
> switch@1d {
> compatible = "motorcomm,yt9215";
> reg = <0x1d>;
> motorcomm,switch-id = <1>;
> reset-gpios = <&tlmm 39 GPIO_ACTIVE_LOW>;
> ...
> }
>
> switch@1d {
> compatible = "motorcomm,yt9215";
> reg = <0x1d>;
> motorcomm,switch-id = <2>;
> reset-gpios = <&tlmm 39 GPIO_ACTIVE_LOW>;
> ...
> }
> }
>
> Have you tested this? My _guess_ is, it does not work.
>
> I'm not even sure DT allows you to have the same reg multiple times on
> one bus.
>
> I'm pretty sure the MDIO core does not allow multiple devices on one
> MDIO address. Each device is represented by a struct
> mdio_device. struct mii_bus has an array of 32 of these, one per
> address on the bus. You cannot have 4 of them for one address.
>
> Andrew
>
> ---
> pw-bot: cr

Of course I cannot test this, since I only have a stock device, as
mentioned in patch 3.

But I think this is what the vendor wants to do, if I got it right
from the datasheet.

If this is not acceptable anyway, I might as well remove switch-id
completely since I doubt if anyone would concat more than one switch
together in real world.