[PATCH v1 phy-next 0/8] RCW override for 10G Lynx dynamic protocol reconfiguration
From: Vladimir Oltean <vladimir.oltean@nxp.com>
Date: 2026-06-11 19:40:40
Also in:
linux-arm-kernel, linux-devicetree, linux-phy, lkml
Previous set "New Generic PHY driver for Lynx 10G SerDes": https://lore.kernel.org/linux-phy/20260610151952.2141019-1-vladimir.oltean@nxp.com/ (local) introduced the 10G Lynx SerDes driver with a reduced functionality set. Namely, only minor protocol changes are supported (1GbE <-> 2.5GbE). The major protocol changes need a procedure named RCW override, explained in more detail in commits 6/8 and 7/8. To keep the ball roling, this series adds kernel and device tree binding support for RCW override. (being so close to the merge window, I don't really expect this series to be merged, just want to get an initial feedback so I can keep working on it) Two components are involved: - drivers/soc/fsl/guts.c (binding is fsl,layerscape-dcfg.yaml) - Device Configuration Unit, this is API provider for the SerDes driver to request RCW override depending on SoC - drivers/phy/freescale/phy-fsl-lynx-10g.c - SerDes PHY driver, this is API consumer The guts driver probes on DCFG blocks from multiple Freescale SoC generations: - MPC85xx, BSC and QorIQ (PowerPC) are all covered by the Documentation/devicetree/bindings/soc/fsl/guts.txt schema - Layerscape (Arm) is covered by Documentation/devicetree/bindings/soc/fsl/fsl,layerscape-dcfg.yaml It is ultimately the same hardware block, just that (from what I can tell) the Layerscape nodes are also compatible with syscon, and PowerPC aren't. RCW override has only been validated on select Layerscape SoCs, so converting guts.txt to a PowerPC schema is out of scope for this series - we don't even touch that (just in case it gets asked). Using syscon to map the DCFG_DCSR register block in the Lynx SerDes driver instead of creating this guts <-> lynx API was considered, but because the RCW procedure is SoC-specific, it was ruled out for polluting the SerDes driver. The guts driver is all about SoC awareness anyway, and it offers some abstraction of all the gory details. Cc: Conor Dooley <conor@kernel.org> Cc: Krzysztof Kozlowski <redacted> Cc: Rob Herring <robh@kernel.org> Ioana Ciornei (5): soc: fsl: guts: use a macro to encode the DCFG CCSR space soc: fsl: guts: add a global structure to hold state soc: fsl: guts: add a central fsl_guts_read() function soc: fsl: guts: make it easier to determine on which SoC we are running soc: fsl: guts: implement the RCW override procedure Vladimir Oltean (3): soc: fsl: guts: make fsl_soc_data available after fsl_guts_init() dt-bindings: fsl: layerscape-dcfg: define DCFG_DCSR region phy: lynx-10g: use RCW override procedure for dynamic protocol change .../bindings/soc/fsl/fsl,layerscape-dcfg.yaml | 15 +- drivers/phy/freescale/Kconfig | 1 + drivers/phy/freescale/phy-fsl-lynx-10g.c | 24 +- drivers/soc/fsl/guts.c | 370 ++++++++++++++++-- include/linux/fsl/guts.h | 20 +- 5 files changed, 394 insertions(+), 36 deletions(-) -- 2.34.1