[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <cover.1628590591.git.viresh.kumar@linaro.org>
Date: Tue, 10 Aug 2021 15:55:14 +0530
From: Viresh Kumar <viresh.kumar@...aro.org>
To: Arnd Bergmann <arnd@...nel.org>,
Linus Walleij <linus.walleij@...aro.org>,
Bartosz Golaszewski <bgolaszewski@...libre.com>,
"Enrico Weigelt, metux IT consult" <info@...ux.net>,
Jason Wang <jasowang@...hat.com>,
"Michael S. Tsirkin" <mst@...hat.com>,
Viresh Kumar <vireshk@...nel.org>
Cc: Viresh Kumar <viresh.kumar@...aro.org>,
Vincent Guittot <vincent.guittot@...aro.org>,
Jean-Philippe Brucker <jean-philippe@...aro.org>,
Bill Mills <bill.mills@...aro.org>,
Alex Bennée <alex.bennee@...aro.org>,
Cornelia Huck <cohuck@...hat.com>,
Geert Uytterhoeven <geert@...ux-m68k.org>,
stratos-dev@...lists.linaro.org, linux-kernel@...r.kernel.org,
Thomas Gleixner <tglx@...utronix.de>,
Marc Zyngier <maz@...nel.org>, linux-gpio@...r.kernel.org,
virtualization@...ts.linux-foundation.org
Subject: [PATCH V5 0/2] gpio: Add virtio based driver
Hello,
This adds Virtio GPIO driver based on the proposed specification [1].
The specification for basic GPIO operations is already reviewed by Linus and
Arnd, while the IRQ stuff is still under discussion and not finalized.
I am sharing the code, so everyone gets more clarity on how it will work
eventually in Linux.
I have tested this patchset with Qemu guest with help of the libgpiod utility.
I have also tested basic handling of interrupts on the guest side. It works as
expected.
The host side virtio-backend isn't ready yet and my tests only tested the flow
control between guest and host, but didn't play with real GPIO pins. That will
be done once I have a working backend in place (WIP).
V4->V5:
- Use ____cacheline_aligned for buffers.
- Proper locking in place, which avoids the use of work-item for processing
interrupts.
- Separate callbacks for enable/disable of irqs.
- The irq is disabled at the host only for enable/disable now, instead of
mask/unmask.
- mask/unmask only control the queuing of buffers now.
- Use handle_level_irq() instead of handle_fasteoi_irq().
- Other minor changes.
V3->V4:
- Lots of changes, as the specification changed too much. Better forget
everything we have done until now :)
--
Viresh
[1] https://lists.oasis-open.org/archives/virtio-dev/202107/msg00232.html
Viresh Kumar (2):
gpio: Add virtio-gpio driver
gpio: virtio: Add IRQ support
MAINTAINERS | 7 +
drivers/gpio/Kconfig | 10 +
drivers/gpio/Makefile | 1 +
drivers/gpio/gpio-virtio.c | 668 +++++++++++++++++++++++++++++++
include/uapi/linux/virtio_gpio.h | 72 ++++
5 files changed, 758 insertions(+)
create mode 100644 drivers/gpio/gpio-virtio.c
create mode 100644 include/uapi/linux/virtio_gpio.h
--
2.31.1.272.g89b43f80a514
Powered by blists - more mailing lists