1 1.1 jmcneill /** 2 1.1 jmcneill * Copyright (c) 2010-2012 Broadcom. All rights reserved. 3 1.1 jmcneill * 4 1.1 jmcneill * Redistribution and use in source and binary forms, with or without 5 1.1 jmcneill * modification, are permitted provided that the following conditions 6 1.1 jmcneill * are met: 7 1.1 jmcneill * 1. Redistributions of source code must retain the above copyright 8 1.1 jmcneill * notice, this list of conditions, and the following disclaimer, 9 1.1 jmcneill * without modification. 10 1.1 jmcneill * 2. Redistributions in binary form must reproduce the above copyright 11 1.1 jmcneill * notice, this list of conditions and the following disclaimer in the 12 1.1 jmcneill * documentation and/or other materials provided with the distribution. 13 1.1 jmcneill * 3. The names of the above-listed copyright holders may not be used 14 1.1 jmcneill * to endorse or promote products derived from this software without 15 1.1 jmcneill * specific prior written permission. 16 1.1 jmcneill * 17 1.1 jmcneill * ALTERNATIVELY, this software may be distributed under the terms of the 18 1.1 jmcneill * GNU General Public License ("GPL") version 2, as published by the Free 19 1.1 jmcneill * Software Foundation. 20 1.1 jmcneill * 21 1.1 jmcneill * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 22 1.1 jmcneill * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 23 1.1 jmcneill * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 24 1.1 jmcneill * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 25 1.1 jmcneill * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 26 1.1 jmcneill * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 27 1.1 jmcneill * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 28 1.1 jmcneill * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 29 1.1 jmcneill * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 30 1.1 jmcneill * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 31 1.1 jmcneill * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 1.1 jmcneill */ 33 1.1 jmcneill 34 1.1 jmcneill #ifndef VCHIQ_IOCTLS_H 35 1.1 jmcneill #define VCHIQ_IOCTLS_H 36 1.1 jmcneill 37 1.1 jmcneill #include "vchiq_if.h" 38 1.1 jmcneill 39 1.1 jmcneill #define VCHIQ_IOC_MAGIC 0xc4 40 1.2 skrll #define VCHIQ_INVALID_HANDLE (~0) 41 1.1 jmcneill 42 1.1 jmcneill typedef struct { 43 1.1 jmcneill VCHIQ_SERVICE_PARAMS_T params; 44 1.1 jmcneill int is_open; 45 1.1 jmcneill int is_vchi; 46 1.2 skrll unsigned int handle; /* OUT */ 47 1.1 jmcneill } VCHIQ_CREATE_SERVICE_T; 48 1.1 jmcneill 49 1.1 jmcneill typedef struct { 50 1.2 skrll unsigned int handle; 51 1.2 skrll unsigned int count; 52 1.1 jmcneill const VCHIQ_ELEMENT_T *elements; 53 1.1 jmcneill } VCHIQ_QUEUE_MESSAGE_T; 54 1.1 jmcneill 55 1.1 jmcneill typedef struct { 56 1.2 skrll unsigned int handle; 57 1.1 jmcneill void *data; 58 1.2 skrll unsigned int size; 59 1.1 jmcneill void *userdata; 60 1.1 jmcneill VCHIQ_BULK_MODE_T mode; 61 1.1 jmcneill } VCHIQ_QUEUE_BULK_TRANSFER_T; 62 1.1 jmcneill 63 1.1 jmcneill typedef struct { 64 1.1 jmcneill VCHIQ_REASON_T reason; 65 1.1 jmcneill VCHIQ_HEADER_T *header; 66 1.1 jmcneill void *service_userdata; 67 1.1 jmcneill void *bulk_userdata; 68 1.1 jmcneill } VCHIQ_COMPLETION_DATA_T; 69 1.1 jmcneill 70 1.1 jmcneill typedef struct { 71 1.2 skrll unsigned int count; 72 1.1 jmcneill VCHIQ_COMPLETION_DATA_T *buf; 73 1.2 skrll unsigned int msgbufsize; 74 1.2 skrll unsigned int msgbufcount; /* IN/OUT */ 75 1.1 jmcneill void **msgbufs; 76 1.1 jmcneill } VCHIQ_AWAIT_COMPLETION_T; 77 1.1 jmcneill 78 1.1 jmcneill typedef struct { 79 1.2 skrll unsigned int handle; 80 1.1 jmcneill int blocking; 81 1.2 skrll unsigned int bufsize; 82 1.1 jmcneill void *buf; 83 1.1 jmcneill } VCHIQ_DEQUEUE_MESSAGE_T; 84 1.1 jmcneill 85 1.1 jmcneill typedef struct { 86 1.2 skrll unsigned int config_size; 87 1.1 jmcneill VCHIQ_CONFIG_T *pconfig; 88 1.1 jmcneill } VCHIQ_GET_CONFIG_T; 89 1.1 jmcneill 90 1.1 jmcneill typedef struct { 91 1.2 skrll unsigned int handle; 92 1.1 jmcneill VCHIQ_SERVICE_OPTION_T option; 93 1.1 jmcneill int value; 94 1.1 jmcneill } VCHIQ_SET_SERVICE_OPTION_T; 95 1.1 jmcneill 96 1.1 jmcneill typedef struct { 97 1.1 jmcneill void *virt_addr; 98 1.1 jmcneill size_t num_bytes; 99 1.1 jmcneill } VCHIQ_DUMP_MEM_T; 100 1.1 jmcneill 101 1.1 jmcneill #define VCHIQ_IOC_CONNECT _IO(VCHIQ_IOC_MAGIC, 0) 102 1.1 jmcneill #define VCHIQ_IOC_SHUTDOWN _IO(VCHIQ_IOC_MAGIC, 1) 103 1.1 jmcneill #define VCHIQ_IOC_CREATE_SERVICE \ 104 1.1 jmcneill _IOWR(VCHIQ_IOC_MAGIC, 2, VCHIQ_CREATE_SERVICE_T) 105 1.1 jmcneill #define VCHIQ_IOC_REMOVE_SERVICE _IO(VCHIQ_IOC_MAGIC, 3) 106 1.1 jmcneill #define VCHIQ_IOC_QUEUE_MESSAGE \ 107 1.1 jmcneill _IOW(VCHIQ_IOC_MAGIC, 4, VCHIQ_QUEUE_MESSAGE_T) 108 1.1 jmcneill #define VCHIQ_IOC_QUEUE_BULK_TRANSMIT \ 109 1.1 jmcneill _IOWR(VCHIQ_IOC_MAGIC, 5, VCHIQ_QUEUE_BULK_TRANSFER_T) 110 1.1 jmcneill #define VCHIQ_IOC_QUEUE_BULK_RECEIVE \ 111 1.1 jmcneill _IOWR(VCHIQ_IOC_MAGIC, 6, VCHIQ_QUEUE_BULK_TRANSFER_T) 112 1.1 jmcneill #define VCHIQ_IOC_AWAIT_COMPLETION \ 113 1.1 jmcneill _IOWR(VCHIQ_IOC_MAGIC, 7, VCHIQ_AWAIT_COMPLETION_T) 114 1.1 jmcneill #define VCHIQ_IOC_DEQUEUE_MESSAGE \ 115 1.1 jmcneill _IOWR(VCHIQ_IOC_MAGIC, 8, VCHIQ_DEQUEUE_MESSAGE_T) 116 1.1 jmcneill #define VCHIQ_IOC_GET_CLIENT_ID _IO(VCHIQ_IOC_MAGIC, 9) 117 1.1 jmcneill #define VCHIQ_IOC_GET_CONFIG \ 118 1.1 jmcneill _IOWR(VCHIQ_IOC_MAGIC, 10, VCHIQ_GET_CONFIG_T) 119 1.1 jmcneill #define VCHIQ_IOC_CLOSE_SERVICE _IO(VCHIQ_IOC_MAGIC, 11) 120 1.1 jmcneill #define VCHIQ_IOC_USE_SERVICE _IO(VCHIQ_IOC_MAGIC, 12) 121 1.1 jmcneill #define VCHIQ_IOC_RELEASE_SERVICE _IO(VCHIQ_IOC_MAGIC, 13) 122 1.1 jmcneill #define VCHIQ_IOC_SET_SERVICE_OPTION \ 123 1.1 jmcneill _IOW(VCHIQ_IOC_MAGIC, 14, VCHIQ_SET_SERVICE_OPTION_T) 124 1.1 jmcneill #define VCHIQ_IOC_DUMP_PHYS_MEM \ 125 1.1 jmcneill _IOW(VCHIQ_IOC_MAGIC, 15, VCHIQ_DUMP_MEM_T) 126 1.3 skrll #define VCHIQ_IOC_LIB_VERSION _IO(VCHIQ_IOC_MAGIC, 16) 127 1.3 skrll #define VCHIQ_IOC_CLOSE_DELIVERED _IO(VCHIQ_IOC_MAGIC, 17) 128 1.3 skrll #define VCHIQ_IOC_MAX 17 129 1.1 jmcneill 130 1.1 jmcneill #endif 131