* [PATCH v6 0/3] arm64: dts: freescale: add Free Mobile Nodebox v3 CPU Module (LX2160A)
@ 2026-09-13 12:35 Vincent Jardin via B4 Relay
2026-09-13 12:35 ` [PATCH v6 1/3] dt-bindings: vendor-prefixes: add Free Mobile Vincent Jardin via B4 Relay
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Vincent Jardin via B4 Relay @ 2026-09-13 12:35 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: devicetree, linux-kernel, imx, linux-arm-kernel, Vincent Jardin,
Krzysztof Kozlowski
The Nodebox v3 is a Free Mobile CPU module built around the NXP LX2160A
(16x Cortex-A72, DPAA2).
The same fsl-lx2160a-nbxv3.dtsi shall be used verbatim by the
U-Boot port, sent in parallel to the U-Boot list, so the two trees
cannot drift.
Dependency:
the DTS uses gpio hogs on the QorIQ GPIO controllers, which
needs the commit
78c0baf85cd0 ("dt-bindings: gpio: fsl,qoriq-gpio: allow gpio-hog child nodes")
already in gpio/for-next and that will likely arrive in v7.4-rc1.
Until it lands, dtbs_check reports the five hog nodes, the rest of the
tree validates clean against the current schemas.
About the patch 2, following Krzysztof's question on v5: the CPU module
boots on its own, so it is listed as a plain LX2160A board. It is also
a SoM that will support many carrier boards.
But those carrier boards are still work in progress, so they are not part
of this series yet. When they will be, fsl.yaml should get them (not
included with this series, just for comments and TBC):
- description: Free Mobile Nodebox v3 CPU Module based Boards
items:
- enum:
- freemobile,nbv30
- freemobile,nbv31
- freemobile,nbv32
- const: freemobile,nbxv3
- const: fsl,lx2160a
Signed-off-by: Vincent Jardin <vjardin@free.fr>
---
Changes in v6:
- dt-bindings: arm: fsl: freemobile,nbxv3 no 1 entry enum for the
"LX2160A based Boards" (Krzysztof Kozlowski)
- Link to v5: https://lore.kernel.org/r/20260912-for-upstream-nbxv3-dts-v5-0-ead604dba61b@free.fr
Changes in v5:
- read dts-coding-style: many reorder/cleanup including
comments from Frank Li without functional changes
- Link to v4: https://lore.kernel.org/r/20260911-for-upstream-nbxv3-dts-v4-0-2fd07d5575ab@free.fr
Changes in v4:
- dt-bindings: arm: fsl: commit message like the other ones (Krzysztof Kozlowski)
- Acked-by on the vendor prefix
- Drop U-Boot comments from the DTS commit message (Frank Li)
- Boot NOR reset: reset-gpios on flash@0 instead of a gpio hog (Frank Li)
- ethsw-mdio-en: regulator-fixed instead of a gpio hog (Frank Li)
- ethsw-reset#: hog dropped (Frank Li)
- pltrst#: platform without consumer node
- Link to v3: https://lore.kernel.org/r/20260908-for-upstream-nbxv3-dts-v3-0-1d88b2c11680@free.fr
Changes in v3:
- Drop the thermtrip hog on gpio1 line 23, should have been clean'd
before
- Link to v2: https://lore.kernel.org/r/20260907-for-upstream-nbxv3-dts-v2-0-6b4afd36180b@free.fr
Changes in v2: (from Sashiko's comments)
- Makefile: dtb entry in alphabetical order (before qds).
- Move the XSPI1_A_DATA[7:4] GPIO mux group from &fspi to &gpio1, so
the reset hogs on gpio1 do not depend on the fspi probe.
- gpio hogs: describe ethsw-reset# and ethsw-mdio-en with their
active-low polarity (GPIO_ACTIVE_LOW), same electrical levels.
- Link to v1: https://lore.kernel.org/r/20260907-for-upstream-nbxv3-dts-v1-0-f43fd0028b78@free.fr
---
Vincent Jardin (3):
dt-bindings: vendor-prefixes: add Free Mobile
dt-bindings: arm: fsl: add Free Mobile Nodebox v3 CPU Module
arm64: dts: freescale: add Nodebox v3 CPU Module
Documentation/devicetree/bindings/arm/fsl.yaml | 1 +
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
arch/arm64/boot/dts/freescale/Makefile | 2 +
.../arm64/boot/dts/freescale/fsl-lx2160a-nbxv3.dts | 34 +++
.../boot/dts/freescale/fsl-lx2160a-nbxv3.dtsi | 330 +++++++++++++++++++++
5 files changed, 369 insertions(+)
---
base-commit: df2908090cda368b01ff43709f51890076c56157
change-id: 20260907-for-upstream-nbxv3-dts-bbecd04038a2
Best regards,
--
Vincent Jardin <vjardin@free.fr>
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v6 1/3] dt-bindings: vendor-prefixes: add Free Mobile
2026-09-13 12:35 [PATCH v6 0/3] arm64: dts: freescale: add Free Mobile Nodebox v3 CPU Module (LX2160A) Vincent Jardin via B4 Relay
@ 2026-09-13 12:35 ` Vincent Jardin via B4 Relay
2026-09-13 12:35 ` [PATCH v6 2/3] dt-bindings: arm: fsl: add Free Mobile Nodebox v3 CPU Module Vincent Jardin via B4 Relay
2026-09-13 12:35 ` [PATCH v6 3/3] arm64: dts: freescale: add " Vincent Jardin via B4 Relay
2 siblings, 0 replies; 5+ messages in thread
From: Vincent Jardin via B4 Relay @ 2026-09-13 12:35 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: devicetree, linux-kernel, imx, linux-arm-kernel, Vincent Jardin,
Krzysztof Kozlowski
From: Vincent Jardin <vjardin@free.fr>
Free Mobile is a French mobile network operator. Add its vendor
prefix, used by the Nodebox v3 CPU Module (freemobile,nbxv3).
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Vincent Jardin <vjardin@free.fr>
---
Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
index ba2002969373..e467da45cd7a 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -626,6 +626,8 @@ patternProperties:
description: Freebox SAS
"^freecom,.*":
description: Freecom Gmbh
+ "^freemobile,.*":
+ description: Free Mobile
"^frida,.*":
description: Shenzhen Frida LCD Co., Ltd.
"^friendlyarm,.*":
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v6 2/3] dt-bindings: arm: fsl: add Free Mobile Nodebox v3 CPU Module
2026-09-13 12:35 [PATCH v6 0/3] arm64: dts: freescale: add Free Mobile Nodebox v3 CPU Module (LX2160A) Vincent Jardin via B4 Relay
2026-09-13 12:35 ` [PATCH v6 1/3] dt-bindings: vendor-prefixes: add Free Mobile Vincent Jardin via B4 Relay
@ 2026-09-13 12:35 ` Vincent Jardin via B4 Relay
2026-09-13 12:35 ` [PATCH v6 3/3] arm64: dts: freescale: add " Vincent Jardin via B4 Relay
2 siblings, 0 replies; 5+ messages in thread
From: Vincent Jardin via B4 Relay @ 2026-09-13 12:35 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: devicetree, linux-kernel, imx, linux-arm-kernel, Vincent Jardin
From: Vincent Jardin <vjardin@free.fr>
Add DT compatible string for the Free Mobile Nodebox v3 CPU Module, an
NXP LX2160A based board.
Signed-off-by: Vincent Jardin <vjardin@free.fr>
---
Documentation/devicetree/bindings/arm/fsl.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/arm/fsl.yaml b/Documentation/devicetree/bindings/arm/fsl.yaml
index 656f2596e1d5..f8ea8d51b8bc 100644
--- a/Documentation/devicetree/bindings/arm/fsl.yaml
+++ b/Documentation/devicetree/bindings/arm/fsl.yaml
@@ -1930,6 +1930,7 @@ properties:
- description: LX2160A based Boards
items:
- enum:
+ - freemobile,nbxv3
- fsl,lx2160a-bluebox3
- fsl,lx2160a-bluebox3-rev-a
- fsl,lx2160a-qds
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v6 3/3] arm64: dts: freescale: add Nodebox v3 CPU Module
2026-09-13 12:35 [PATCH v6 0/3] arm64: dts: freescale: add Free Mobile Nodebox v3 CPU Module (LX2160A) Vincent Jardin via B4 Relay
2026-09-13 12:35 ` [PATCH v6 1/3] dt-bindings: vendor-prefixes: add Free Mobile Vincent Jardin via B4 Relay
2026-09-13 12:35 ` [PATCH v6 2/3] dt-bindings: arm: fsl: add Free Mobile Nodebox v3 CPU Module Vincent Jardin via B4 Relay
@ 2026-09-13 12:35 ` Vincent Jardin via B4 Relay
2026-09-13 12:45 ` sashiko-bot
2 siblings, 1 reply; 5+ messages in thread
From: Vincent Jardin via B4 Relay @ 2026-09-13 12:35 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Shawn Guo,
Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: devicetree, linux-kernel, imx, linux-arm-kernel, Vincent Jardin
From: Vincent Jardin <vjardin@free.fr>
The Nodebox v3 is a Free Mobile CPU module built around the NXP
LX2160A (16x Cortex-A72, DPAA2).
Signed-off-by: Vincent Jardin <vjardin@free.fr>
---
arch/arm64/boot/dts/freescale/Makefile | 2 +
.../arm64/boot/dts/freescale/fsl-lx2160a-nbxv3.dts | 34 +++
.../boot/dts/freescale/fsl-lx2160a-nbxv3.dtsi | 330 +++++++++++++++++++++
3 files changed, 366 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
index 95ae85ab4adf..faab8bf0e167 100644
--- a/arch/arm64/boot/dts/freescale/Makefile
+++ b/arch/arm64/boot/dts/freescale/Makefile
@@ -55,6 +55,8 @@ DTC_FLAGS_fsl-lx2160a-half-twins := -Wno-interrupt_map
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-half-twins.dtb
DTC_FLAGS_fsl-lx2160a-honeycomb := -Wno-interrupt_map
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-honeycomb.dtb
+DTC_FLAGS_fsl-lx2160a-nbxv3 := -Wno-interrupt_map
+dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-nbxv3.dtb
DTC_FLAGS_fsl-lx2160a-qds := -Wno-interrupt_map
dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-lx2160a-qds.dtb
DTC_FLAGS_fsl-lx2160a-rdb := -Wno-interrupt_map
diff --git a/arch/arm64/boot/dts/freescale/fsl-lx2160a-nbxv3.dts b/arch/arm64/boot/dts/freescale/fsl-lx2160a-nbxv3.dts
new file mode 100644
index 000000000000..cc02204e9d1b
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/fsl-lx2160a-nbxv3.dts
@@ -0,0 +1,34 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Free Mobile Nodebox v3 CPU Module (LX2160A)
+ *
+ * Copyright 2026 Free Mobile, Vincent Jardin
+ */
+
+/dts-v1/;
+
+#include "fsl-lx2160a-rev2.dtsi"
+#include "fsl-lx2160a-nbxv3.dtsi"
+
+/ {
+ compatible = "freemobile,nbxv3", "fsl,lx2160a";
+ model = "Free Mobile Nodebox v3 CPU Module (LX2160A)";
+};
+
+&fspi {
+ pinctrl-0 = <&fspi_dqs_sck_cs10_pins>, <&fspi_data30_pins>;
+ pinctrl-names = "default";
+};
+
+&gpio1 {
+ pinctrl-0 = <&gpio1_31_28_pins>;
+ pinctrl-names = "default";
+};
+
+&pcs_mdio13 {
+ status = "okay";
+};
+
+&pcs_mdio14 {
+ status = "okay";
+};
diff --git a/arch/arm64/boot/dts/freescale/fsl-lx2160a-nbxv3.dtsi b/arch/arm64/boot/dts/freescale/fsl-lx2160a-nbxv3.dtsi
new file mode 100644
index 000000000000..ca4fb5329c0b
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/fsl-lx2160a-nbxv3.dtsi
@@ -0,0 +1,330 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Free Mobile Nodebox v3 CPU Module (LX2160A)
+ *
+ * Copyright 2026 Free Mobile, Vincent Jardin
+ *
+ * This file is shared by the Linux kernel and U-Boot.
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/ {
+
+ aliases {
+ serial0 = &uart0;
+ };
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+
+ gpio-restart {
+ compatible = "gpio-restart";
+ gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
+ priority = <128>;
+ };
+
+ reg_ethsw_mdio: regulator-ethsw-mdio {
+ compatible = "regulator-fixed";
+ gpio = <&gpio3 25 GPIO_ACTIVE_LOW>;
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-name = "ethsw-mdio-en";
+ };
+};
+
+&crypto {
+ status = "okay";
+};
+
+&dpmac13 {
+ phy-connection-type = "10gbase-r";
+ phy-handle = <&lan8023_phy_s0>;
+
+ status = "okay";
+};
+
+&dpmac14 {
+ phy-connection-type = "10gbase-r";
+ phy-handle = <&lan8023_phy_s1>;
+
+ status = "okay";
+};
+
+&dpmac17 {
+ phy-connection-type = "rgmii-id";
+ phy-handle = <&rtl8211fd>;
+
+ status = "okay";
+};
+
+&dspi0 {
+ status = "okay";
+
+ dpll@0 {
+ compatible = "microchip,zl30733";
+ reg = <0>;
+ spi-max-frequency = <12500000>;
+ };
+};
+
+&dspi2 {
+ status = "okay";
+};
+
+&emdio1 {
+ status = "okay";
+
+ /* Microchip LAN8023 dual 10G PCS/retimer, Clause 45 only, one address per slice */
+ lan8023_phy_s0: ethernet-phy@2 {
+ compatible = "ethernet-phy-ieee802.3-c45";
+ reg = <2>;
+ };
+
+ lan8023_phy_s1: ethernet-phy@3 {
+ compatible = "ethernet-phy-ieee802.3-c45";
+ reg = <3>;
+ };
+
+ rtl8211fd: ethernet-phy@6 {
+ compatible = "ethernet-phy-id001c.c916";
+ reg = <6>;
+ };
+};
+
+&emdio2 {
+ status = "okay";
+};
+
+&esdhc1 {
+ bus-width = <8>;
+ mmc-hs200-1_8v;
+ mmc-hs400-1_8v;
+ non-removable;
+
+ status = "okay";
+};
+
+&fsl_mc {
+ status = "okay";
+};
+
+&fspi {
+ status = "okay";
+
+ /* GigaDevice GD55LB02GF, 256 MiB boot NOR */
+ flash@0 {
+ compatible = "jedec,spi-nor";
+ reg = <0>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reset-gpios = <&gpio1 28 GPIO_ACTIVE_LOW>;
+ spi-max-frequency = <150000000>;
+ spi-rx-bus-width = <1>;
+ spi-tx-bus-width = <1>;
+ };
+};
+
+&gpio0 {
+ gpio-line-names =
+ "", "",
+ "altfn:iic1-sda", "altfn:iic1-scl",
+ "altfn:uart4-sin", "altfn:uart4-sout",
+ "altfn:uart2-sin", "altfn:uart2-sout",
+ "altfn:uart3-sin", "altfn:uart3-sout",
+ "altfn:uart1-sin", "altfn:uart1-sout",
+ "altfn:spi3-pcs3", "altfn:spi3-pcs2",
+ "altfn:spi3-pcs1", "altfn:spi3-pcs0",
+ "altfn:spi1-sck", "altfn:spi1-sin",
+ "altfn:spi1-pcs2", "altfn:spi1-pcs1",
+ "altfn:spi1-pcs0", "altfn:spi1-sout",
+ "altfn:iic6-sda", "altfn:iic6-scl",
+ "altfn:spi3-sin", "altfn:spi3-sout",
+ "altfn:iic4-sda", "altfn:iic4-scl",
+ "altfn:iic3-sda", "altfn:iic3-scl",
+ "altfn:iic2-sda", "altfn:iic2-scl";
+
+ status = "okay";
+};
+
+&gpio1 {
+ gpio-line-names =
+ "", "", "", "", "", "",
+ "cfg-rcw-src2", "cfg-rcw-src3",
+ "reset-req-b",
+ "altfn:sdhc2-clk", "altfn:sdhc2-ds",
+ "altfn:sdhc2-dat0", "altfn:sdhc2-dat1",
+ "altfn:sdhc2-dat2", "altfn:sdhc2-dat3",
+ "altfn:sdhc2-dat4", "altfn:sdhc2-dat5",
+ "altfn:sdhc2-dat6", "altfn:sdhc2-dat7",
+ "altfn:sdhc2-cmd",
+ "cfg-svr1",
+ "altfn:xspi1-cs0", "altfn:xspi1-sck",
+ "altfn:xspi1-dqs",
+ "altfn:xspi1-data0", "altfn:xspi1-data1",
+ "", "",
+ "flash-reset#", "pltrst#", "", "ethsw-reset#";
+
+ status = "okay";
+
+ /* Platform reset, no consumer node: released at boot */
+ pltrst-hog {
+ gpio-hog;
+ gpios = <29 GPIO_ACTIVE_LOW>;
+ line-name = "pltrst#";
+ output-low;
+ };
+};
+
+&gpio2 {
+ gpio-line-names =
+ "lan8023-mdint",
+ "i2c2-alert#", "i2c4-alert#", "i2c6-alert#",
+ "u800-tca9539-int#",
+ "spi3-alert#",
+ "wake0", "wake1",
+ "carrier-hot#",
+ "u1300-rtl8211fd-int#",
+ "ethsw-int#",
+ "", "",
+ "u1700-zl30733-clk-gpio0", "u1700-zl30733-clk-gpio1",
+ "u1700-zl30733-clk-gpio2", "u1700-zl30733-clk-gpio3",
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "";
+
+ status = "okay";
+};
+
+&gpio3 {
+ gpio-line-names =
+ "altfn:ec1-txd3", "altfn:ec1-txd2",
+ "altfn:ec1-txd1", "altfn:ec1-txd0",
+ "altfn:ec1-tx-en", "altfn:ec1-gtx-clk",
+ "altfn:ec1-rxd3", "altfn:ec1-rxd2",
+ "altfn:ec1-rxd1", "altfn:ec1-rxd0",
+ "altfn:ec1-rx-clk", "altfn:ec1-rx-dv",
+ "", "",
+ "ptp-refclk-in",
+ "", "", "", "", "", "", "", "",
+ "u1700-zl30733-pps-out",
+ "",
+ "ethsw-mdio-en",
+ "usb01-oc#", /* USB1_PWRFAULT and USB2_PWRFAULT share one net */
+ "",
+ "usb01-oc#",
+ "altfn:spi3-sck",
+ "", "";
+
+ status = "okay";
+};
+
+/* On-module management bus */
+&i2c0 {
+ status = "okay";
+
+ /* +0V8_VDD core rail, MPS MPQ8646 (MPQ8785 core) over PMBus */
+ vdd08: regulator@10 {
+ compatible = "mps,mpq8646";
+ reg = <0x10>;
+ };
+
+ /* SO-DIMM SPD temperature sensors */
+ temperature-sensor@18 {
+ compatible = "jedec,jc-42.4-temp";
+ reg = <0x18>;
+ };
+
+ temperature-sensor@19 {
+ compatible = "jedec,jc-42.4-temp";
+ reg = <0x19>;
+ };
+
+ eeprom@52 {
+ compatible = "atmel,24c32";
+ reg = <0x52>;
+ pagesize = <32>;
+ };
+
+ /* Board ID straps */
+ gpio@74 {
+ compatible = "ti,tca9539";
+ reg = <0x74>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ gpio-line-names =
+ "boardid-0x0001", "boardid-0x0002",
+ "boardid-0x0004", "boardid-0x0008",
+ "boardid-0x0010", "boardid-0x0020",
+ "boardid-0x0040", "boardid-0x0080",
+ "boardid-0x0100", "boardid-0x0200",
+ "boardid-0x0400", "boardid-0x0800",
+ "boardid-0x1000", "boardid-0x2000",
+ "boardid-0x4000", "boardid-0x8000";
+ };
+
+ u800: gpio@75 {
+ compatible = "ti,tca9539";
+ reg = <0x75>;
+ #gpio-cells = <2>;
+ #interrupt-cells = <2>;
+ gpio-controller;
+ gpio-line-names =
+ "carrier-gpio0", "carrier-gpio1",
+ "carrier-gpio2", "carrier-gpio3",
+ "carrier-gpio4", "carrier-gpio5",
+ "carrier-gpio6", "carrier-gpio7",
+ "carrier-gpio8", "carrier-gpio9",
+ "carrier-gpio10", "carrier-gpio11",
+ "", "", "",
+ "lan8023-rst";
+ interrupt-controller;
+ interrupt-parent = <&gpio2>;
+ interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
+ };
+};
+
+&i2c1 {
+ status = "okay";
+};
+
+&i2c2 {
+ status = "okay";
+};
+
+&i2c3 {
+ status = "okay";
+};
+
+&i2c5 {
+ status = "okay";
+};
+
+&pcie3 {
+ status = "okay";
+};
+
+&pcie4 {
+ status = "okay";
+};
+
+&pcie5 {
+ status = "okay";
+};
+
+&pcie6 {
+ status = "okay";
+};
+
+&uart0 {
+ status = "okay";
+};
+
+&usb0 {
+ status = "okay";
+};
+
+&usb1 {
+ status = "okay";
+};
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v6 3/3] arm64: dts: freescale: add Nodebox v3 CPU Module
2026-09-13 12:35 ` [PATCH v6 3/3] arm64: dts: freescale: add " Vincent Jardin via B4 Relay
@ 2026-09-13 12:45 ` sashiko-bot
0 siblings, 0 replies; 5+ messages in thread
From: sashiko-bot @ 2026-09-13 12:45 UTC (permalink / raw)
To: Vincent Jardin; +Cc: imx, devicetree, robh, conor+dt, Frank.Li
Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider:
- [Medium] Ethernet PHY nodes lack 'interrupts' and 'reset-gpios' properties despite physical lines being explicitly defined on the board.
- [Medium] Regulator polarity mismatch for `ethsw-mdio-en`.
- [Low] Duplicate GPIO line name `usb01-oc#` in `gpio3` controller.
- [Low] Missing Devicetree binding documentation for the new board compatible.
--
commit 8433b3c3d1e5258b1e8b5fc1b405c85d777065d4
Author: Vincent Jardin <vjardin@free.fr>
arm64: dts: freescale: add Nodebox v3 CPU Module
The Nodebox v3 is a Free Mobile CPU module built around the NXP
LX2160A (16x Cortex-A72, DPAA2).
> diff --git a/arch/arm64/boot/dts/freescale/fsl-lx2160a-nbxv3.dts b/arch/arm64/boot/dts/freescale/fsl-lx2160a-nbxv3.dts
> new file mode 100644
> index 0000000000000..cc02204e9d1b4
> --- /dev/null
> +++ b/arch/arm64/boot/dts/freescale/fsl-lx2160a-nbxv3.dts
[ ... ]
> +/ {
> + compatible = "freemobile,nbxv3", "fsl,lx2160a";
[Severity: Low]
Are the devicetree bindings for this new board compatible string documented?
New compatible strings must be documented to pass make dt_binding_check
validation, but this patch does not appear to include the required updates
to the Devicetree bindings documentation.
> + model = "Free Mobile Nodebox v3 CPU Module (LX2160A)";
> +};
> +
[ ... ]
> diff --git a/arch/arm64/boot/dts/freescale/fsl-lx2160a-nbxv3.dtsi b/arch/arm64/boot/dts/freescale/fsl-lx2160a-nbxv3.dtsi
> new file mode 100644
> index 0000000000000..ca4fb5329c0b2
> --- /dev/null
> +++ b/arch/arm64/boot/dts/freescale/fsl-lx2160a-nbxv3.dtsi
[ ... ]
> + gpio-restart {
> + compatible = "gpio-restart";
> + gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
> + priority = <128>;
> + };
> +
> + reg_ethsw_mdio: regulator-ethsw-mdio {
> + compatible = "regulator-fixed";
> + gpio = <&gpio3 25 GPIO_ACTIVE_LOW>;
> + regulator-always-on;
> + regulator-boot-on;
> + regulator-name = "ethsw-mdio-en";
[Severity: Medium]
Is ethsw-mdio-en truly an active-low signal?
The reg_ethsw_mdio regulator specifies GPIO_ACTIVE_LOW and regulator-always-on.
The kernel gpiolib will apply a logical-to-physical inversion, driving the
physical pin to 0V.
However, the board's strict naming convention uses a '#' or '-b' suffix for
active-low signals (e.g., ethsw-reset#, usb01-oc#). The absence of this
suffix on ethsw-mdio-en strongly implies it is an active-high signal. If it
is active-high, driving it low will erroneously disable the MDIO bus to the
Ethernet switch.
> + };
> +};
> +
[ ... ]
> +&emdio1 {
> + status = "okay";
> +
> + /* Microchip LAN8023 dual 10G PCS/retimer, Clause 45 only, one address per slice */
> + lan8023_phy_s0: ethernet-phy@2 {
> + compatible = "ethernet-phy-ieee802.3-c45";
> + reg = <2>;
> + };
[Severity: Medium]
Should this node include the interrupts and reset-gpios mappings?
The lan8023_phy_s0 node omits the interrupts (lan8023-mdint) and reset-gpios
(lan8023-rst) mappings, even though these physical lines are explicitly
defined on the board.
Without the interrupts property, the kernel's PHY state machine is forced to
use inefficient polling mode instead of hardware interrupts, increasing CPU
overhead and latency.
Missing the reset-gpios property prevents the kernel from managing the PHY
reset lifecycle. If the I2C expander (u800) initializes to a state that holds
the PHYs in reset, the PHY probe will fail completely.
> +
> + lan8023_phy_s1: ethernet-phy@3 {
> + compatible = "ethernet-phy-ieee802.3-c45";
> + reg = <3>;
> + };
> +
> + rtl8211fd: ethernet-phy@6 {
> + compatible = "ethernet-phy-id001c.c916";
> + reg = <6>;
> + };
[Severity: Medium]
Similar to the lan8023_phy_s0 node, should this node include the interrupts
mapping?
The rtl8211fd node omits the interrupts (u1300-rtl8211fd-int#) mapping.
Missing this also forces the kernel to use polling mode for the PHY state
machine.
> +};
[ ... ]
> +&gpio3 {
> + gpio-line-names =
> + "altfn:ec1-txd3", "altfn:ec1-txd2",
> + "altfn:ec1-txd1", "altfn:ec1-txd0",
> + "altfn:ec1-tx-en", "altfn:ec1-gtx-clk",
> + "altfn:ec1-rxd3", "altfn:ec1-rxd2",
> + "altfn:ec1-rxd1", "altfn:ec1-rxd0",
> + "altfn:ec1-rx-clk", "altfn:ec1-rx-dv",
> + "", "",
> + "ptp-refclk-in",
> + "", "", "", "", "", "", "", "",
> + "u1700-zl30733-pps-out",
> + "",
> + "ethsw-mdio-en",
> + "usb01-oc#", /* USB1_PWRFAULT and USB2_PWRFAULT share one net */
> + "",
> + "usb01-oc#",
[Severity: Low]
Are these duplicate line names intentional?
Device tree GPIO line names must be unique within a controller. Defining
usb01-oc# twice causes ambiguity; any in-kernel consumer or userspace tool
(via libgpiod) attempting to lookup the GPIO by name will only ever match
the first occurrence.
This violates DT schema rules and makes the second pin inaccessible by name.
> + "altfn:spi3-sck",
> + "", "";
> +
> + status = "okay";
> +};
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260913-for-upstream-nbxv3-dts-v6-0-058566b93ba1@free.fr?part=3
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-09-13 12:45 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-13 12:35 [PATCH v6 0/3] arm64: dts: freescale: add Free Mobile Nodebox v3 CPU Module (LX2160A) Vincent Jardin via B4 Relay
2026-09-13 12:35 ` [PATCH v6 1/3] dt-bindings: vendor-prefixes: add Free Mobile Vincent Jardin via B4 Relay
2026-09-13 12:35 ` [PATCH v6 2/3] dt-bindings: arm: fsl: add Free Mobile Nodebox v3 CPU Module Vincent Jardin via B4 Relay
2026-09-13 12:35 ` [PATCH v6 3/3] arm64: dts: freescale: add " Vincent Jardin via B4 Relay
2026-09-13 12:45 ` sashiko-bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox