[PATCH V3 0/5] virtio: Add virtio-device bindings

From: Viresh Kumar
Date: Mon Jul 26 2021 - 00:51:59 EST


Hi,

Currently the DT only provides support for following node types for virtio-mmio
nodes:

virtio_mmio@a000000 {
dma-coherent;
interrupts = <0x00 0x10 0x01>;
reg = <0x00 0xa000000 0x00 0x200>;
compatible = "virtio,mmio";
};

Here, each virtio-mmio corresponds to a virtio-device. But there is no way for
other users in the DT to show their dependency on virtio devices.

This patchset provides that support.

The first patch adds virtio-device bindings to allow for device sub-nodes to be
present and the second patch updates the virtio core to update the of_node.

Other patches add bindings for i2c and gpio devices.

Tested on x86 with qemu for arm64.

Pending:
- Arnd suggested that "virtio,deviceXX" may be a better compatible string, while
I used "virtio,XX" to match what PCI and USB do currently. I didn't change it
yet to hear Rob's view on the same before making the change, in case he has
any preferences.

V2/2.1->V3:
- Added review-tags from Arnd and Wolfram.
- Only the 5th patch changed otherwise:
- Use of_device_is_compatible() instead of keeping a list of devices.
- Use snprintf (with BUG_ON on return value) to create the compatible string,
whose length is fixed using "virtio,XXXXXXXX".
- Use dev_of_node().

V1->V2:
- The changes (both binding and code) are made at virtio level, instead of
virtio-mmio. This allows the same to be used by all device types, irrespective
of the transport mechanism.

- Dropped the reg property and used compatible in the form "virtio,<DID>".

- Dropped dt-bindings/virtio/virtio_ids.h.

- Add a patch to sync virtio-ids from spec, required for the last patch.

--
Viresh

Viresh Kumar (5):
dt-bindings: virtio: Add binding for virtio devices
dt-bindings: i2c: Add bindings for i2c-virtio
dt-bindings: gpio: Add bindings for gpio-virtio
uapi: virtio_ids: Sync ids with specification
virtio: Bind virtio device to device-tree node

.../devicetree/bindings/gpio/gpio-virtio.yaml | 60 +++++++++++++++++++
.../devicetree/bindings/i2c/i2c-virtio.yaml | 51 ++++++++++++++++
.../devicetree/bindings/virtio/mmio.yaml | 2 +-
.../bindings/virtio/virtio-device.yaml | 47 +++++++++++++++
drivers/virtio/virtio.c | 57 +++++++++++++++++-
include/uapi/linux/virtio_ids.h | 12 ++++
6 files changed, 225 insertions(+), 4 deletions(-)
create mode 100644 Documentation/devicetree/bindings/gpio/gpio-virtio.yaml
create mode 100644 Documentation/devicetree/bindings/i2c/i2c-virtio.yaml
create mode 100644 Documentation/devicetree/bindings/virtio/virtio-device.yaml

--
2.31.1.272.g89b43f80a514