73 lines · c
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */2 3#ifndef _LINUX_VIRTIO_GPIO_H4#define _LINUX_VIRTIO_GPIO_H5 6#include <linux/types.h>7 8/* Virtio GPIO Feature bits */9#define VIRTIO_GPIO_F_IRQ 010 11/* Virtio GPIO request types */12#define VIRTIO_GPIO_MSG_GET_NAMES 0x000113#define VIRTIO_GPIO_MSG_GET_DIRECTION 0x000214#define VIRTIO_GPIO_MSG_SET_DIRECTION 0x000315#define VIRTIO_GPIO_MSG_GET_VALUE 0x000416#define VIRTIO_GPIO_MSG_SET_VALUE 0x000517#define VIRTIO_GPIO_MSG_IRQ_TYPE 0x000618 19/* Possible values of the status field */20#define VIRTIO_GPIO_STATUS_OK 0x021#define VIRTIO_GPIO_STATUS_ERR 0x122 23/* Direction types */24#define VIRTIO_GPIO_DIRECTION_NONE 0x0025#define VIRTIO_GPIO_DIRECTION_OUT 0x0126#define VIRTIO_GPIO_DIRECTION_IN 0x0227 28/* Virtio GPIO IRQ types */29#define VIRTIO_GPIO_IRQ_TYPE_NONE 0x0030#define VIRTIO_GPIO_IRQ_TYPE_EDGE_RISING 0x0131#define VIRTIO_GPIO_IRQ_TYPE_EDGE_FALLING 0x0232#define VIRTIO_GPIO_IRQ_TYPE_EDGE_BOTH 0x0333#define VIRTIO_GPIO_IRQ_TYPE_LEVEL_HIGH 0x0434#define VIRTIO_GPIO_IRQ_TYPE_LEVEL_LOW 0x0835 36struct virtio_gpio_config {37 __le16 ngpio;38 __u8 padding[2];39 __le32 gpio_names_size;40};41 42/* Virtio GPIO Request / Response */43struct virtio_gpio_request {44 __le16 type;45 __le16 gpio;46 __le32 value;47};48 49struct virtio_gpio_response {50 __u8 status;51 __u8 value;52};53 54struct virtio_gpio_response_get_names {55 __u8 status;56 __u8 value[];57};58 59/* Virtio GPIO IRQ Request / Response */60struct virtio_gpio_irq_request {61 __le16 gpio;62};63 64struct virtio_gpio_irq_response {65 __u8 status;66};67 68/* Possible values of the interrupt status field */69#define VIRTIO_GPIO_IRQ_STATUS_INVALID 0x070#define VIRTIO_GPIO_IRQ_STATUS_VALID 0x171 72#endif /* _LINUX_VIRTIO_GPIO_H */73