[PATCH 3/5] dt-bindings: Add Bao I/O dispatcher driver binding

joaopeixoto
2025-12-24T15:30:19Z

From: João Peixoto <joaopeixoto@osyx.tech>

This patch adds a Device Tree binding for the Bao I/O Dispatcher kernel
module, which can be loaded into backend VMs. The I/O Dispatcher
provides the bridge between the Bao hypervisor Remote I/O system and the
frontend device model in userspace, offering a unified API to support
various VirtIO backends.

The dispatcher handles hypercalls to the Bao hypervisor, IRQ/eventfd
forwarding, and provides a character device interface for frontend
devices, enabling efficient communication between the hypervisor and
userspace device models.

The binding documents the following properties:
- compatible: "bao,io-dispatcher"
- reg: Memory regions for the dispatcher (multiple VirtIO devices)
- interrupts: Interrupts used by the devices
- interrupt-parent: Parent interrupt controller

This enables kernel drivers to correctly instantiate and configure Bao
I/O Dispatcher modules based on the DT description.

Signed-off-by: João Peixoto <joaopeixoto@osyx.tech>
---
.../bindings/bao/io-dispatcher.yaml | 67 +++++++++++++++++++
1 file changed, 67 insertions(+)
create mode 100644 Documentation/devicetree/bindings/bao/io-dispatcher.yaml

diff --git a/Documentation/devicetree/bindings/bao/io-dispatcher.yaml b/Documentation/devicetree/bindings/bao/io-dispatcher.yaml
new file mode 100644
index 000000000000..7795f55d3ff9
--- /dev/null
+++ b/Documentation/devicetree/bindings/bao/io-dispatcher.yaml
@@ -0,0 +1,67 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/bao/io-dispatcher.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: Bao I/O Dispatcher Device
+
+maintainers:
+ - João Peixoto <joaopeixoto@osyx.tech>
+ - José Martins <jose@osyx.tech>
+ - David Cerdeira <davidmcerdeira@osyx.tech>
+
+description: |
+ I/O Dispatcher device for Bao hypervisor guests. Handles multiple VirtIO
+ backend devices and their interrupts.
+
+properties:
+ compatible:
+ const: "bao,io-dispatcher"
+ description: Device compatible string.
+
+ reg:
+ description: |
+ Memory regions for each VirtIO backend device.
+ maxItems: 20
+ type: array
+ items:
+ type: integer
+
+ interrupts:
+ description: |
+ Interrupt numbers for each VirtIO backend device.
+ type: array
+ items:
+ type: integer
+ minItems: 3
+ maxItems: 3
+
+ interrupt-parent:
+ description: Parent interrupt controller node
+ type: string
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - interrupt-parent
+
+additionalProperties: false
+
+examples:
+ - |
+ bao_io_dispatcher: bao-io-dispatcher {
+ compatible = "bao,io-dispatcher";
+ reg = <0x0 0x50000000 0x0 0x01000000
+ 0x0 0x51000000 0x0 0x01000000
+ 0x0 0x52000000 0x0 0x01000000
+ 0x0 0x53000000 0x0 0x01000000
+ 0x0 0x54000000 0x0 0x01000000>;
+ interrupts = <0x0 0x08 0x1
+ 0x0 0x09 0x1
+ 0x0 0x0a 0x1
+ 0x0 0x0b 0x1
+ 0x0 0x0c 0x1>;
+ interrupt-parent = <&gic>;
+ };
--
2.43.0