dt-bindings: arm64: dts: Intel SoCFPGA: rsu-handle on svc for U-Boot
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
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
@@ -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
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_bootlabel is defined where rsu-handle is used.
Not really relevant to the binding.
Quoted 11 lines
Signed-off-by Tze Yee Ng <[email protected]>--- .../firmware/intel,stratix10-svc.yaml | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+)Documentation/devicetree/bindings/firmware/intel,stratix10-svc.yaml +0
-0
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
Rob Herring (Arm)
maintainerRe: [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_bootlabel is defined where rsu-handle is used.Signed-off-by Tze Yee Ng <[email protected]>--- .../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):
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.
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
@@ -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
@@ -134,3 +134,7 @@ root: partition@4200000 { }; }; }; + +&svc { + rsu-handle = <&qspi_boot>; +};
arch/arm64/boot/dts/altera/socfpga_stratix10_socdk_nand.dts +4 -0
@@ -184,3 +184,7 @@ qspi_rootfs: partition@3fe0000 { }; }; }; + +&svc { + rsu-handle = <&qspi_boot>; +};
arch/arm64/boot/dts/intel/socfpga_agilex.dtsi +1 -1
@@ -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
@@ -130,3 +130,7 @@ &uart0 { &watchdog0 { status = "okay"; }; + +&svc { + rsu-handle = <&qspi_boot>; +};
arch/arm64/boot/dts/intel/socfpga_agilex5.dtsi +1 -1
@@ -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
@@ -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
@@ -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
@@ -107,3 +107,7 @@ &uart0 { &watchdog0 { status = "okay"; }; + +&svc { + rsu-handle = <&qspi_boot>; +};
arch/arm64/boot/dts/intel/socfpga_agilex_socdk.dts +4 -0
@@ -136,3 +136,7 @@ root: partition@4200000 { }; }; }; + +&svc { + rsu-handle = <&qspi_boot>; +};
arch/arm64/boot/dts/intel/socfpga_n5x_socdk.dts +4 -0
@@ -126,3 +126,7 @@ &usb0 { &watchdog0 { status = "okay"; }; + +&svc { + rsu-handle = <&qspi_boot>; +};
Signature · 1 line
2.43.7