On Mon, Aug 21, 2023 at 01:45:44PM -0400, Sean Anderson wrote:
Well, we have two pieces of information we need
- What values do we need to program in the PCCRs to select a particular
mode? This includes whether to e.g. set the KX bits.
- Implied by the above, what protocols are supported on which lanes?
This is not strictly necessary, but will certainly solve a lot of
headscratching.
This information varies between different socs, and different serdes on
the same socs. We can't really look at the RCW or the clocks and figure
out what we need to program. So what are our options?
- We can have a separate compatible for each serdes on each SoC (e.g.
"fsl,lynx-10g-a"). This was rejected by the devicetree maintainers.
- We can have one compatible for each SoC, and determine the serdes
based on the address. I would like to avoid this...
To me this really seems like a straightforward approach.
- We can stick all the details which vary between serdes/socs into the
device tree. This is very flexible, since supporting new SoCs is
mostly a matter of adding a new compatible and writing a new
devicetree. On the other hand, if you have a bug in your devicetree,
it's not easy to fix it in the kernel.
- Just don't support protocol switching. The 28G driver does this, which
is why it only has one compatible. However, supporting protocol
switching is a core goal of this driver, so dropping support is not an
option.
The Lynx 28G SerDes driver does support protocol switching.
How did you arrive at the opposite conclusion?
The initial commit on the driver is even part of a patch set named
"dpaa2-mac: add support for changing the protocol at runtime". In
upstream it only supports the 1G <-> 10G transition but I have some
patches on the way to also support 25G.
Ioana
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel