2019-05-27 08:55:05 +02:00
/* SPDX-License-Identifier: GPL-2.0-or-later */
2005-04-16 15:20:36 -07:00
/*
* Copyright ( C ) 2000 , 2001 , 2002 Broadcom Corporation
*/
# ifndef CFE_API_INT_H
# define CFE_API_INT_H
2007-10-29 14:23:43 +00:00
/*
* Constants .
*/
2005-04-16 15:20:36 -07:00
# 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 */
2007-10-29 14:23:43 +00:00
/*
* Structures .
*/
2005-04-16 15:20:36 -07:00
2007-10-29 14:23:43 +00:00
/* eeek, signed "pointers" */
typedef s64 cfe_xptr_t ;
2005-04-16 15:20:36 -07:00
2007-10-29 14:23:43 +00:00
struct xiocb_buffer {
u64 buf_offset ; /* offset on device (bytes) */
2005-04-16 15:20:36 -07:00
cfe_xptr_t buf_ptr ; /* pointer to a buffer */
2007-10-29 14:23:43 +00:00
u64 buf_length ; /* length of this buffer */
u64 buf_retlen ; /* returned length (for read ops) */
u64 buf_ioctlcmd ; /* IOCTL command (used only for IOCTLs) */
} ;
2005-04-16 15:20:36 -07:00
2007-10-29 14:23:43 +00:00
struct xiocb_inpstat {
u64 inp_status ; /* 1 means input available */
} ;
2005-04-16 15:20:36 -07:00
2007-10-29 14:23:43 +00:00
struct xiocb_envbuf {
s64 enum_idx ; /* 0-based enumeration index */
2005-04-16 15:20:36 -07:00
cfe_xptr_t name_ptr ; /* name string buffer */
2007-10-29 14:23:43 +00:00
s64 name_length ; /* size of name buffer */
2005-04-16 15:20:36 -07:00
cfe_xptr_t val_ptr ; /* value string buffer */
2007-10-29 14:23:43 +00:00
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 */
2005-04-16 15:20:36 -07:00
union {
2007-10-29 14:23:43 +00:00
/* 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 ;
2005-04-16 15:20:36 -07:00
} plist ;
2007-10-29 14:23:43 +00:00
} ;
2005-04-16 15:20:36 -07:00
2007-10-29 14:23:43 +00:00
# endif /* CFE_API_INT_H */