[PATCH 1/5] dt-bindings: virtio: mmio: Add support for device subnode

From: Viresh Kumar
Date: Tue Jul 13 2021 - 06:50:53 EST


Allow virtio,mmio nodes to contain device specific subnodes. Since each
virtio,mmio node can represent a single virtio device, each virtio node
is allowed to contain a maximum of one device specific subnode.

The device subnode must have the "reg" property, and its value must
match the virtio device ID used by the virtio mmio node.

A phandle to this device subnode can then be used by the users of the
virtio device.

Also add a symbolic link to uapi/linux/virtio_ids.h in order to use the
definitions here.

Signed-off-by: Viresh Kumar <viresh.kumar@xxxxxxxxxx>
---
.../devicetree/bindings/virtio/mmio.yaml | 41 +++++++++++++++++++
include/dt-bindings/virtio/virtio_ids.h | 1 +
2 files changed, 42 insertions(+)
create mode 120000 include/dt-bindings/virtio/virtio_ids.h

diff --git a/Documentation/devicetree/bindings/virtio/mmio.yaml b/Documentation/devicetree/bindings/virtio/mmio.yaml
index d46597028cf1..e5f9fe6ecb5e 100644
--- a/Documentation/devicetree/bindings/virtio/mmio.yaml
+++ b/Documentation/devicetree/bindings/virtio/mmio.yaml
@@ -31,6 +31,31 @@ title: virtio memory mapped devices
description: Required for devices making accesses thru an IOMMU.
maxItems: 1

+ "#address-cells":
+ const: 1
+ description:
+ The cell is the device ID if a device subnode is used.
+
+ "#size-cells":
+ const: 0
+
+patternProperties:
+ '^[a-z0-9]+-virtio@[0-9]+$':
+ type: object
+ description: |
+ Exactly one node describing the virtio device. The name of the node isn't
+ significant but its phandle can be used to by an user of the virtio
+ device.
+
+ properties:
+ reg:
+ description:
+ Must contain the Virtio ID of the device.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ required:
+ - reg
+
required:
- compatible
- reg
@@ -57,4 +82,20 @@ additionalProperties: false
#iommu-cells = <1>;
};

+ - |
+ #include <dt-bindings/virtio/virtio_ids.h>
+
+ virtio@3200 {
+ compatible = "virtio,mmio";
+ reg = <0x3200 0x100>;
+ interrupts = <43>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ i2c-virtio@0 {
+ reg = <VIRTIO_ID_I2C_ADAPTER>;
+ };
+ };
+
...
diff --git a/include/dt-bindings/virtio/virtio_ids.h b/include/dt-bindings/virtio/virtio_ids.h
new file mode 120000
index 000000000000..6e59ba332216
--- /dev/null
+++ b/include/dt-bindings/virtio/virtio_ids.h
@@ -0,0 +1 @@
+../../uapi/linux/virtio_ids.h
\ No newline at end of file
--
2.31.1.272.g89b43f80a514