Re: [PATCH 1/5] dt-bindings: virtio: mmio: Add support for device subnode
From: Rob Herring
Date: Tue Jul 13 2021 - 10:43:26 EST
On Tue, Jul 13, 2021 at 4:50 AM Viresh Kumar <viresh.kumar@xxxxxxxxxx> wrote:
>
> 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.
Doesn't sound like we need 2 nodes here. Just add I2C devices as child
nodes. You could add a more specific compatible string, but the
protocol is discoverable, so that shouldn't be necessary.
BTW, what's the usecase for these protocols? A standard interface to
firmware controlled I2C, GPIO, etc.?
> 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
This will break the devicetree-rebasing tree I think. DT files
shouldn't reference kernel files.
Rob