[PATCH v2 phy-next 0/8] RCW override for 10G Lynx dynamic protocol reconfiguration
From: Vladimir Oltean <vladimir.oltean@nxp.com>
Date: 2026-06-12 21:09:10
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. This series adds kernel and device tree binding support for RCW override, completing the SerDes PHY driver functionality. 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. Resending because Sashiko didn't run on v1 (it runs on linux-phy/master instead of linux-phy/next, and linux-next, used as fallback when applying to linux-phy/master fails, wasn't regenerated to include the Lynx 10G base patches at the time v1 was sent). There was a build failure on most arches except arm64 anyway, so it's good to have that fixed. Changes since v1: - add Conor's review tag on 6/8 - update email addresses of DT maintainers - drop DT maintainers from explicit CC on patch 7/8 - keep devicetree@vger.kernel.org CCed on entire series - include missing <linux/bitfield.h> in patch 7/8 - namespace SRDS_PRTCL values for LS1046A and LS1088A, even if they are the same. For LS1028A (not covered here) they are not. - prefix SRDS_CLK_SEL_{GMII,XGMII} with LS2088A_ - reorder alphanumerically (LS1046A should come before LS1088A) Change log also in individual patches. v1 at: https://lore.kernel.org/linux-phy/20260611193940.44416-1-vladimir.oltean@nxp.com/ (local) Cc: Conor Dooley <conor+dt@kernel.org> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org> 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 | 369 ++++++++++++++++-- include/linux/fsl/guts.h | 20 +- 5 files changed, 393 insertions(+), 36 deletions(-) -- 2.34.1