1 /* 2 * Copyright (C) 2000, 2001, 2002 Broadcom Corporation 3 * 4 * This program is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU General Public License 6 * as published by the Free Software Foundation; either version 2 7 * of the License, or (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, write to the Free Software 16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 */ 18 #ifndef CFE_API_INT_H 19 #define CFE_API_INT_H 20 21 /* 22 * Constants. 23 */ 24 #define CFE_CMD_FW_GETINFO 0 25 #define CFE_CMD_FW_RESTART 1 26 #define CFE_CMD_FW_BOOT 2 27 #define CFE_CMD_FW_CPUCTL 3 28 #define CFE_CMD_FW_GETTIME 4 29 #define CFE_CMD_FW_MEMENUM 5 30 #define CFE_CMD_FW_FLUSHCACHE 6 31 32 #define CFE_CMD_DEV_GETHANDLE 9 33 #define CFE_CMD_DEV_ENUM 10 34 #define CFE_CMD_DEV_OPEN 11 35 #define CFE_CMD_DEV_INPSTAT 12 36 #define CFE_CMD_DEV_READ 13 37 #define CFE_CMD_DEV_WRITE 14 38 #define CFE_CMD_DEV_IOCTL 15 39 #define CFE_CMD_DEV_CLOSE 16 40 #define CFE_CMD_DEV_GETINFO 17 41 42 #define CFE_CMD_ENV_ENUM 20 43 #define CFE_CMD_ENV_GET 22 44 #define CFE_CMD_ENV_SET 23 45 #define CFE_CMD_ENV_DEL 24 46 47 #define CFE_CMD_MAX 32 48 49 #define CFE_CMD_VENDOR_USE 0x8000 /* codes above this are for customer use */ 50 51 /* 52 * Structures. 53 */ 54 55 /* eeek, signed "pointers" */ 56 typedef s64 cfe_xptr_t; 57 58 struct xiocb_buffer { 59 u64 buf_offset; /* offset on device (bytes) */ 60 cfe_xptr_t buf_ptr; /* pointer to a buffer */ 61 u64 buf_length; /* length of this buffer */ 62 u64 buf_retlen; /* returned length (for read ops) */ 63 u64 buf_ioctlcmd; /* IOCTL command (used only for IOCTLs) */ 64 }; 65 66 struct xiocb_inpstat { 67 u64 inp_status; /* 1 means input available */ 68 }; 69 70 struct xiocb_envbuf { 71 s64 enum_idx; /* 0-based enumeration index */ 72 cfe_xptr_t name_ptr; /* name string buffer */ 73 s64 name_length; /* size of name buffer */ 74 cfe_xptr_t val_ptr; /* value string buffer */ 75 s64 val_length; /* size of value string buffer */ 76 }; 77 78 struct xiocb_cpuctl { 79 u64 cpu_number; /* cpu number to control */ 80 u64 cpu_command; /* command to issue to CPU */ 81 u64 start_addr; /* CPU start address */ 82 u64 gp_val; /* starting GP value */ 83 u64 sp_val; /* starting SP value */ 84 u64 a1_val; /* starting A1 value */ 85 }; 86 87 struct xiocb_time { 88 s64 ticks; /* current time in ticks */ 89 }; 90 91 struct xiocb_exitstat{ 92 s64 status; 93 }; 94 95 struct xiocb_meminfo { 96 s64 mi_idx; /* 0-based enumeration index */ 97 s64 mi_type; /* type of memory block */ 98 u64 mi_addr; /* physical start address */ 99 u64 mi_size; /* block size */ 100 }; 101 102 struct xiocb_fwinfo { 103 s64 fwi_version; /* major, minor, eco version */ 104 s64 fwi_totalmem; /* total installed mem */ 105 s64 fwi_flags; /* various flags */ 106 s64 fwi_boardid; /* board ID */ 107 s64 fwi_bootarea_va; /* VA of boot area */ 108 s64 fwi_bootarea_pa; /* PA of boot area */ 109 s64 fwi_bootarea_size; /* size of boot area */ 110 s64 fwi_reserved1; 111 s64 fwi_reserved2; 112 s64 fwi_reserved3; 113 }; 114 115 struct cfe_xiocb { 116 u64 xiocb_fcode; /* IOCB function code */ 117 s64 xiocb_status; /* return status */ 118 s64 xiocb_handle; /* file/device handle */ 119 u64 xiocb_flags; /* flags for this IOCB */ 120 u64 xiocb_psize; /* size of parameter list */ 121 union { 122 /* buffer parameters */ 123 struct xiocb_buffer xiocb_buffer; 124 125 /* input status parameters */ 126 struct xiocb_inpstat xiocb_inpstat; 127 128 /* environment function parameters */ 129 struct xiocb_envbuf xiocb_envbuf; 130 131 /* CPU control parameters */ 132 struct xiocb_cpuctl xiocb_cpuctl; 133 134 /* timer parameters */ 135 struct xiocb_time xiocb_time; 136 137 /* memory arena info parameters */ 138 struct xiocb_meminfo xiocb_meminfo; 139 140 /* firmware information */ 141 struct xiocb_fwinfo xiocb_fwinfo; 142 143 /* Exit Status */ 144 struct xiocb_exitstat xiocb_exitstat; 145 } plist; 146 }; 147 148 #endif /* CFE_API_INT_H */ 149