[PATCH v2 1/7] dt-bindings: mailbox: add Allwinner sun55i msgbox schema
From: Tim Michals
Date: Sat Sep 26 2026 - 20:20:57 EST
Add Device Tree binding schema for the Allwinner 4-port hardware
Message Box controller found on sun55i (A523, A527, T527) and
sun60i (A733) SoCs.
The message box connects the ARM Cortex-A55 host cluster to the
HiFi4 Audio DSP, Power Management Unit (CPUS), and XuanTie RISC-V
co-processor across 12 logical channels with 8-entry hardware FIFOs.
Signed-off-by: Tim Michals <tcmichals@xxxxxxxxx>
---
.../mailbox/allwinner,sun55i-a523-msgbox.yaml | 102 ++++++++++++++++++
1 file changed, 102 insertions(+)
create mode 100644 Documentation/devicetree/bindings/mailbox/allwinner,sun55i-a523-msgbox.yaml
diff --git a/Documentation/devicetree/bindings/mailbox/allwinner,sun55i-a523-msgbox.yaml b/Documentation/devicetree/bindings/mailbox/allwinner,sun55i-a523-msgbox.yaml
new file mode 100644
index 000000000000..6b0c7ff70c9f
--- /dev/null
+++ b/Documentation/devicetree/bindings/mailbox/allwinner,sun55i-a523-msgbox.yaml
@@ -0,0 +1,102 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mailbox/allwinner,sun55i-a523-msgbox.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Allwinner sun55i 4-Port Message Box
+
+maintainers:
+ - Tim Michals <tcmichals@xxxxxxxxx>
+ - Samuel Holland <samuel@xxxxxxxxxxxx>
+
+description:
+ The hardware message box on sun55i (A523, A527, T527) and sun60i (A733)
+ SoCs is a 4-port multi-processor mailbox controller connecting the ARM
+ Cortex-A55 host cluster, HiFi4 Audio DSP, Power Management Unit (CPUS),
+ and XuanTie RISC-V co-processor.
+
+ It features independent 256-byte register banks for each processor port,
+ 12 logical channels on the host (4 per remote processor), and 8-entry
+ hardware FIFOs with level interrupts.
+
+properties:
+ compatible:
+ enum:
+ - allwinner,sun55i-a523-msgbox
+ - allwinner,sun55i-t527-msgbox
+ - allwinner,sun60i-a733-msgbox
+
+ reg:
+ maxItems: 4
+ description:
+ Register banks for each of the four processor ports. Each port has
+ an independent 256-byte register bank.
+
+ reg-names:
+ items:
+ - const: arm
+ - const: dsp
+ - const: cpus
+ - const: rv
+
+ clocks:
+ maxItems: 1
+
+ resets:
+ maxItems: 1
+
+ interrupts:
+ minItems: 1
+ maxItems: 4
+ description:
+ One interrupt per processor port in port order (arm, dsp, cpus, rv).
+ The ARM host port interrupt is required; remote port interrupts are
+ optional. Use interrupt-names to identify which ports are present when
+ providing a partial list.
+
+ interrupt-names:
+ minItems: 1
+ maxItems: 4
+ items:
+ enum:
+ - arm
+ - dsp
+ - cpus
+ - rv
+
+ '#mbox-cells':
+ const: 1
+ description: "channel number (0-11: 0-3 CPUS, 4-7 DSP, 8-11 RISC-V)"
+
+required:
+ - compatible
+ - reg
+ - reg-names
+ - clocks
+ - resets
+ - interrupts
+ - '#mbox-cells'
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+ mailbox@3003000 {
+ compatible = "allwinner,sun55i-a523-msgbox";
+ reg = <0x03003000 0x1000>,
+ <0x07094000 0x1000>,
+ <0x07120000 0x1000>,
+ <0x07136000 0x1000>;
+ reg-names = "arm", "dsp", "cpus", "rv";
+ clocks = <&ccu 120>;
+ resets = <&ccu 45>;
+ interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 181 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "arm", "dsp", "cpus", "rv";
+ #mbox-cells = <1>;
+ };
--
2.43.0