Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  * Copyright (C) 2000, 2001, 2002 Broadcom Corporation
0004  */
0005 #ifndef CFE_API_INT_H
0006 #define CFE_API_INT_H
0007 
0008 /*
0009  * Constants.
0010  */
0011 #define CFE_CMD_FW_GETINFO  0
0012 #define CFE_CMD_FW_RESTART  1
0013 #define CFE_CMD_FW_BOOT     2
0014 #define CFE_CMD_FW_CPUCTL   3
0015 #define CFE_CMD_FW_GETTIME      4
0016 #define CFE_CMD_FW_MEMENUM  5
0017 #define CFE_CMD_FW_FLUSHCACHE   6
0018 
0019 #define CFE_CMD_DEV_GETHANDLE   9
0020 #define CFE_CMD_DEV_ENUM    10
0021 #define CFE_CMD_DEV_OPEN    11
0022 #define CFE_CMD_DEV_INPSTAT 12
0023 #define CFE_CMD_DEV_READ    13
0024 #define CFE_CMD_DEV_WRITE   14
0025 #define CFE_CMD_DEV_IOCTL   15
0026 #define CFE_CMD_DEV_CLOSE   16
0027 #define CFE_CMD_DEV_GETINFO 17
0028 
0029 #define CFE_CMD_ENV_ENUM    20
0030 #define CFE_CMD_ENV_GET     22
0031 #define CFE_CMD_ENV_SET     23
0032 #define CFE_CMD_ENV_DEL     24
0033 
0034 #define CFE_CMD_MAX     32
0035 
0036 #define CFE_CMD_VENDOR_USE  0x8000  /* codes above this are for customer use */
0037 
0038 /*
0039  * Structures.
0040  */
0041 
0042 /* eeek, signed "pointers" */
0043 typedef s64 cfe_xptr_t;
0044 
0045 struct xiocb_buffer {
0046     u64 buf_offset;     /* offset on device (bytes) */
0047     cfe_xptr_t  buf_ptr;        /* pointer to a buffer */
0048     u64 buf_length;     /* length of this buffer */
0049     u64 buf_retlen;     /* returned length (for read ops) */
0050     u64 buf_ioctlcmd;   /* IOCTL command (used only for IOCTLs) */
0051 };
0052 
0053 struct xiocb_inpstat {
0054     u64 inp_status;     /* 1 means input available */
0055 };
0056 
0057 struct xiocb_envbuf {
0058     s64 enum_idx;       /* 0-based enumeration index */
0059     cfe_xptr_t name_ptr;        /* name string buffer */
0060     s64 name_length;        /* size of name buffer */
0061     cfe_xptr_t val_ptr;     /* value string buffer */
0062     s64 val_length;     /* size of value string buffer */
0063 };
0064 
0065 struct xiocb_cpuctl {
0066     u64 cpu_number;     /* cpu number to control */
0067     u64 cpu_command;    /* command to issue to CPU */
0068     u64 start_addr;     /* CPU start address */
0069     u64 gp_val;     /* starting GP value */
0070     u64 sp_val;     /* starting SP value */
0071     u64 a1_val;     /* starting A1 value */
0072 };
0073 
0074 struct xiocb_time {
0075     s64 ticks;      /* current time in ticks */
0076 };
0077 
0078 struct xiocb_exitstat{
0079     s64 status;
0080 };
0081 
0082 struct xiocb_meminfo {
0083     s64 mi_idx;     /* 0-based enumeration index */
0084     s64 mi_type;        /* type of memory block */
0085     u64 mi_addr;        /* physical start address */
0086     u64 mi_size;        /* block size */
0087 };
0088 
0089 struct xiocb_fwinfo {
0090     s64 fwi_version;        /* major, minor, eco version */
0091     s64 fwi_totalmem;   /* total installed mem */
0092     s64 fwi_flags;      /* various flags */
0093     s64 fwi_boardid;        /* board ID */
0094     s64 fwi_bootarea_va;    /* VA of boot area */
0095     s64 fwi_bootarea_pa;    /* PA of boot area */
0096     s64 fwi_bootarea_size;  /* size of boot area */
0097     s64 fwi_reserved1;
0098     s64 fwi_reserved2;
0099     s64 fwi_reserved3;
0100 };
0101 
0102 struct cfe_xiocb {
0103     u64 xiocb_fcode;    /* IOCB function code */
0104     s64 xiocb_status;   /* return status */
0105     s64 xiocb_handle;   /* file/device handle */
0106     u64 xiocb_flags;    /* flags for this IOCB */
0107     u64 xiocb_psize;    /* size of parameter list */
0108     union {
0109         /* buffer parameters */
0110         struct xiocb_buffer xiocb_buffer;
0111 
0112         /* input status parameters */
0113         struct xiocb_inpstat xiocb_inpstat;
0114 
0115         /* environment function parameters */
0116         struct xiocb_envbuf xiocb_envbuf;
0117 
0118         /* CPU control parameters */
0119         struct xiocb_cpuctl xiocb_cpuctl;
0120 
0121         /* timer parameters */
0122         struct xiocb_time xiocb_time;
0123 
0124         /* memory arena info parameters */
0125         struct xiocb_meminfo xiocb_meminfo;
0126 
0127         /* firmware information */
0128         struct xiocb_fwinfo xiocb_fwinfo;
0129 
0130         /* Exit Status */
0131         struct xiocb_exitstat xiocb_exitstat;
0132     } plist;
0133 };
0134 
0135 #endif /* CFE_API_INT_H */