[PATCH 1/6] dt-bindings: Add Bao IPC shared memory driver binding

joaopeixoto
2026-01-07T16:29:34Z

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

This patch introduces a device tree binding for the Bao IPC Shared Memory
device, which enables communication between Bao hypervisor guests through
dedicated shared-memory regions.

Signed-off-by: João Peixoto <joaopeixoto@osyx.tech>
---
.../devicetree/bindings/bao/bao,ipcshmem.yaml | 82 +++++++++++++++++++
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
2 files changed, 84 insertions(+)
create mode 100644 Documentation/devicetree/bindings/bao/bao,ipcshmem.yaml

diff --git a/Documentation/devicetree/bindings/bao/bao,ipcshmem.yaml b/Documentation/devicetree/bindings/bao/bao,ipcshmem.yaml
new file mode 100644
index 000000000000..fa91800db99a
--- /dev/null
+++ b/Documentation/devicetree/bindings/bao/bao,ipcshmem.yaml
@@ -0,0 +1,82 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/bao/bao,ipcshmem.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Bao IPC Shared Memory Device
+
+maintainers:
+ - José Martins <jose@osyx.tech>
+ - David Cerdeira <davidmcerdeira@osyx.tech>
+ - João Peixoto <joaopeixoto@osyx.tech>
+
+description: |
+ Shared memory based communication device for Bao hypervisor guests.
+
+ The device describes a set of shared-memory regions used for
+ communication between Bao guests. Each guest instantiating this
+ device uses one region for reading data produced by a peer guest
+ and another region for writing data consumed by that peer.
+
+properties:
+ compatible:
+ const: bao,ipcshmem
+
+ reg:
+ description:
+ Shared memory region used for IPC.
+ minItems: 2
+ maxItems: 2
+
+ read-channel:
+ description: |
+ Shared-memory sub-region that this guest reads from.
+
+ This region is written by the peer Bao guest and read by the
+ guest instantiating this device.
+
+ Consists of two cells:
+ - offset into the shared-memory region defined by `reg`
+ - size in bytes
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ minItems: 2
+ maxItems: 2
+
+ write-channel:
+ description: |
+ Shared-memory sub-region that this guest writes to.
+
+ This region is written by the guest instantiating this device and
+ read by the peer Bao guest.
+
+ Consists of two cells:
+ - offset into the shared-memory region defined by `reg`
+ - size in bytes
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ minItems: 2
+ maxItems: 2
+
+ id:
+ description:
+ Driver instance ID.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+required:
+ - compatible
+ - reg
+ - read-channel
+ - write-channel
+ - id
+
+additionalProperties: false
+
+examples:
+ - |
+ bao-ipc@f0000000 {
+ compatible = "bao,ipcshmem";
+ reg = <0x0 0xf0000000 0x0 0x00010000>;
+ read-channel = <0x0 0x2000>;
+ write-channel = <0x2000 0x2000>;
+ id = <0>;
+ };
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
index c7591b2aec2a..c047fbd6b91a 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -223,6 +223,8 @@ patternProperties:
description: Shenzhen AZW Technology Co., Ltd.
"^baikal,.*":
description: BAIKAL ELECTRONICS, JSC
+ "^bao,.*":
+ description: Bao Hypervisor
"^bananapi,.*":
description: BIPAI KEJI LIMITED
"^beacon,.*":
--
2.43.0