| /* | |
| * Copyright (C) 2000, 2001, 2002 Broadcom Corporation | |
| * | |
| * This program is free software; you can redistribute it and/or | |
| * modify it under the terms of the GNU General Public License | |
| * as published by the Free Software Foundation; either version 2 | |
| * of the License, or (at your option) any later version. | |
| * | |
| * This program is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| * GNU General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU General Public License | |
| * along with this program; if not, write to the Free Software | |
| * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |
| */ | |
| #ifndef CFE_API_INT_H | |
| #define CFE_API_INT_H | |
| /* | |
| * Constants. | |
| */ | |
| #define CFE_CMD_FW_GETINFO 0 | |
| #define CFE_CMD_FW_RESTART 1 | |
| #define CFE_CMD_FW_BOOT 2 | |
| #define CFE_CMD_FW_CPUCTL 3 | |
| #define CFE_CMD_FW_GETTIME 4 | |
| #define CFE_CMD_FW_MEMENUM 5 | |
| #define CFE_CMD_FW_FLUSHCACHE 6 | |
| #define CFE_CMD_DEV_GETHANDLE 9 | |
| #define CFE_CMD_DEV_ENUM 10 | |
| #define CFE_CMD_DEV_OPEN 11 | |
| #define CFE_CMD_DEV_INPSTAT 12 | |
| #define CFE_CMD_DEV_READ 13 | |
| #define CFE_CMD_DEV_WRITE 14 | |
| #define CFE_CMD_DEV_IOCTL 15 | |
| #define CFE_CMD_DEV_CLOSE 16 | |
| #define CFE_CMD_DEV_GETINFO 17 | |
| #define CFE_CMD_ENV_ENUM 20 | |
| #define CFE_CMD_ENV_GET 22 | |
| #define CFE_CMD_ENV_SET 23 | |
| #define CFE_CMD_ENV_DEL 24 | |
| #define CFE_CMD_MAX 32 | |
| #define CFE_CMD_VENDOR_USE 0x8000 /* codes above this are for customer use */ | |
| /* | |
| * Structures. | |
| */ | |
| /* eeek, signed "pointers" */ | |
| typedef s64 cfe_xptr_t; | |
| struct xiocb_buffer { | |
| u64 buf_offset; /* offset on device (bytes) */ | |
| cfe_xptr_t buf_ptr; /* pointer to a buffer */ | |
| u64 buf_length; /* length of this buffer */ | |
| u64 buf_retlen; /* returned length (for read ops) */ | |
| u64 buf_ioctlcmd; /* IOCTL command (used only for IOCTLs) */ | |
| }; | |
| struct xiocb_inpstat { | |
| u64 inp_status; /* 1 means input available */ | |
| }; | |
| struct xiocb_envbuf { | |
| s64 enum_idx; /* 0-based enumeration index */ | |
| cfe_xptr_t name_ptr; /* name string buffer */ | |
| s64 name_length; /* size of name buffer */ | |
| cfe_xptr_t val_ptr; /* value string buffer */ | |
| s64 val_length; /* size of value string buffer */ | |
| }; | |
| struct xiocb_cpuctl { | |
| u64 cpu_number; /* cpu number to control */ | |
| u64 cpu_command; /* command to issue to CPU */ | |
| u64 start_addr; /* CPU start address */ | |
| u64 gp_val; /* starting GP value */ | |
| u64 sp_val; /* starting SP value */ | |
| u64 a1_val; /* starting A1 value */ | |
| }; | |
| struct xiocb_time { | |
| s64 ticks; /* current time in ticks */ | |
| }; | |
| struct xiocb_exitstat{ | |
| s64 status; | |
| }; | |
| struct xiocb_meminfo { | |
| s64 mi_idx; /* 0-based enumeration index */ | |
| s64 mi_type; /* type of memory block */ | |
| u64 mi_addr; /* physical start address */ | |
| u64 mi_size; /* block size */ | |
| }; | |
| struct xiocb_fwinfo { | |
| s64 fwi_version; /* major, minor, eco version */ | |
| s64 fwi_totalmem; /* total installed mem */ | |
| s64 fwi_flags; /* various flags */ | |
| s64 fwi_boardid; /* board ID */ | |
| s64 fwi_bootarea_va; /* VA of boot area */ | |
| s64 fwi_bootarea_pa; /* PA of boot area */ | |
| s64 fwi_bootarea_size; /* size of boot area */ | |
| s64 fwi_reserved1; | |
| s64 fwi_reserved2; | |
| s64 fwi_reserved3; | |
| }; | |
| struct cfe_xiocb { | |
| u64 xiocb_fcode; /* IOCB function code */ | |
| s64 xiocb_status; /* return status */ | |
| s64 xiocb_handle; /* file/device handle */ | |
| u64 xiocb_flags; /* flags for this IOCB */ | |
| u64 xiocb_psize; /* size of parameter list */ | |
| union { | |
| /* buffer parameters */ | |
| struct xiocb_buffer xiocb_buffer; | |
| /* input status parameters */ | |
| struct xiocb_inpstat xiocb_inpstat; | |
| /* environment function parameters */ | |
| struct xiocb_envbuf xiocb_envbuf; | |
| /* CPU control parameters */ | |
| struct xiocb_cpuctl xiocb_cpuctl; | |
| /* timer parameters */ | |
| struct xiocb_time xiocb_time; | |
| /* memory arena info parameters */ | |
| struct xiocb_meminfo xiocb_meminfo; | |
| /* firmware information */ | |
| struct xiocb_fwinfo xiocb_fwinfo; | |
| /* Exit Status */ | |
| struct xiocb_exitstat xiocb_exitstat; | |
| } plist; | |
| }; | |
| #endif /* CFE_API_INT_H */ |