1278277Sgonzo/** 2278277Sgonzo * Copyright (c) 2010-2012 Broadcom. All rights reserved. 3278277Sgonzo * 4278277Sgonzo * Redistribution and use in source and binary forms, with or without 5278277Sgonzo * modification, are permitted provided that the following conditions 6278277Sgonzo * are met: 7278277Sgonzo * 1. Redistributions of source code must retain the above copyright 8278277Sgonzo * notice, this list of conditions, and the following disclaimer, 9278277Sgonzo * without modification. 10278277Sgonzo * 2. Redistributions in binary form must reproduce the above copyright 11278277Sgonzo * notice, this list of conditions and the following disclaimer in the 12278277Sgonzo * documentation and/or other materials provided with the distribution. 13278277Sgonzo * 3. The names of the above-listed copyright holders may not be used 14278277Sgonzo * to endorse or promote products derived from this software without 15278277Sgonzo * specific prior written permission. 16278277Sgonzo * 17278277Sgonzo * ALTERNATIVELY, this software may be distributed under the terms of the 18278277Sgonzo * GNU General Public License ("GPL") version 2, as published by the Free 19278277Sgonzo * Software Foundation. 20278277Sgonzo * 21278277Sgonzo * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 22278277Sgonzo * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 23278277Sgonzo * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 24278277Sgonzo * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 25278277Sgonzo * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 26278277Sgonzo * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 27278277Sgonzo * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 28278277Sgonzo * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 29278277Sgonzo * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 30278277Sgonzo * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 31278277Sgonzo * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32278277Sgonzo */ 33278277Sgonzo 34278277Sgonzo#ifndef VCHIQ_IOCTLS_H 35278277Sgonzo#define VCHIQ_IOCTLS_H 36278277Sgonzo 37278277Sgonzo#include "vchiq_if.h" 38278277Sgonzo 39278277Sgonzo#define VCHIQ_IOC_MAGIC 0xc4 40278277Sgonzo#define VCHIQ_INVALID_HANDLE (~0) 41278277Sgonzo 42278277Sgonzotypedef struct { 43278277Sgonzo VCHIQ_SERVICE_PARAMS_T params; 44278277Sgonzo int is_open; 45278277Sgonzo int is_vchi; 46278277Sgonzo unsigned int handle; /* OUT */ 47278277Sgonzo} VCHIQ_CREATE_SERVICE_T; 48278277Sgonzo 49278277Sgonzotypedef struct { 50278277Sgonzo unsigned int handle; 51278277Sgonzo unsigned int count; 52278277Sgonzo const VCHIQ_ELEMENT_T *elements; 53278277Sgonzo} VCHIQ_QUEUE_MESSAGE_T; 54278277Sgonzo 55278277Sgonzotypedef struct { 56278277Sgonzo unsigned int handle; 57278277Sgonzo void *data; 58278277Sgonzo unsigned int size; 59278277Sgonzo void *userdata; 60278277Sgonzo VCHIQ_BULK_MODE_T mode; 61278277Sgonzo} VCHIQ_QUEUE_BULK_TRANSFER_T; 62278277Sgonzo 63278277Sgonzotypedef struct { 64278277Sgonzo VCHIQ_REASON_T reason; 65278277Sgonzo VCHIQ_HEADER_T *header; 66278277Sgonzo void *service_userdata; 67278277Sgonzo void *bulk_userdata; 68278277Sgonzo} VCHIQ_COMPLETION_DATA_T; 69278277Sgonzo 70278277Sgonzotypedef struct { 71278277Sgonzo unsigned int count; 72278277Sgonzo VCHIQ_COMPLETION_DATA_T *buf; 73278277Sgonzo unsigned int msgbufsize; 74278277Sgonzo unsigned int msgbufcount; /* IN/OUT */ 75278277Sgonzo void **msgbufs; 76278277Sgonzo} VCHIQ_AWAIT_COMPLETION_T; 77278277Sgonzo 78278277Sgonzotypedef struct { 79278277Sgonzo unsigned int handle; 80278277Sgonzo int blocking; 81278277Sgonzo unsigned int bufsize; 82278277Sgonzo void *buf; 83278277Sgonzo} VCHIQ_DEQUEUE_MESSAGE_T; 84278277Sgonzo 85278277Sgonzotypedef struct { 86278277Sgonzo unsigned int config_size; 87278277Sgonzo VCHIQ_CONFIG_T *pconfig; 88278277Sgonzo} VCHIQ_GET_CONFIG_T; 89278277Sgonzo 90278277Sgonzotypedef struct { 91278277Sgonzo unsigned int handle; 92278277Sgonzo VCHIQ_SERVICE_OPTION_T option; 93278277Sgonzo int value; 94278277Sgonzo} VCHIQ_SET_SERVICE_OPTION_T; 95278277Sgonzo 96278277Sgonzotypedef struct { 97278277Sgonzo void *virt_addr; 98278277Sgonzo size_t num_bytes; 99278277Sgonzo} VCHIQ_DUMP_MEM_T; 100278277Sgonzo 101278277Sgonzo#define VCHIQ_IOC_CONNECT _IO(VCHIQ_IOC_MAGIC, 0) 102278277Sgonzo#define VCHIQ_IOC_SHUTDOWN _IO(VCHIQ_IOC_MAGIC, 1) 103278277Sgonzo#define VCHIQ_IOC_CREATE_SERVICE \ 104278277Sgonzo _IOWR(VCHIQ_IOC_MAGIC, 2, VCHIQ_CREATE_SERVICE_T) 105278277Sgonzo#define VCHIQ_IOC_REMOVE_SERVICE _IO(VCHIQ_IOC_MAGIC, 3) 106278277Sgonzo#define VCHIQ_IOC_QUEUE_MESSAGE \ 107278277Sgonzo _IOW(VCHIQ_IOC_MAGIC, 4, VCHIQ_QUEUE_MESSAGE_T) 108278277Sgonzo#define VCHIQ_IOC_QUEUE_BULK_TRANSMIT \ 109278277Sgonzo _IOWR(VCHIQ_IOC_MAGIC, 5, VCHIQ_QUEUE_BULK_TRANSFER_T) 110278277Sgonzo#define VCHIQ_IOC_QUEUE_BULK_RECEIVE \ 111278277Sgonzo _IOWR(VCHIQ_IOC_MAGIC, 6, VCHIQ_QUEUE_BULK_TRANSFER_T) 112278277Sgonzo#define VCHIQ_IOC_AWAIT_COMPLETION \ 113278277Sgonzo _IOWR(VCHIQ_IOC_MAGIC, 7, VCHIQ_AWAIT_COMPLETION_T) 114278277Sgonzo#define VCHIQ_IOC_DEQUEUE_MESSAGE \ 115278277Sgonzo _IOWR(VCHIQ_IOC_MAGIC, 8, VCHIQ_DEQUEUE_MESSAGE_T) 116278277Sgonzo#define VCHIQ_IOC_GET_CLIENT_ID _IO(VCHIQ_IOC_MAGIC, 9) 117278277Sgonzo#define VCHIQ_IOC_GET_CONFIG \ 118278277Sgonzo _IOWR(VCHIQ_IOC_MAGIC, 10, VCHIQ_GET_CONFIG_T) 119278277Sgonzo#define VCHIQ_IOC_CLOSE_SERVICE _IO(VCHIQ_IOC_MAGIC, 11) 120278277Sgonzo#define VCHIQ_IOC_USE_SERVICE _IO(VCHIQ_IOC_MAGIC, 12) 121278277Sgonzo#define VCHIQ_IOC_RELEASE_SERVICE _IO(VCHIQ_IOC_MAGIC, 13) 122278277Sgonzo#define VCHIQ_IOC_SET_SERVICE_OPTION \ 123278277Sgonzo _IOW(VCHIQ_IOC_MAGIC, 14, VCHIQ_SET_SERVICE_OPTION_T) 124278277Sgonzo#define VCHIQ_IOC_DUMP_PHYS_MEM \ 125278277Sgonzo _IOW(VCHIQ_IOC_MAGIC, 15, VCHIQ_DUMP_MEM_T) 126290245Sgonzo#define VCHIQ_IOC_LIB_VERSION _IO(VCHIQ_IOC_MAGIC, 16) 127290245Sgonzo#define VCHIQ_IOC_CLOSE_DELIVERED _IO(VCHIQ_IOC_MAGIC, 17) 128290245Sgonzo#define VCHIQ_IOC_MAX 17 129278277Sgonzo 130278277Sgonzo#endif 131