[v2,4/7] dt-bindings: remoteproc: add Allwinner sun55i-rproc schema
Commit Message
Add Device Tree binding schema for the Allwinner XuanTie E907 RISC-V
remote processor subsystem integrated into Allwinner A523, A527, and
T527 (sun55i) SoCs.
The binding defines the memory resources (configuration registers,
SRAM Space 0, SRAM Space 1, and optional remap controller), clocks,
resets, reserved memory regions, and hardware mailbox channels.
Signed-off-by: Tim Michals <tcmichals@gmail.com>
---
.../remoteproc/allwinner,sun55i-rproc.yaml | 146 ++++++++++++++++++
1 file changed, 146 insertions(+)
create mode 100644 Documentation/devicetree/bindings/remoteproc/allwinner,sun55i-rproc.yaml
Comments
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] dt-bindings: missing constraint for required 'r_sram'/'r_sram1' in reg-names
--
commit cc7b4893d8220b754d0e23e60a9d997c33b1c0c3
Author: Tim Michals <tcmichals@gmail.com>
Subject: dt-bindings: remoteproc: add Allwinner sun55i-rproc schema
This commit adds a Device Tree binding schema for the Allwinner XuanTie
E906/E907 RISC-V remoteproc on sun55i SoCs. It defines resources such as
memory-mapped registers, clocks, resets, and mailboxes required to manage
the co-processor.
> diff --git a/Documentation/devicetree/bindings/remoteproc/allwinner,sun55i-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/allwinner,sun55i-rproc.yaml
> new file mode 100644
> index 0000000000000..53e3f4faaa768
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/remoteproc/allwinner,sun55i-rproc.yaml
[ ... ]
> + reg:
> + minItems: 1
> + maxItems: 4
> + description:
> + Memory-mapped register regions. The following named regions are
> + supported (all optional except at least one of r_sram or r_sram1) -
> + "cfg" for RISC-V core control and boot-vector registers,
> + "r_sram" for dedicated MCU SRAM Space 0,
> + "r_sram1" for switchable MCU SRAM Space 1,
> + "remap" for the hardware remap control register.
> +
> + reg-names:
> + minItems: 1
> + maxItems: 4
> + items:
> + enum:
> + - cfg
> + - r_sram
> + - r_sram1
> + - remap
[Severity: Medium]
The description for reg explicitly states that at least one of r_sram or
r_sram1 is required, but the schema for reg-names allows any single item
from the enum (such as just cfg) to pass validation.
If a device tree node is created with only cfg or remap in reg-names, it
will silently pass offline device tree validation despite lacking the
required SRAM regions.
Should an additional constraint be added to enforce the presence of at least
one SRAM region so that incomplete device trees are caught during validation?
On Sat, Sep 26, 2026 at 07:20:13PM -0500, Tim Michals wrote:
> Add Device Tree binding schema for the Allwinner XuanTie E907 RISC-V
> remote processor subsystem integrated into Allwinner A523, A527, and
> T527 (sun55i) SoCs.
>
> The binding defines the memory resources (configuration registers,
> SRAM Space 0, SRAM Space 1, and optional remap controller), clocks,
> resets, reserved memory regions, and hardware mailbox channels.
>
> Signed-off-by: Tim Michals <tcmichals@gmail.com>
> ---
> .../remoteproc/allwinner,sun55i-rproc.yaml | 146 ++++++++++++++++++
> 1 file changed, 146 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/remoteproc/allwinner,sun55i-rproc.yaml
>
> diff --git a/Documentation/devicetree/bindings/remoteproc/allwinner,sun55i-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/allwinner,sun55i-rproc.yaml
> new file mode 100644
> index 000000000000..53e3f4faaa76
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/remoteproc/allwinner,sun55i-rproc.yaml
> @@ -0,0 +1,146 @@
> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/remoteproc/allwinner,sun55i-rproc.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Allwinner XuanTie E906/E907 RISC-V Remoteproc
> +
> +maintainers:
> + - Jernej Skrabec <jernej.skrabec@gmail.com>
> + - Samuel Holland <samuel@sholland.org>
> + - Tim Michals <tcmichals@gmail.com>
> +
> +description:
> + The Allwinner T527, A527, and A523 (sun55i) SoCs integrate a T-Head
> + (XuanTie) E906 or E907 RISC-V co-processor alongside the ARM Cortex-A55
> + cluster. The co-processor runs bare-metal firmware loaded and lifecycle-
> + managed by the Linux remoteproc framework.
> +
> + The driver controls CCU-integrated clocks (bus, core) and resets
> + (cfg, core), programs the hardware boot-vector register, maps
> + internal SRAM (SRAM_A3) windows, and connects to the Allwinner
> + hardware mailbox (CPUX_MSGBOX) for VirtIO RPMsg IPC.
> +
> +properties:
> + compatible:
> + const: allwinner,sun55i-a523-rproc
> +
> + reg:
> + minItems: 1
> + maxItems: 4
> + description:
> + Memory-mapped register regions. The following named regions are
> + supported (all optional except at least one of r_sram or r_sram1) -
> + "cfg" for RISC-V core control and boot-vector registers,
> + "r_sram" for dedicated MCU SRAM Space 0,
> + "r_sram1" for switchable MCU SRAM Space 1,
> + "remap" for the hardware remap control register.
> +
> + reg-names:
> + minItems: 1
> + maxItems: 4
> + items:
> + enum:
> + - cfg
> + - r_sram
> + - r_sram1
> + - remap
So you completely ignored my feedback and sent exactly the same.
Best regards,
Krzysztof
new file mode 100644
@@ -0,0 +1,146 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/remoteproc/allwinner,sun55i-rproc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Allwinner XuanTie E906/E907 RISC-V Remoteproc
+
+maintainers:
+ - Jernej Skrabec <jernej.skrabec@gmail.com>
+ - Samuel Holland <samuel@sholland.org>
+ - Tim Michals <tcmichals@gmail.com>
+
+description:
+ The Allwinner T527, A527, and A523 (sun55i) SoCs integrate a T-Head
+ (XuanTie) E906 or E907 RISC-V co-processor alongside the ARM Cortex-A55
+ cluster. The co-processor runs bare-metal firmware loaded and lifecycle-
+ managed by the Linux remoteproc framework.
+
+ The driver controls CCU-integrated clocks (bus, core) and resets
+ (cfg, core), programs the hardware boot-vector register, maps
+ internal SRAM (SRAM_A3) windows, and connects to the Allwinner
+ hardware mailbox (CPUX_MSGBOX) for VirtIO RPMsg IPC.
+
+properties:
+ compatible:
+ const: allwinner,sun55i-a523-rproc
+
+ reg:
+ minItems: 1
+ maxItems: 4
+ description:
+ Memory-mapped register regions. The following named regions are
+ supported (all optional except at least one of r_sram or r_sram1) -
+ "cfg" for RISC-V core control and boot-vector registers,
+ "r_sram" for dedicated MCU SRAM Space 0,
+ "r_sram1" for switchable MCU SRAM Space 1,
+ "remap" for the hardware remap control register.
+
+ reg-names:
+ minItems: 1
+ maxItems: 4
+ items:
+ enum:
+ - cfg
+ - r_sram
+ - r_sram1
+ - remap
+
+ clocks:
+ minItems: 1
+ maxItems: 5
+
+ clock-names:
+ minItems: 1
+ items:
+ - const: bus
+ - const: core
+ - const: sram
+ - const: msgbox
+ - const: parent
+
+ resets:
+ minItems: 1
+ maxItems: 4
+
+ reset-names:
+ minItems: 1
+ items:
+ - const: cfg
+ - const: core
+ - const: sram
+ - const: msgbox
+
+ mboxes:
+ maxItems: 2
+ description:
+ Exactly two mailbox channels from the Allwinner CPUX_MSGBOX controller,
+ one receive channel (RISC-V-to-ARM) and one transmit channel
+ (ARM-to-RISC-V), used for VirtIO RPMsg kick notifications.
+
+ mbox-names:
+ items:
+ - const: rx
+ - const: tx
+
+ firmware-name:
+ maxItems: 1
+ description:
+ Name of the ELF firmware image to load from /lib/firmware/.
+ Defaults to "riscv-firmware.elf" if not specified.
+
+ memory-region:
+ minItems: 1
+ items:
+ - description: VirtIO vring buffer region (DDR carveout)
+ - description: DRAM firmware execution carveout
+ - description: RemoteProc trace buffer carveout
+
+ memory-region-names:
+ minItems: 1
+ items:
+ - const: vram
+ - const: dram
+ - const: trace
+
+ interrupts:
+ maxItems: 1
+ description:
+ Optional hardware crash-notification interrupt. When present the
+ driver calls rproc_report_crash() on assertion.
+
+ interrupt-names:
+ items:
+ - const: crash
+
+required:
+ - compatible
+ - reg
+ - reg-names
+ - clocks
+ - clock-names
+ - resets
+ - reset-names
+ - mboxes
+ - mbox-names
+
+additionalProperties: false
+
+examples:
+ - |
+ remoteproc@7130000 {
+ compatible = "allwinner,sun55i-a523-rproc";
+ reg = <0x07130000 0x1000>,
+ <0x07280000 0x40000>,
+ <0x072c0000 0x40000>,
+ <0x07010364 0x4>;
+ reg-names = "cfg", "r_sram", "r_sram1", "remap";
+ clocks = <&mcu_ccu 3>, <&mcu_ccu 4>;
+ clock-names = "bus", "core";
+ resets = <&mcu_ccu 0>, <&mcu_ccu 1>;
+ reset-names = "cfg", "core";
+ mboxes = <&msgbox 8>, <&msgbox 9>;
+ mbox-names = "rx", "tx";
+ firmware-name = "riscv-firmware.elf";
+ };