Skip to contentSkip to conversation

dt-bindings: arm64: dts: Intel SoCFPGA: rsu-handle on svc for U-Boot

PATCH In review [email protected] 3 participants 5 messages May 6

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

cover dt-bindings: arm64: dts: Intel SoCFPGA: rsu-handle on svc for U-Boot

From: Tze Yee Ng <[email protected]>

When Linux passes a device tree to U-Boot for remote system update (RSU), U-Boot needs to know which QSPI partition holds the boot image. Add an optional rsu-handle property on the Intel service-layer (svc) node: it is a phandle to the board's QSPI boot partition (typically labeled qspi_boot).

Patch 1 documents rsu-handle in the intel,stratix10-svc binding (shared by Stratix 10, Agilex, and Agilex5 svc compatibles) and extends the example so the qspi_boot label and reg cells are valid for dt_binding_check.

Patch 2 labels the firmware svc node as "svc" in the Stratix 10, Agilex, and Agilex5 SoC .dtsi files, and sets rsu-handle = <&qspi_boot> via &svc only on board .dts files that already define qspi_boot. Boards without that partition are unchanged and avoid an unresolved phandle.

Tze Yee Ng (2):
dt-bindings: firmware: document rsu-handle for intel stratix10-svc
arm64: dts: socfpga: add rsu-handle to svc on QSPI SoCDK boards

 .../firmware/intel,stratix10-svc.yaml         | 25 +++++++++++++++++++
 .../boot/dts/altera/socfpga_stratix10.dtsi    |  2 +-
 .../dts/altera/socfpga_stratix10_socdk.dts    |  4 +++
 .../altera/socfpga_stratix10_socdk_nand.dts   |  4 +++
 arch/arm64/boot/dts/intel/socfpga_agilex.dtsi |  2 +-
 .../boot/dts/intel/socfpga_agilex3_socdk.dts  |  4 +++
 .../arm64/boot/dts/intel/socfpga_agilex5.dtsi |  2 +-
 .../boot/dts/intel/socfpga_agilex5_socdk.dts  |  4 +++
 .../dts/intel/socfpga_agilex5_socdk_013b.dts  |  4 +++
 .../intel/socfpga_agilex5_socdk_modular.dts   |  4 +++
 .../boot/dts/intel/socfpga_agilex_socdk.dts   |  4 +++
 .../boot/dts/intel/socfpga_n5x_socdk.dts      |  4 +++
 12 files changed, 60 insertions(+), 3 deletions(-)
Signature · 1 line
2.43.7
#1 lore raw

PATCH 1/2 dt-bindings: firmware: document rsu-handle for intel stratix10-svc

From: Tze Yee Ng <[email protected]>

Add the optional rsu-handle property to the intel,stratix10-svc binding. It holds a phandle to the QSPI boot partition (qspi_boot) for U-Boot remote system update (RSU) handoff.

Extend the example with a minimal QSPI fixed-partitions node so the qspi_boot label is defined where rsu-handle is used.

---
 .../firmware/intel,stratix10-svc.yaml         | 25 +++++++++++++++++++
 1 file changed, 25 insertions(+)
Documentation/devicetree/bindings/firmware/intel,stratix10-svc.yaml +25 -0
index b42cfa78b28b..5b90058f4f6b 100644
@@ -58,6 +58,12 @@ properties:
   iommus:
     maxItems: 1
 
+  rsu-handle:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      Phandle to the QSPI boot partition node (qspi_boot), used by U-Boot
+      during remote system update flow.
+
   fpga-mgr:
     $ref: /schemas/fpga/intel,stratix10-soc-fpga-mgr.yaml
     description: Optional child node for fpga manager to perform fabric configuration.
@@ -94,11 +100,30 @@ examples:
       };
     };
 
+    qspi@0 {
+      compatible = "jedec,spi-nor";
+      reg = <0x0 0x1000>;
+      #address-cells = <1>;
+      #size-cells = <1>;
+
+      partitions {
+        compatible = "fixed-partitions";
+        #address-cells = <1>;
+        #size-cells = <1>;
+
+        qspi_boot: partition@0 {
+          label = "u-boot";
+          reg = <0x0 0x100000>;
+        };
+      };
+    };
+
     firmware {
       svc {
         compatible = "intel,stratix10-svc";
         method = "smc";
         memory-region = <&service_reserved>;
+        rsu-handle = <&qspi_boot>;
 
         fpga-mgr {
           compatible = "intel,stratix10-soc-fpga-mgr";
Signature · 1 line
2.43.7
#2 lore raw

Re: [PATCH 1/2] dt-bindings: firmware: document rsu-handle for intel stratix10-svc

Quoted 8 lines · On 06/05/2026 14:42, [email protected] wrote:

From: Tze Yee Ng <[email protected]>

Add the optional rsu-handle property to the intel,stratix10-svc binding. It holds a phandle to the QSPI boot partition (qspi_boot) for U-Boot remote system update (RSU) handoff.

Extend the example with a minimal QSPI fixed-partitions node so the qspi_boot label is defined where rsu-handle is used.

Not really relevant to the binding.

Quoted 11 lines
---
 .../firmware/intel,stratix10-svc.yaml         | 25 +++++++++++++++++++
 1 file changed, 25 insertions(+)
Documentation/devicetree/bindings/firmware/intel,stratix10-svc.yaml +0 -0
index b42cfa78b28b..5b90058f4f6b 100644

Documentation/devicetree/bindings/firmware/intel,stratix10-svc.yaml properties: · line 61

Quoted 4 lines
Documentation/devicetree/bindings/firmware/intel,stratix10-svc.yaml +1 -0
@@ -58,6 +58,12 @@ properties:
   iommus:
     maxItems: 1
 
+  rsu-handle:

Missing prefix but OTOH suffix "handle" is redundant.

Documentation/devicetree/bindings/firmware/intel,stratix10-svc.yaml properties: · line 65

Quoted 4 lines
Documentation/devicetree/bindings/firmware/intel,stratix10-svc.yaml +4 -0
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      Phandle to the QSPI boot partition node (qspi_boot), used by U-Boot
+      during remote system update flow.

Do not explain what U-Boot does but explain the hardware - how is that partition related anyhow hardware-wise to this SVC. I don't see that connection and we do not add properties for SW.

Best regards,
Krzysztof

#3 lore raw

Re: [PATCH 1/2] dt-bindings: firmware: document rsu-handle for intel stratix10-svc

In reply to [email protected]
Quoted 6 lines · On Wed, 06 May 2026 05:42:20 -0700, [email protected] wrote:

From: Tze Yee Ng <[email protected]>

Add the optional rsu-handle property to the intel,stratix10-svc binding. It holds a phandle to the QSPI boot partition (qspi_boot) for U-Boot remote system update (RSU) handoff.

Quoted 8 lines

Extend the example with a minimal QSPI fixed-partitions node so the qspi_boot label is defined where rsu-handle is used.

---
 .../firmware/intel,stratix10-svc.yaml         | 25 +++++++++++++++++++
 1 file changed, 25 insertions(+)

My bot found errors running 'make dt_binding_check' on your patch:

yamllint warnings/errors:

dtschema/dtc warnings/errors:
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/firmware/intel,stratix10-svc.example.dtb: qspi@0 (jedec,spi-nor): $nodename:0: 'qspi@0' does not match '^(flash|.*sram|nand)(@.*)?$'
from schema $id: http://devicetree.org/schemas/mtd/jedec,spi-nor.yaml
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/firmware/intel,stratix10-svc.example.dtb: qspi@0 (jedec,spi-nor): reg:0: [0, 4096] is too long
from schema $id: http://devicetree.org/schemas/mtd/jedec,spi-nor.yaml
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/firmware/intel,stratix10-svc.example.dtb: qspi@0 (jedec,spi-nor): Unevaluated properties are not allowed ('#address-cells', '#size-cells', 'partitions' were unexpected)
from schema $id: http://devicetree.org/schemas/mtd/jedec,spi-nor.yaml

doc reference errors (make refcheckdocs):

See https://patchwork.kernel.org/project/devicetree/patch/09822cb8171f90d50c018f2f1fae5e5aab737301.1778070377.git.tze.yee.ng@altera.com

The base for the series is generally the latest rc1. A different dependency should be noted in *this* patch.

If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date:

pip3 install dtschema --upgrade

Please check and re-submit after running the above command yourself. Note that DT_SCHEMA_FILES can be set to your schema file to speed up checking your schema. However, it must be unset to test all examples with your schema.

#4 lore raw

PATCH 2/2 arm64: dts: socfpga: add rsu-handle to svc on QSPI SoCDK boards

In reply to [email protected]

From: Tze Yee Ng <[email protected]>

Label the firmware svc node as "svc" in the Stratix 10, Agilex, and Agilex5 SoC base include files so board DTS can override it by phandle.

Set rsu-handle = <&qspi_boot> on &svc only in board DTs that define the qspi_boot partition, so boards without that partition do not reference an undefined phandle.

---
 arch/arm64/boot/dts/altera/socfpga_stratix10.dtsi           | 2 +-
 arch/arm64/boot/dts/altera/socfpga_stratix10_socdk.dts      | 4 ++++
 arch/arm64/boot/dts/altera/socfpga_stratix10_socdk_nand.dts | 4 ++++
 arch/arm64/boot/dts/intel/socfpga_agilex.dtsi               | 2 +-
 arch/arm64/boot/dts/intel/socfpga_agilex3_socdk.dts         | 4 ++++
 arch/arm64/boot/dts/intel/socfpga_agilex5.dtsi              | 2 +-
 arch/arm64/boot/dts/intel/socfpga_agilex5_socdk.dts         | 4 ++++
 arch/arm64/boot/dts/intel/socfpga_agilex5_socdk_013b.dts    | 4 ++++
 arch/arm64/boot/dts/intel/socfpga_agilex5_socdk_modular.dts | 4 ++++
 arch/arm64/boot/dts/intel/socfpga_agilex_socdk.dts          | 4 ++++
 arch/arm64/boot/dts/intel/socfpga_n5x_socdk.dts             | 4 ++++
 11 files changed, 35 insertions(+), 3 deletions(-)
arch/arm64/boot/dts/altera/socfpga_stratix10.dtsi +1 -1
index 0d9cad0c0351..64e9e1d8a852 100644
@@ -70,7 +70,7 @@ l2_shared: cache {
 	};
 
 	firmware {
-		svc {
+		svc: svc {
 			compatible = "intel,stratix10-svc";
 			method = "smc";
 			memory-region = <&service_reserved>;
arch/arm64/boot/dts/altera/socfpga_stratix10_socdk.dts +4 -0
index e2a1cea7f3da..f4c9f9bb26aa 100644
@@ -134,3 +134,7 @@ root: partition@4200000 {
 		};
 	};
 };
+
+&svc {
+	rsu-handle = <&qspi_boot>;
+};
arch/arm64/boot/dts/altera/socfpga_stratix10_socdk_nand.dts +4 -0
index 7951ce46ae1f..1f3e4b50412d 100644
@@ -184,3 +184,7 @@ qspi_rootfs: partition@3fe0000 {
 		};
 	};
 };
+
+&svc {
+	rsu-handle = <&qspi_boot>;
+};
arch/arm64/boot/dts/intel/socfpga_agilex.dtsi +1 -1
index 0dfbafde8822..6440b4c6818a 100644
@@ -61,7 +61,7 @@ cpu3: cpu@3 {
 	};
 
 	firmware {
-		svc {
+		svc: svc {
 			compatible = "intel,agilex-svc";
 			method = "smc";
 			memory-region = <&service_reserved>;
arch/arm64/boot/dts/intel/socfpga_agilex3_socdk.dts +4 -0
index 14b299f19f3a..af8b75107216 100644
@@ -130,3 +130,7 @@ &uart0 {
 &watchdog0 {
 	status = "okay";
 };
+
+&svc {
+	rsu-handle = <&qspi_boot>;
+};
arch/arm64/boot/dts/intel/socfpga_agilex5.dtsi +1 -1
index 02e62d954e94..d415b762f328 100644
@@ -80,7 +80,7 @@ L3: l3-cache {
 	};
 
 	firmware {
-		svc {
+		svc: svc {
 			compatible = "intel,agilex5-svc";
 			method = "smc";
 			memory-region = <&service_reserved>;
arch/arm64/boot/dts/intel/socfpga_agilex5_socdk.dts +4 -0
index 262bb3e8e5c7..0985e70dfe44 100644
@@ -110,3 +110,7 @@ &usb0 {
 &watchdog0 {
 	status = "okay";
 };
+
+&svc {
+	rsu-handle = <&qspi_boot>;
+};
arch/arm64/boot/dts/intel/socfpga_agilex5_socdk_013b.dts +4 -0
index f71e1280c778..5948f125ba0b 100644
@@ -124,3 +124,7 @@ &uart0 {
 &watchdog0 {
 	status = "okay";
 };
+
+&svc {
+	rsu-handle = <&qspi_boot>;
+};
arch/arm64/boot/dts/intel/socfpga_agilex5_socdk_modular.dts +4 -0
index 1831402d8808..78be156208d9 100644
@@ -107,3 +107,7 @@ &uart0 {
 &watchdog0 {
 	status = "okay";
 };
+
+&svc {
+	rsu-handle = <&qspi_boot>;
+};
arch/arm64/boot/dts/intel/socfpga_agilex_socdk.dts +4 -0
index 8f8a5423ba02..d277b7073dbf 100644
@@ -136,3 +136,7 @@ root: partition@4200000 {
 		};
 	};
 };
+
+&svc {
+	rsu-handle = <&qspi_boot>;
+};
arch/arm64/boot/dts/intel/socfpga_n5x_socdk.dts +4 -0
index d7d500f50a07..ac8cf8b7257b 100644
@@ -126,3 +126,7 @@ &usb0 {
 &watchdog0 {
 	status = "okay";
 };
+
+&svc {
+	rsu-handle = <&qspi_boot>;
+};
Signature · 1 line
2.43.7