Re: [v3 2/2] dsa: mv88e6xxx: make serdes SGMII/Fiber output amplitude configurable

Vladimir Oltean
2021-12-08T16:59:43Z

On Wed, Dec 08, 2021 at 05:51:29PM +0100, Marek Behún wrote:
> > > Vladimir, can you send your thoughts about this proposal? We are trying
> > > to propose binding for defining serdes TX amplitude.
> >
> > I don't have any specific concern here. It sounds reasonable for
> > different data rates to require different transmitter configurations.
> > Having separate "serdes-tx-amplitude-millivolt" and "serdes-tx-amplitude-modes"
> > properties sounds okay, although I think a prefix with "-names" at the
> > end is more canonical ("pinctrl-names", "clock-names", "reg-names" etc),
> > so maybe "serdes-tx-amplitude-millivolt-names"?
> > Maybe we could name the first element "default", and just the others
> > would be named after a phy-mode. This way, if a specific TX amplitude is
> > found in the device tree for the currently operating PHY mode, it can be
> > used, otherwise the default (first) amplitude can be used.
>
> Yes, the pair
> serdes-tx-amplitude-millivolt
> serdes-tx-amplitude-millivolt-names
> is the best.
>
> If the second is not defined, the first should contain only one value,
> and that is used as default.
>
> If multiple values are defined, but "default" is not, the driver should
> set default value as the default value of the corresponding register.
>
> The only remaining question is this: I need to implement this also for
> comphy driver. In this case, the properties should be defined in the
> comphy node, not in the MAC node. But the comphy also supports PCIe,
> USB3 and SATA modes. We don't have strings for them. So this will need
> to be extended in the future.
>
> But for now this proposal seems most legit. I think the properties
> should be defined in common PHY bindings, and other bindings should
> refer to them via $ref.

I wouldn't $ref the tx-amplitude-millivolt-names from the phy-mode,
because (a) not all phy-mode values are valid (think of parallel interfaces
like rgmii) and (b) because sata, pcie, usb are also valid SERDES
protocols as you point out. With the risk of a bit of duplication, I
think I'd keep the SERDES protocol names a separate thing for the YAML
validator.