162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (C) 2000, 2001, 2002 Broadcom Corporation 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci#ifndef CFE_API_INT_H 662306a36Sopenharmony_ci#define CFE_API_INT_H 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci/* 962306a36Sopenharmony_ci * Constants. 1062306a36Sopenharmony_ci */ 1162306a36Sopenharmony_ci#define CFE_CMD_FW_GETINFO 0 1262306a36Sopenharmony_ci#define CFE_CMD_FW_RESTART 1 1362306a36Sopenharmony_ci#define CFE_CMD_FW_BOOT 2 1462306a36Sopenharmony_ci#define CFE_CMD_FW_CPUCTL 3 1562306a36Sopenharmony_ci#define CFE_CMD_FW_GETTIME 4 1662306a36Sopenharmony_ci#define CFE_CMD_FW_MEMENUM 5 1762306a36Sopenharmony_ci#define CFE_CMD_FW_FLUSHCACHE 6 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci#define CFE_CMD_DEV_GETHANDLE 9 2062306a36Sopenharmony_ci#define CFE_CMD_DEV_ENUM 10 2162306a36Sopenharmony_ci#define CFE_CMD_DEV_OPEN 11 2262306a36Sopenharmony_ci#define CFE_CMD_DEV_INPSTAT 12 2362306a36Sopenharmony_ci#define CFE_CMD_DEV_READ 13 2462306a36Sopenharmony_ci#define CFE_CMD_DEV_WRITE 14 2562306a36Sopenharmony_ci#define CFE_CMD_DEV_IOCTL 15 2662306a36Sopenharmony_ci#define CFE_CMD_DEV_CLOSE 16 2762306a36Sopenharmony_ci#define CFE_CMD_DEV_GETINFO 17 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci#define CFE_CMD_ENV_ENUM 20 3062306a36Sopenharmony_ci#define CFE_CMD_ENV_GET 22 3162306a36Sopenharmony_ci#define CFE_CMD_ENV_SET 23 3262306a36Sopenharmony_ci#define CFE_CMD_ENV_DEL 24 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci#define CFE_CMD_MAX 32 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci#define CFE_CMD_VENDOR_USE 0x8000 /* codes above this are for customer use */ 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci/* 3962306a36Sopenharmony_ci * Structures. 4062306a36Sopenharmony_ci */ 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci/* eeek, signed "pointers" */ 4362306a36Sopenharmony_citypedef s64 cfe_xptr_t; 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_cistruct xiocb_buffer { 4662306a36Sopenharmony_ci u64 buf_offset; /* offset on device (bytes) */ 4762306a36Sopenharmony_ci cfe_xptr_t buf_ptr; /* pointer to a buffer */ 4862306a36Sopenharmony_ci u64 buf_length; /* length of this buffer */ 4962306a36Sopenharmony_ci u64 buf_retlen; /* returned length (for read ops) */ 5062306a36Sopenharmony_ci u64 buf_ioctlcmd; /* IOCTL command (used only for IOCTLs) */ 5162306a36Sopenharmony_ci}; 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_cistruct xiocb_inpstat { 5462306a36Sopenharmony_ci u64 inp_status; /* 1 means input available */ 5562306a36Sopenharmony_ci}; 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_cistruct xiocb_envbuf { 5862306a36Sopenharmony_ci s64 enum_idx; /* 0-based enumeration index */ 5962306a36Sopenharmony_ci cfe_xptr_t name_ptr; /* name string buffer */ 6062306a36Sopenharmony_ci s64 name_length; /* size of name buffer */ 6162306a36Sopenharmony_ci cfe_xptr_t val_ptr; /* value string buffer */ 6262306a36Sopenharmony_ci s64 val_length; /* size of value string buffer */ 6362306a36Sopenharmony_ci}; 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_cistruct xiocb_cpuctl { 6662306a36Sopenharmony_ci u64 cpu_number; /* cpu number to control */ 6762306a36Sopenharmony_ci u64 cpu_command; /* command to issue to CPU */ 6862306a36Sopenharmony_ci u64 start_addr; /* CPU start address */ 6962306a36Sopenharmony_ci u64 gp_val; /* starting GP value */ 7062306a36Sopenharmony_ci u64 sp_val; /* starting SP value */ 7162306a36Sopenharmony_ci u64 a1_val; /* starting A1 value */ 7262306a36Sopenharmony_ci}; 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_cistruct xiocb_time { 7562306a36Sopenharmony_ci s64 ticks; /* current time in ticks */ 7662306a36Sopenharmony_ci}; 7762306a36Sopenharmony_ci 7862306a36Sopenharmony_cistruct xiocb_exitstat{ 7962306a36Sopenharmony_ci s64 status; 8062306a36Sopenharmony_ci}; 8162306a36Sopenharmony_ci 8262306a36Sopenharmony_cistruct xiocb_meminfo { 8362306a36Sopenharmony_ci s64 mi_idx; /* 0-based enumeration index */ 8462306a36Sopenharmony_ci s64 mi_type; /* type of memory block */ 8562306a36Sopenharmony_ci u64 mi_addr; /* physical start address */ 8662306a36Sopenharmony_ci u64 mi_size; /* block size */ 8762306a36Sopenharmony_ci}; 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_cistruct xiocb_fwinfo { 9062306a36Sopenharmony_ci s64 fwi_version; /* major, minor, eco version */ 9162306a36Sopenharmony_ci s64 fwi_totalmem; /* total installed mem */ 9262306a36Sopenharmony_ci s64 fwi_flags; /* various flags */ 9362306a36Sopenharmony_ci s64 fwi_boardid; /* board ID */ 9462306a36Sopenharmony_ci s64 fwi_bootarea_va; /* VA of boot area */ 9562306a36Sopenharmony_ci s64 fwi_bootarea_pa; /* PA of boot area */ 9662306a36Sopenharmony_ci s64 fwi_bootarea_size; /* size of boot area */ 9762306a36Sopenharmony_ci s64 fwi_reserved1; 9862306a36Sopenharmony_ci s64 fwi_reserved2; 9962306a36Sopenharmony_ci s64 fwi_reserved3; 10062306a36Sopenharmony_ci}; 10162306a36Sopenharmony_ci 10262306a36Sopenharmony_cistruct cfe_xiocb { 10362306a36Sopenharmony_ci u64 xiocb_fcode; /* IOCB function code */ 10462306a36Sopenharmony_ci s64 xiocb_status; /* return status */ 10562306a36Sopenharmony_ci s64 xiocb_handle; /* file/device handle */ 10662306a36Sopenharmony_ci u64 xiocb_flags; /* flags for this IOCB */ 10762306a36Sopenharmony_ci u64 xiocb_psize; /* size of parameter list */ 10862306a36Sopenharmony_ci union { 10962306a36Sopenharmony_ci /* buffer parameters */ 11062306a36Sopenharmony_ci struct xiocb_buffer xiocb_buffer; 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ci /* input status parameters */ 11362306a36Sopenharmony_ci struct xiocb_inpstat xiocb_inpstat; 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_ci /* environment function parameters */ 11662306a36Sopenharmony_ci struct xiocb_envbuf xiocb_envbuf; 11762306a36Sopenharmony_ci 11862306a36Sopenharmony_ci /* CPU control parameters */ 11962306a36Sopenharmony_ci struct xiocb_cpuctl xiocb_cpuctl; 12062306a36Sopenharmony_ci 12162306a36Sopenharmony_ci /* timer parameters */ 12262306a36Sopenharmony_ci struct xiocb_time xiocb_time; 12362306a36Sopenharmony_ci 12462306a36Sopenharmony_ci /* memory arena info parameters */ 12562306a36Sopenharmony_ci struct xiocb_meminfo xiocb_meminfo; 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_ci /* firmware information */ 12862306a36Sopenharmony_ci struct xiocb_fwinfo xiocb_fwinfo; 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_ci /* Exit Status */ 13162306a36Sopenharmony_ci struct xiocb_exitstat xiocb_exitstat; 13262306a36Sopenharmony_ci } plist; 13362306a36Sopenharmony_ci}; 13462306a36Sopenharmony_ci 13562306a36Sopenharmony_ci#endif /* CFE_API_INT_H */ 136