FILE
vchiq_ioctl.h
File preview with syntax highlighting.
linux-6.19.14/drivers/platform/raspberrypi/vchiq-interface/vchiq_ioctl.h
1/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ 2/* Copyright (c) 2010-2012 Broadcom. All rights reserved. */ 3 4#ifndef VCHIQ_IOCTLS_H 5#define VCHIQ_IOCTLS_H 6 7#include <linux/ioctl.h> 8#include <linux/raspberrypi/vchiq.h> 9 10#define VCHIQ_IOC_MAGIC 0xc4 11#define VCHIQ_INVALID_HANDLE (~0) 12 13struct vchiq_service_params { 14 int fourcc; 15 int __user (*callback)(enum vchiq_reason reason, 16 struct vchiq_header *header, 17 unsigned int handle, 18 void *bulk_userdata); 19 void __user *userdata; 20 short version; /* Increment for non-trivial changes */ 21 short version_min; /* Update for incompatible changes */ 22}; 23 24struct vchiq_create_service { 25 struct vchiq_service_params params; 26 int is_open; 27 int is_vchi; 28 unsigned int handle; /* OUT */ 29}; 30 31struct vchiq_queue_message { 32 unsigned int handle; 33 unsigned int count; 34 const struct vchiq_element __user *elements; 35}; 36 37struct vchiq_queue_bulk_transfer { 38 unsigned int handle; 39 void __user *data; 40 unsigned int size; 41 void __user *userdata; 42 enum vchiq_bulk_mode mode; 43}; 44 45struct vchiq_completion_data { 46 enum vchiq_reason reason; 47 struct vchiq_header __user *header; 48 void __user *service_userdata; 49 void __user *cb_userdata; 50}; 51 52struct vchiq_await_completion { 53 unsigned int count; 54 struct vchiq_completion_data __user *buf; 55 unsigned int msgbufsize; 56 unsigned int msgbufcount; /* IN/OUT */ 57 void * __user *msgbufs; 58}; 59 60struct vchiq_dequeue_message { 61 unsigned int handle; 62 int blocking; 63 unsigned int bufsize; 64 void __user *buf; 65}; 66 67struct vchiq_get_config { 68 unsigned int config_size; 69 struct vchiq_config __user *pconfig; 70}; 71 72struct vchiq_set_service_option { 73 unsigned int handle; 74 enum vchiq_service_option option; 75 int value; 76}; 77 78struct vchiq_dump_mem { 79 void __user *virt_addr; 80 size_t num_bytes; 81}; 82 83#define VCHIQ_IOC_CONNECT _IO(VCHIQ_IOC_MAGIC, 0) 84#define VCHIQ_IOC_SHUTDOWN _IO(VCHIQ_IOC_MAGIC, 1) 85#define VCHIQ_IOC_CREATE_SERVICE \ 86 _IOWR(VCHIQ_IOC_MAGIC, 2, struct vchiq_create_service) 87#define VCHIQ_IOC_REMOVE_SERVICE _IO(VCHIQ_IOC_MAGIC, 3) 88#define VCHIQ_IOC_QUEUE_MESSAGE \ 89 _IOW(VCHIQ_IOC_MAGIC, 4, struct vchiq_queue_message) 90#define VCHIQ_IOC_QUEUE_BULK_TRANSMIT \ 91 _IOWR(VCHIQ_IOC_MAGIC, 5, struct vchiq_queue_bulk_transfer) 92#define VCHIQ_IOC_QUEUE_BULK_RECEIVE \ 93 _IOWR(VCHIQ_IOC_MAGIC, 6, struct vchiq_queue_bulk_transfer) 94#define VCHIQ_IOC_AWAIT_COMPLETION \ 95 _IOWR(VCHIQ_IOC_MAGIC, 7, struct vchiq_await_completion) 96#define VCHIQ_IOC_DEQUEUE_MESSAGE \ 97 _IOWR(VCHIQ_IOC_MAGIC, 8, struct vchiq_dequeue_message) 98#define VCHIQ_IOC_GET_CLIENT_ID _IO(VCHIQ_IOC_MAGIC, 9) 99#define VCHIQ_IOC_GET_CONFIG \ 100 _IOWR(VCHIQ_IOC_MAGIC, 10, struct vchiq_get_config) 101#define VCHIQ_IOC_CLOSE_SERVICE _IO(VCHIQ_IOC_MAGIC, 11) 102#define VCHIQ_IOC_USE_SERVICE _IO(VCHIQ_IOC_MAGIC, 12) 103#define VCHIQ_IOC_RELEASE_SERVICE _IO(VCHIQ_IOC_MAGIC, 13) 104#define VCHIQ_IOC_SET_SERVICE_OPTION \ 105 _IOW(VCHIQ_IOC_MAGIC, 14, struct vchiq_set_service_option) 106#define VCHIQ_IOC_DUMP_PHYS_MEM \ 107 _IOW(VCHIQ_IOC_MAGIC, 15, struct vchiq_dump_mem) 108#define VCHIQ_IOC_LIB_VERSION _IO(VCHIQ_IOC_MAGIC, 16) 109#define VCHIQ_IOC_CLOSE_DELIVERED _IO(VCHIQ_IOC_MAGIC, 17) 110#define VCHIQ_IOC_MAX 17 111 112#endif
~/
Read-only file preview.