| 1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
| 2 | /* |
| 3 | * Copyright (C) 2000, 2001, 2002 Broadcom Corporation |
| 4 | */ |
| 5 | #ifndef CFE_API_INT_H |
| 6 | #define CFE_API_INT_H |
| 7 | |
| 8 | /* |
| 9 | * Constants. |
| 10 | */ |
| 11 | #define CFE_CMD_FW_GETINFO 0 |
| 12 | #define CFE_CMD_FW_RESTART 1 |
| 13 | #define CFE_CMD_FW_BOOT 2 |
| 14 | #define CFE_CMD_FW_CPUCTL 3 |
| 15 | #define CFE_CMD_FW_GETTIME 4 |
| 16 | #define 5 |
| 17 | #define CFE_CMD_FW_FLUSHCACHE 6 |
| 18 | |
| 19 | #define CFE_CMD_DEV_GETHANDLE 9 |
| 20 | #define CFE_CMD_DEV_ENUM 10 |
| 21 | #define CFE_CMD_DEV_OPEN 11 |
| 22 | #define CFE_CMD_DEV_INPSTAT 12 |
| 23 | #define CFE_CMD_DEV_READ 13 |
| 24 | #define CFE_CMD_DEV_WRITE 14 |
| 25 | #define CFE_CMD_DEV_IOCTL 15 |
| 26 | #define CFE_CMD_DEV_CLOSE 16 |
| 27 | #define CFE_CMD_DEV_GETINFO 17 |
| 28 | |
| 29 | #define CFE_CMD_ENV_ENUM 20 |
| 30 | #define CFE_CMD_ENV_GET 22 |
| 31 | #define CFE_CMD_ENV_SET 23 |
| 32 | #define CFE_CMD_ENV_DEL 24 |
| 33 | |
| 34 | #define CFE_CMD_MAX 32 |
| 35 | |
| 36 | #define CFE_CMD_VENDOR_USE 0x8000 /* codes above this are for customer use */ |
| 37 | |
| 38 | /* |
| 39 | * Structures. |
| 40 | */ |
| 41 | |
| 42 | /* eeek, signed "pointers" */ |
| 43 | typedef s64 cfe_xptr_t; |
| 44 | |
| 45 | struct xiocb_buffer { |
| 46 | u64 buf_offset; /* offset on device (bytes) */ |
| 47 | cfe_xptr_t buf_ptr; /* pointer to a buffer */ |
| 48 | u64 buf_length; /* length of this buffer */ |
| 49 | u64 buf_retlen; /* returned length (for read ops) */ |
| 50 | u64 buf_ioctlcmd; /* IOCTL command (used only for IOCTLs) */ |
| 51 | }; |
| 52 | |
| 53 | struct xiocb_inpstat { |
| 54 | u64 inp_status; /* 1 means input available */ |
| 55 | }; |
| 56 | |
| 57 | struct xiocb_envbuf { |
| 58 | s64 enum_idx; /* 0-based enumeration index */ |
| 59 | cfe_xptr_t name_ptr; /* name string buffer */ |
| 60 | s64 name_length; /* size of name buffer */ |
| 61 | cfe_xptr_t val_ptr; /* value string buffer */ |
| 62 | s64 val_length; /* size of value string buffer */ |
| 63 | }; |
| 64 | |
| 65 | struct xiocb_cpuctl { |
| 66 | u64 cpu_number; /* cpu number to control */ |
| 67 | u64 cpu_command; /* command to issue to CPU */ |
| 68 | u64 start_addr; /* CPU start address */ |
| 69 | u64 gp_val; /* starting GP value */ |
| 70 | u64 sp_val; /* starting SP value */ |
| 71 | u64 a1_val; /* starting A1 value */ |
| 72 | }; |
| 73 | |
| 74 | struct xiocb_time { |
| 75 | s64 ticks; /* current time in ticks */ |
| 76 | }; |
| 77 | |
| 78 | struct xiocb_exitstat{ |
| 79 | s64 status; |
| 80 | }; |
| 81 | |
| 82 | struct xiocb_meminfo { |
| 83 | s64 mi_idx; /* 0-based enumeration index */ |
| 84 | s64 mi_type; /* type of memory block */ |
| 85 | u64 mi_addr; /* physical start address */ |
| 86 | u64 mi_size; /* block size */ |
| 87 | }; |
| 88 | |
| 89 | struct xiocb_fwinfo { |
| 90 | s64 fwi_version; /* major, minor, eco version */ |
| 91 | s64 fwi_totalmem; /* total installed mem */ |
| 92 | s64 fwi_flags; /* various flags */ |
| 93 | s64 fwi_boardid; /* board ID */ |
| 94 | s64 fwi_bootarea_va; /* VA of boot area */ |
| 95 | s64 fwi_bootarea_pa; /* PA of boot area */ |
| 96 | s64 fwi_bootarea_size; /* size of boot area */ |
| 97 | s64 fwi_reserved1; |
| 98 | s64 fwi_reserved2; |
| 99 | s64 fwi_reserved3; |
| 100 | }; |
| 101 | |
| 102 | struct cfe_xiocb { |
| 103 | u64 xiocb_fcode; /* IOCB function code */ |
| 104 | s64 xiocb_status; /* return status */ |
| 105 | s64 xiocb_handle; /* file/device handle */ |
| 106 | u64 xiocb_flags; /* flags for this IOCB */ |
| 107 | u64 xiocb_psize; /* size of parameter list */ |
| 108 | union { |
| 109 | /* buffer parameters */ |
| 110 | struct xiocb_buffer xiocb_buffer; |
| 111 | |
| 112 | /* input status parameters */ |
| 113 | struct xiocb_inpstat xiocb_inpstat; |
| 114 | |
| 115 | /* environment function parameters */ |
| 116 | struct xiocb_envbuf xiocb_envbuf; |
| 117 | |
| 118 | /* CPU control parameters */ |
| 119 | struct xiocb_cpuctl xiocb_cpuctl; |
| 120 | |
| 121 | /* timer parameters */ |
| 122 | struct xiocb_time xiocb_time; |
| 123 | |
| 124 | /* memory arena info parameters */ |
| 125 | struct xiocb_meminfo xiocb_meminfo; |
| 126 | |
| 127 | /* firmware information */ |
| 128 | struct xiocb_fwinfo xiocb_fwinfo; |
| 129 | |
| 130 | /* Exit Status */ |
| 131 | struct xiocb_exitstat xiocb_exitstat; |
| 132 | } plist; |
| 133 | }; |
| 134 | |
| 135 | #endif /* CFE_API_INT_H */ |
| 136 | |