1 /*
2  * This file is auto-generated. Modifications will be lost.
3  *
4  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5  * for more information.
6  */
7 #ifndef _LINUX_VIRTIO_GPIO_H
8 #define _LINUX_VIRTIO_GPIO_H
9 #include <linux/types.h>
10 #define VIRTIO_GPIO_F_IRQ 0
11 #define VIRTIO_GPIO_MSG_GET_NAMES 0x0001
12 #define VIRTIO_GPIO_MSG_GET_DIRECTION 0x0002
13 #define VIRTIO_GPIO_MSG_SET_DIRECTION 0x0003
14 #define VIRTIO_GPIO_MSG_GET_VALUE 0x0004
15 #define VIRTIO_GPIO_MSG_SET_VALUE 0x0005
16 #define VIRTIO_GPIO_MSG_IRQ_TYPE 0x0006
17 #define VIRTIO_GPIO_STATUS_OK 0x0
18 #define VIRTIO_GPIO_STATUS_ERR 0x1
19 #define VIRTIO_GPIO_DIRECTION_NONE 0x00
20 #define VIRTIO_GPIO_DIRECTION_OUT 0x01
21 #define VIRTIO_GPIO_DIRECTION_IN 0x02
22 #define VIRTIO_GPIO_IRQ_TYPE_NONE 0x00
23 #define VIRTIO_GPIO_IRQ_TYPE_EDGE_RISING 0x01
24 #define VIRTIO_GPIO_IRQ_TYPE_EDGE_FALLING 0x02
25 #define VIRTIO_GPIO_IRQ_TYPE_EDGE_BOTH 0x03
26 #define VIRTIO_GPIO_IRQ_TYPE_LEVEL_HIGH 0x04
27 #define VIRTIO_GPIO_IRQ_TYPE_LEVEL_LOW 0x08
28 struct virtio_gpio_config {
29   __le16 ngpio;
30   __u8 padding[2];
31   __le32 gpio_names_size;
32 };
33 struct virtio_gpio_request {
34   __le16 type;
35   __le16 gpio;
36   __le32 value;
37 };
38 struct virtio_gpio_response {
39   __u8 status;
40   __u8 value;
41 };
42 struct virtio_gpio_response_get_names {
43   __u8 status;
44   __u8 value[];
45 };
46 struct virtio_gpio_irq_request {
47   __le16 gpio;
48 };
49 struct virtio_gpio_irq_response {
50   __u8 status;
51 };
52 #define VIRTIO_GPIO_IRQ_STATUS_INVALID 0x0
53 #define VIRTIO_GPIO_IRQ_STATUS_VALID 0x1
54 #endif
55