mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/
synced 2026-04-23 08:55:56 -04:00
gpio: Add virtio-gpio driver
This patch adds a new driver for Virtio based GPIO devices. This allows a guest VM running Linux to access GPIO lines provided by the host. It supports all basic operations, except interrupts for the GPIO lines. Based on the initial work posted by: "Enrico Weigelt, metux IT consult" <lkml@metux.net>. Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
This commit is contained in:
committed by
Bartosz Golaszewski
parent
d0ef631d40
commit
3a29355a22
47
include/uapi/linux/virtio_gpio.h
Normal file
47
include/uapi/linux/virtio_gpio.h
Normal file
@@ -0,0 +1,47 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
|
||||
#ifndef _LINUX_VIRTIO_GPIO_H
|
||||
#define _LINUX_VIRTIO_GPIO_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/* Virtio GPIO request types */
|
||||
#define VIRTIO_GPIO_MSG_GET_NAMES 0x0001
|
||||
#define VIRTIO_GPIO_MSG_GET_DIRECTION 0x0002
|
||||
#define VIRTIO_GPIO_MSG_SET_DIRECTION 0x0003
|
||||
#define VIRTIO_GPIO_MSG_GET_VALUE 0x0004
|
||||
#define VIRTIO_GPIO_MSG_SET_VALUE 0x0005
|
||||
|
||||
/* Possible values of the status field */
|
||||
#define VIRTIO_GPIO_STATUS_OK 0x0
|
||||
#define VIRTIO_GPIO_STATUS_ERR 0x1
|
||||
|
||||
/* Direction types */
|
||||
#define VIRTIO_GPIO_DIRECTION_NONE 0x00
|
||||
#define VIRTIO_GPIO_DIRECTION_OUT 0x01
|
||||
#define VIRTIO_GPIO_DIRECTION_IN 0x02
|
||||
|
||||
struct virtio_gpio_config {
|
||||
__u16 ngpio;
|
||||
__u8 padding[2];
|
||||
__u32 gpio_names_size;
|
||||
} __packed;
|
||||
|
||||
/* Virtio GPIO Request / Response */
|
||||
struct virtio_gpio_request {
|
||||
__u16 type;
|
||||
__u16 gpio;
|
||||
__u32 value;
|
||||
};
|
||||
|
||||
struct virtio_gpio_response {
|
||||
__u8 status;
|
||||
__u8 value;
|
||||
};
|
||||
|
||||
struct virtio_gpio_response_get_names {
|
||||
__u8 status;
|
||||
__u8 value[];
|
||||
};
|
||||
|
||||
#endif /* _LINUX_VIRTIO_GPIO_H */
|
||||
Reference in New Issue
Block a user