Message ID | acf7402ef4aabc0ad6295c32846f2bef1cd9b56a.1627362340.git.viresh.kumar@linaro.org |
---|---|
State | New |
Headers | show |
Series | virtio: Add virtio-device bindings | expand |
On Tue, Jul 27, 2021 at 10:53:50AM +0530, Viresh Kumar wrote: > This patch adds binding for virtio GPIO controller, it is based on > virtio-device bindings. > > Reviewed-by: Arnd Bergmann <arnd@arndb.de> > Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> > --- > .../devicetree/bindings/gpio/gpio-virtio.yaml | 59 +++++++++++++++++++ > 1 file changed, 59 insertions(+) > create mode 100644 Documentation/devicetree/bindings/gpio/gpio-virtio.yaml > > diff --git a/Documentation/devicetree/bindings/gpio/gpio-virtio.yaml b/Documentation/devicetree/bindings/gpio/gpio-virtio.yaml > new file mode 100644 > index 000000000000..601d85754577 > --- /dev/null > +++ b/Documentation/devicetree/bindings/gpio/gpio-virtio.yaml > @@ -0,0 +1,59 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/gpio/gpio-virtio.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Virtio GPIO controller > + > +maintainers: > + - Viresh Kumar <viresh.kumar@linaro.org> > + > +allOf: > + - $ref: /schemas/virtio/virtio-device.yaml# > + > +description: > + Virtio GPIO controller, see /schemas/virtio/virtio-device.yaml for more > + details. > + > +properties: > + $nodename: > + const: gpio > + > + compatible: > + const: virtio,device29 > + > + gpio-controller: true > + > + "#gpio-cells": > + const: 2 > + > + interrupt-controller: true > + > + "#interrupt-cells": > + const: 2 Humm, how does one implement interrupts without a parent interrupt? It uses the parent virtio,mmio interrupt? > + > +required: > + - compatible > + - gpio-controller > + - "#gpio-cells" > + > +unevaluatedProperties: false > + > +examples: > + - | > + virtio@3000 { > + compatible = "virtio,mmio"; > + reg = <0x3000 0x100>; > + interrupts = <41>; > + > + gpio { > + compatible = "virtio,device29"; > + gpio-controller; > + #gpio-cells = <2>; > + interrupt-controller; > + #interrupt-cells = <2>; > + }; > + }; > + > +... > -- > 2.31.1.272.g89b43f80a514 > >
On 02-08-21, 13:40, Rob Herring wrote: > Humm, how does one implement interrupts without a parent interrupt? It > uses the parent virtio,mmio interrupt? Kind of, yeah, but not necessarily. The interrupt information is passed over buffers shared between host and guest. Now the guest may process the buffers when it receives a notification from the host, that will be at downpath of an interrupt for virtio,mmio. Or the guest may poll on the virtqueue and process any buffers as soon as they are made available, no interrupts then. -- viresh
n Mon, Aug 2, 2021 at 10:30 PM Viresh Kumar <viresh.kumar@linaro.org> wrote: > > On 02-08-21, 13:40, Rob Herring wrote: > > Humm, how does one implement interrupts without a parent interrupt? It > > uses the parent virtio,mmio interrupt? > > Kind of, yeah, but not necessarily. > > The interrupt information is passed over buffers shared between host and guest. > Now the guest may process the buffers when it receives a notification from the > host, that will be at downpath of an interrupt for virtio,mmio. Or the guest may > poll on the virtqueue and process any buffers as soon as they are made > available, no interrupts then. Okay, thanks for the explanation. Reviewed-by: Rob Herring <robh@kernel.org> Rob
diff --git a/Documentation/devicetree/bindings/gpio/gpio-virtio.yaml b/Documentation/devicetree/bindings/gpio/gpio-virtio.yaml new file mode 100644 index 000000000000..601d85754577 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-virtio.yaml @@ -0,0 +1,59 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/gpio/gpio-virtio.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Virtio GPIO controller + +maintainers: + - Viresh Kumar <viresh.kumar@linaro.org> + +allOf: + - $ref: /schemas/virtio/virtio-device.yaml# + +description: + Virtio GPIO controller, see /schemas/virtio/virtio-device.yaml for more + details. + +properties: + $nodename: + const: gpio + + compatible: + const: virtio,device29 + + gpio-controller: true + + "#gpio-cells": + const: 2 + + interrupt-controller: true + + "#interrupt-cells": + const: 2 + +required: + - compatible + - gpio-controller + - "#gpio-cells" + +unevaluatedProperties: false + +examples: + - | + virtio@3000 { + compatible = "virtio,mmio"; + reg = <0x3000 0x100>; + interrupts = <41>; + + gpio { + compatible = "virtio,device29"; + gpio-controller; + #gpio-cells = <2>; + interrupt-controller; + #interrupt-cells = <2>; + }; + }; + +...