From bc12e3ee01c82f2da45c6240b74f501b82732b27 Mon Sep 17 00:00:00 2001 From: Ioana Ciornei Date: Fri, 17 Jul 2026 15:06:30 +0300 Subject: [PATCH] arm64: dts: lx2160a: transition to device-specific SerDes compatible strings Align to the modern fsl,lynx-28g.yaml binding, where the SoC and SerDes instance is present in the compatible string, to allow reliable per-lane capability detection and per-lane customization of electrical properties. The modern bindings are backward-incompatible with old kernels, due to the consumer phandles being either in one form or in another, as explained here: https://lore.kernel.org/lkml/20250930140735.mvo3jii7wgmzh2bs@skbuf/ Also mark the serdes_1 node as disabled by default since any dts using it enables it explicitly now. Signed-off-by: Vladimir Oltean Signed-off-by: Ioana Ciornei Signed-off-by: Frank Li --- .../dts/freescale/fsl-lx2160a-serdes.dtsi | 150 +++++++++++++++++- 1 file changed, 148 insertions(+), 2 deletions(-) diff --git a/arch/arm64/boot/dts/freescale/fsl-lx2160a-serdes.dtsi b/arch/arm64/boot/dts/freescale/fsl-lx2160a-serdes.dtsi index 307824eda6d6..d482920f4d17 100644 --- a/arch/arm64/boot/dts/freescale/fsl-lx2160a-serdes.dtsi +++ b/arch/arm64/boot/dts/freescale/fsl-lx2160a-serdes.dtsi @@ -6,16 +6,162 @@ // Copyright 2026 NXP &soc { + /* Note on the interpretation of SerDes lane numbering from + * LX2160ARM lane mappings for RCW[SRDS_PRTCL_S1]: + * The letters (A-H) correspond to logical lane numbers in the + * SerDes register map (lane A's registers start with LNAGCR0), + * while the numbers (0-7) correspond to physical lanes as + * routed to pins. SerDes block #1 is flipped in the LX2160A + * floorplan (logical lane A goes to physical lane 7's pins), + * while SerDes blocks #2 and #3 are not. The lanes below are + * listed right to left when looking at that table. + * Both the numbers and the letters are according to the logical + * numbering scheme, and do not account for the flipping. + */ serdes_1: phy@1ea0000 { - compatible = "fsl,lynx-28g"; + compatible = "fsl,lx2160a-serdes1", "fsl,lynx-28g"; reg = <0x0 0x1ea0000 0x0 0x1e30>; + #address-cells = <1>; + #size-cells = <0>; #phy-cells = <1>; + status = "disabled"; + + serdes_1_lane_a: phy@0 { + reg = <0>; + #phy-cells = <0>; + }; + + serdes_1_lane_b: phy@1 { + reg = <1>; + #phy-cells = <0>; + }; + + serdes_1_lane_c: phy@2 { + reg = <2>; + #phy-cells = <0>; + }; + + serdes_1_lane_d: phy@3 { + reg = <3>; + #phy-cells = <0>; + }; + + serdes_1_lane_e: phy@4 { + reg = <4>; + #phy-cells = <0>; + }; + + serdes_1_lane_f: phy@5 { + reg = <5>; + #phy-cells = <0>; + }; + + serdes_1_lane_g: phy@6 { + reg = <6>; + #phy-cells = <0>; + }; + + serdes_1_lane_h: phy@7 { + reg = <7>; + #phy-cells = <0>; + }; }; serdes_2: phy@1eb0000 { - compatible = "fsl,lynx-28g"; + compatible = "fsl,lx2160a-serdes2", "fsl,lynx-28g"; reg = <0x0 0x1eb0000 0x0 0x1e30>; + #address-cells = <1>; + #size-cells = <0>; #phy-cells = <1>; status = "disabled"; + + serdes_2_lane_a: phy@0 { + reg = <0>; + #phy-cells = <0>; + }; + + serdes_2_lane_b: phy@1 { + reg = <1>; + #phy-cells = <0>; + }; + + serdes_2_lane_c: phy@2 { + reg = <2>; + #phy-cells = <0>; + }; + + serdes_2_lane_d: phy@3 { + reg = <3>; + #phy-cells = <0>; + }; + + serdes_2_lane_e: phy@4 { + reg = <4>; + #phy-cells = <0>; + }; + + serdes_2_lane_f: phy@5 { + reg = <5>; + #phy-cells = <0>; + }; + + serdes_2_lane_g: phy@6 { + reg = <6>; + #phy-cells = <0>; + }; + + serdes_2_lane_h: phy@7 { + reg = <7>; + #phy-cells = <0>; + }; + }; + + serdes_3: phy@1ec0000 { + compatible = "fsl,lx2160a-serdes3"; + reg = <0x0 0x1ec0000 0x0 0x1e30>; + #address-cells = <1>; + #size-cells = <0>; + #phy-cells = <1>; + status = "disabled"; + + serdes_3_lane_a: phy@0 { + reg = <0>; + #phy-cells = <0>; + }; + + serdes_3_lane_b: phy@1 { + reg = <1>; + #phy-cells = <0>; + }; + + serdes_3_lane_c: phy@2 { + reg = <2>; + #phy-cells = <0>; + }; + + serdes_3_lane_d: phy@3 { + reg = <3>; + #phy-cells = <0>; + }; + + serdes_3_lane_e: phy@4 { + reg = <4>; + #phy-cells = <0>; + }; + + serdes_3_lane_f: phy@5 { + reg = <5>; + #phy-cells = <0>; + }; + + serdes_3_lane_g: phy@6 { + reg = <6>; + #phy-cells = <0>; + }; + + serdes_3_lane_h: phy@7 { + reg = <7>; + #phy-cells = <0>; + }; }; };