Re: [PATCH 2/4] dt-bindings: net: dsa: document internal MDIO bus

Vladimir Oltean
2023-09-12T19:34:56Z

On Tue, Sep 12, 2023 at 10:23:51PM +0300, Arınç ÜNAL wrote:
> On 12.09.2023 01:51, Vladimir Oltean wrote:
> > On Sat, Sep 09, 2023 at 11:53:50AM +0300, Arınç ÜNAL wrote:
> > > What to do:
> > > - For mscc,vsc7514-switch, enforce phylink bindings for ports.
> > > - For mscc,vsc7512-switch, enforce phylink bindings for user ports.
> >
> > you can also look at dsa_switches_apply_workarounds[], and if the switch
> > isn't there, then you can replace "user ports" with "ports" here and
> > everywhere.
>
> The phylink bindings for user ports I ended up making by looking up the
> existing devicetrees are different than the phylink bindings for the shared
> (CPU and DSA) ports currently enforced on all switches.
>
> My phylink bindings for user ports:
>
> allOf:
> - anyOf:
> - required: [ fixed-link ]
> - required: [ phy-handle ]
> - required: [ managed ]
>
> - if:
> required: [ fixed-link ]
> then:
> not:
> required: [ managed ]

Right, it should have been anyOf and not oneOf.. my mistake. It is a bug
which should be fixed. It's the same phylink that gets used in both cases,
user ports and shared ports :)

>
> The phylink bindings for shared ports enforced on all switches on
> dsa-port.yaml:
>
> allOf:
> - required:
> - phy-mode
> - oneOf:
> - required:
> - fixed-link
> - required:
> - phy-handle
> - required:
> - managed
>
> Here's what I understand:
>
> - For switches in dsa_switches_apply_workarounds[]
> - Enforce the latter for shared ports.
> - Enforce the former for user ports.
>
> - For switches not in dsa_switches_apply_workarounds[]
> - Enforce the former for all ports.

No, no. We enforce the dt-schema regardless of switch presence in
dsa_switches_apply_workarounds[], to encourage users to fix device trees
(those who run schema validation). The kernel workaround consists in
doing something (skipping phylink) for the device trees where the schema
warns on shared ports. But there should be a single sub-schema for
validating phylink bindings, whatever port kind it is.