1 /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
2 /* Copyright (c) 2010-2012 Broadcom. All rights reserved. */
7 #include <linux/ioctl.h>
10 #define VCHIQ_IOC_MAGIC 0xc4
11 #define VCHIQ_INVALID_HANDLE (~0)
13 struct vchiq_create_service {
14 struct vchiq_service_params params;
17 unsigned int handle; /* OUT */
20 struct vchiq_queue_message {
23 const struct vchiq_element __user *elements;
26 struct vchiq_queue_bulk_transfer {
31 VCHIQ_BULK_MODE_T mode;
34 struct vchiq_completion_data {
35 VCHIQ_REASON_T reason;
36 struct vchiq_header *header;
37 void *service_userdata;
41 struct vchiq_await_completion {
43 struct vchiq_completion_data *buf;
44 unsigned int msgbufsize;
45 unsigned int msgbufcount; /* IN/OUT */
49 struct vchiq_dequeue_message {
56 struct vchiq_get_config {
57 unsigned int config_size;
58 struct vchiq_config __user *pconfig;
61 struct vchiq_set_service_option {
63 VCHIQ_SERVICE_OPTION_T option;
67 struct vchiq_dump_mem {
72 #define VCHIQ_IOC_CONNECT _IO(VCHIQ_IOC_MAGIC, 0)
73 #define VCHIQ_IOC_SHUTDOWN _IO(VCHIQ_IOC_MAGIC, 1)
74 #define VCHIQ_IOC_CREATE_SERVICE \
75 _IOWR(VCHIQ_IOC_MAGIC, 2, struct vchiq_create_service)
76 #define VCHIQ_IOC_REMOVE_SERVICE _IO(VCHIQ_IOC_MAGIC, 3)
77 #define VCHIQ_IOC_QUEUE_MESSAGE \
78 _IOW(VCHIQ_IOC_MAGIC, 4, struct vchiq_queue_message)
79 #define VCHIQ_IOC_QUEUE_BULK_TRANSMIT \
80 _IOWR(VCHIQ_IOC_MAGIC, 5, struct vchiq_queue_bulk_transfer)
81 #define VCHIQ_IOC_QUEUE_BULK_RECEIVE \
82 _IOWR(VCHIQ_IOC_MAGIC, 6, struct vchiq_queue_bulk_transfer)
83 #define VCHIQ_IOC_AWAIT_COMPLETION \
84 _IOWR(VCHIQ_IOC_MAGIC, 7, struct vchiq_await_completion)
85 #define VCHIQ_IOC_DEQUEUE_MESSAGE \
86 _IOWR(VCHIQ_IOC_MAGIC, 8, struct vchiq_dequeue_message)
87 #define VCHIQ_IOC_GET_CLIENT_ID _IO(VCHIQ_IOC_MAGIC, 9)
88 #define VCHIQ_IOC_GET_CONFIG \
89 _IOWR(VCHIQ_IOC_MAGIC, 10, struct vchiq_get_config)
90 #define VCHIQ_IOC_CLOSE_SERVICE _IO(VCHIQ_IOC_MAGIC, 11)
91 #define VCHIQ_IOC_USE_SERVICE _IO(VCHIQ_IOC_MAGIC, 12)
92 #define VCHIQ_IOC_RELEASE_SERVICE _IO(VCHIQ_IOC_MAGIC, 13)
93 #define VCHIQ_IOC_SET_SERVICE_OPTION \
94 _IOW(VCHIQ_IOC_MAGIC, 14, struct vchiq_set_service_option)
95 #define VCHIQ_IOC_DUMP_PHYS_MEM \
96 _IOW(VCHIQ_IOC_MAGIC, 15, struct vchiq_dump_mem)
97 #define VCHIQ_IOC_LIB_VERSION _IO(VCHIQ_IOC_MAGIC, 16)
98 #define VCHIQ_IOC_CLOSE_DELIVERED _IO(VCHIQ_IOC_MAGIC, 17)
99 #define VCHIQ_IOC_MAX 17