1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34#ifndef VCHIQ_IOCTLS_H
35#define VCHIQ_IOCTLS_H
36
37#include <linux/ioctl.h>
38#include "vchiq_if.h"
39
40#define VCHIQ_IOC_MAGIC 0xc4
41#define VCHIQ_INVALID_HANDLE (~0)
42
43typedef struct {
44 VCHIQ_SERVICE_PARAMS_T params;
45 int is_open;
46 int is_vchi;
47 unsigned int handle;
48} VCHIQ_CREATE_SERVICE_T;
49
50typedef struct {
51 unsigned int handle;
52 unsigned int count;
53 const struct vchiq_element *elements;
54} VCHIQ_QUEUE_MESSAGE_T;
55
56typedef struct {
57 unsigned int handle;
58 void *data;
59 unsigned int size;
60 void *userdata;
61 VCHIQ_BULK_MODE_T mode;
62} VCHIQ_QUEUE_BULK_TRANSFER_T;
63
64typedef struct {
65 VCHIQ_REASON_T reason;
66 VCHIQ_HEADER_T *header;
67 void *service_userdata;
68 void *bulk_userdata;
69} VCHIQ_COMPLETION_DATA_T;
70
71typedef struct {
72 unsigned int count;
73 VCHIQ_COMPLETION_DATA_T *buf;
74 unsigned int msgbufsize;
75 unsigned int msgbufcount;
76 void **msgbufs;
77} VCHIQ_AWAIT_COMPLETION_T;
78
79typedef struct {
80 unsigned int handle;
81 int blocking;
82 unsigned int bufsize;
83 void *buf;
84} VCHIQ_DEQUEUE_MESSAGE_T;
85
86typedef struct {
87 unsigned int config_size;
88 VCHIQ_CONFIG_T *pconfig;
89} VCHIQ_GET_CONFIG_T;
90
91typedef struct {
92 unsigned int handle;
93 VCHIQ_SERVICE_OPTION_T option;
94 int value;
95} VCHIQ_SET_SERVICE_OPTION_T;
96
97typedef struct {
98 void *virt_addr;
99 size_t num_bytes;
100} VCHIQ_DUMP_MEM_T;
101
102#define VCHIQ_IOC_CONNECT _IO(VCHIQ_IOC_MAGIC, 0)
103#define VCHIQ_IOC_SHUTDOWN _IO(VCHIQ_IOC_MAGIC, 1)
104#define VCHIQ_IOC_CREATE_SERVICE \
105 _IOWR(VCHIQ_IOC_MAGIC, 2, VCHIQ_CREATE_SERVICE_T)
106#define VCHIQ_IOC_REMOVE_SERVICE _IO(VCHIQ_IOC_MAGIC, 3)
107#define VCHIQ_IOC_QUEUE_MESSAGE \
108 _IOW(VCHIQ_IOC_MAGIC, 4, VCHIQ_QUEUE_MESSAGE_T)
109#define VCHIQ_IOC_QUEUE_BULK_TRANSMIT \
110 _IOWR(VCHIQ_IOC_MAGIC, 5, VCHIQ_QUEUE_BULK_TRANSFER_T)
111#define VCHIQ_IOC_QUEUE_BULK_RECEIVE \
112 _IOWR(VCHIQ_IOC_MAGIC, 6, VCHIQ_QUEUE_BULK_TRANSFER_T)
113#define VCHIQ_IOC_AWAIT_COMPLETION \
114 _IOWR(VCHIQ_IOC_MAGIC, 7, VCHIQ_AWAIT_COMPLETION_T)
115#define VCHIQ_IOC_DEQUEUE_MESSAGE \
116 _IOWR(VCHIQ_IOC_MAGIC, 8, VCHIQ_DEQUEUE_MESSAGE_T)
117#define VCHIQ_IOC_GET_CLIENT_ID _IO(VCHIQ_IOC_MAGIC, 9)
118#define VCHIQ_IOC_GET_CONFIG \
119 _IOWR(VCHIQ_IOC_MAGIC, 10, VCHIQ_GET_CONFIG_T)
120#define VCHIQ_IOC_CLOSE_SERVICE _IO(VCHIQ_IOC_MAGIC, 11)
121#define VCHIQ_IOC_USE_SERVICE _IO(VCHIQ_IOC_MAGIC, 12)
122#define VCHIQ_IOC_RELEASE_SERVICE _IO(VCHIQ_IOC_MAGIC, 13)
123#define VCHIQ_IOC_SET_SERVICE_OPTION \
124 _IOW(VCHIQ_IOC_MAGIC, 14, VCHIQ_SET_SERVICE_OPTION_T)
125#define VCHIQ_IOC_DUMP_PHYS_MEM \
126 _IOW(VCHIQ_IOC_MAGIC, 15, VCHIQ_DUMP_MEM_T)
127#define VCHIQ_IOC_LIB_VERSION _IO(VCHIQ_IOC_MAGIC, 16)
128#define VCHIQ_IOC_CLOSE_DELIVERED _IO(VCHIQ_IOC_MAGIC, 17)
129#define VCHIQ_IOC_MAX 17
130
131#endif
132