18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * Copyright (C) 2000, 2001, 2002 Broadcom Corporation
48c2ecf20Sopenharmony_ci */
58c2ecf20Sopenharmony_ci#ifndef CFE_API_INT_H
68c2ecf20Sopenharmony_ci#define CFE_API_INT_H
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci/*
98c2ecf20Sopenharmony_ci * Constants.
108c2ecf20Sopenharmony_ci */
118c2ecf20Sopenharmony_ci#define CFE_CMD_FW_GETINFO	0
128c2ecf20Sopenharmony_ci#define CFE_CMD_FW_RESTART	1
138c2ecf20Sopenharmony_ci#define CFE_CMD_FW_BOOT		2
148c2ecf20Sopenharmony_ci#define CFE_CMD_FW_CPUCTL	3
158c2ecf20Sopenharmony_ci#define CFE_CMD_FW_GETTIME      4
168c2ecf20Sopenharmony_ci#define CFE_CMD_FW_MEMENUM	5
178c2ecf20Sopenharmony_ci#define CFE_CMD_FW_FLUSHCACHE	6
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ci#define CFE_CMD_DEV_GETHANDLE	9
208c2ecf20Sopenharmony_ci#define CFE_CMD_DEV_ENUM	10
218c2ecf20Sopenharmony_ci#define CFE_CMD_DEV_OPEN	11
228c2ecf20Sopenharmony_ci#define CFE_CMD_DEV_INPSTAT	12
238c2ecf20Sopenharmony_ci#define CFE_CMD_DEV_READ	13
248c2ecf20Sopenharmony_ci#define CFE_CMD_DEV_WRITE	14
258c2ecf20Sopenharmony_ci#define CFE_CMD_DEV_IOCTL	15
268c2ecf20Sopenharmony_ci#define CFE_CMD_DEV_CLOSE	16
278c2ecf20Sopenharmony_ci#define CFE_CMD_DEV_GETINFO	17
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ci#define CFE_CMD_ENV_ENUM	20
308c2ecf20Sopenharmony_ci#define CFE_CMD_ENV_GET		22
318c2ecf20Sopenharmony_ci#define CFE_CMD_ENV_SET		23
328c2ecf20Sopenharmony_ci#define CFE_CMD_ENV_DEL		24
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ci#define CFE_CMD_MAX		32
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci#define CFE_CMD_VENDOR_USE	0x8000	/* codes above this are for customer use */
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ci/*
398c2ecf20Sopenharmony_ci * Structures.
408c2ecf20Sopenharmony_ci */
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ci/* eeek, signed "pointers" */
438c2ecf20Sopenharmony_citypedef s64 cfe_xptr_t;
448c2ecf20Sopenharmony_ci
458c2ecf20Sopenharmony_cistruct xiocb_buffer {
468c2ecf20Sopenharmony_ci	u64 buf_offset;		/* offset on device (bytes) */
478c2ecf20Sopenharmony_ci	cfe_xptr_t  buf_ptr;		/* pointer to a buffer */
488c2ecf20Sopenharmony_ci	u64 buf_length;		/* length of this buffer */
498c2ecf20Sopenharmony_ci	u64 buf_retlen;		/* returned length (for read ops) */
508c2ecf20Sopenharmony_ci	u64 buf_ioctlcmd;	/* IOCTL command (used only for IOCTLs) */
518c2ecf20Sopenharmony_ci};
528c2ecf20Sopenharmony_ci
538c2ecf20Sopenharmony_cistruct xiocb_inpstat {
548c2ecf20Sopenharmony_ci	u64 inp_status;		/* 1 means input available */
558c2ecf20Sopenharmony_ci};
568c2ecf20Sopenharmony_ci
578c2ecf20Sopenharmony_cistruct xiocb_envbuf {
588c2ecf20Sopenharmony_ci	s64 enum_idx;		/* 0-based enumeration index */
598c2ecf20Sopenharmony_ci	cfe_xptr_t name_ptr;		/* name string buffer */
608c2ecf20Sopenharmony_ci	s64 name_length;		/* size of name buffer */
618c2ecf20Sopenharmony_ci	cfe_xptr_t val_ptr;		/* value string buffer */
628c2ecf20Sopenharmony_ci	s64 val_length;		/* size of value string buffer */
638c2ecf20Sopenharmony_ci};
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_cistruct xiocb_cpuctl {
668c2ecf20Sopenharmony_ci	u64 cpu_number;		/* cpu number to control */
678c2ecf20Sopenharmony_ci	u64 cpu_command;	/* command to issue to CPU */
688c2ecf20Sopenharmony_ci	u64 start_addr;		/* CPU start address */
698c2ecf20Sopenharmony_ci	u64 gp_val;		/* starting GP value */
708c2ecf20Sopenharmony_ci	u64 sp_val;		/* starting SP value */
718c2ecf20Sopenharmony_ci	u64 a1_val;		/* starting A1 value */
728c2ecf20Sopenharmony_ci};
738c2ecf20Sopenharmony_ci
748c2ecf20Sopenharmony_cistruct xiocb_time {
758c2ecf20Sopenharmony_ci	s64 ticks;		/* current time in ticks */
768c2ecf20Sopenharmony_ci};
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_cistruct xiocb_exitstat{
798c2ecf20Sopenharmony_ci	s64 status;
808c2ecf20Sopenharmony_ci};
818c2ecf20Sopenharmony_ci
828c2ecf20Sopenharmony_cistruct xiocb_meminfo {
838c2ecf20Sopenharmony_ci	s64 mi_idx;		/* 0-based enumeration index */
848c2ecf20Sopenharmony_ci	s64 mi_type;		/* type of memory block */
858c2ecf20Sopenharmony_ci	u64 mi_addr;		/* physical start address */
868c2ecf20Sopenharmony_ci	u64 mi_size;		/* block size */
878c2ecf20Sopenharmony_ci};
888c2ecf20Sopenharmony_ci
898c2ecf20Sopenharmony_cistruct xiocb_fwinfo {
908c2ecf20Sopenharmony_ci	s64 fwi_version;		/* major, minor, eco version */
918c2ecf20Sopenharmony_ci	s64 fwi_totalmem;	/* total installed mem */
928c2ecf20Sopenharmony_ci	s64 fwi_flags;		/* various flags */
938c2ecf20Sopenharmony_ci	s64 fwi_boardid;		/* board ID */
948c2ecf20Sopenharmony_ci	s64 fwi_bootarea_va;	/* VA of boot area */
958c2ecf20Sopenharmony_ci	s64 fwi_bootarea_pa;	/* PA of boot area */
968c2ecf20Sopenharmony_ci	s64 fwi_bootarea_size;	/* size of boot area */
978c2ecf20Sopenharmony_ci	s64 fwi_reserved1;
988c2ecf20Sopenharmony_ci	s64 fwi_reserved2;
998c2ecf20Sopenharmony_ci	s64 fwi_reserved3;
1008c2ecf20Sopenharmony_ci};
1018c2ecf20Sopenharmony_ci
1028c2ecf20Sopenharmony_cistruct cfe_xiocb {
1038c2ecf20Sopenharmony_ci	u64 xiocb_fcode;	/* IOCB function code */
1048c2ecf20Sopenharmony_ci	s64 xiocb_status;	/* return status */
1058c2ecf20Sopenharmony_ci	s64 xiocb_handle;	/* file/device handle */
1068c2ecf20Sopenharmony_ci	u64 xiocb_flags;	/* flags for this IOCB */
1078c2ecf20Sopenharmony_ci	u64 xiocb_psize;	/* size of parameter list */
1088c2ecf20Sopenharmony_ci	union {
1098c2ecf20Sopenharmony_ci		/* buffer parameters */
1108c2ecf20Sopenharmony_ci		struct xiocb_buffer xiocb_buffer;
1118c2ecf20Sopenharmony_ci
1128c2ecf20Sopenharmony_ci		/* input status parameters */
1138c2ecf20Sopenharmony_ci		struct xiocb_inpstat xiocb_inpstat;
1148c2ecf20Sopenharmony_ci
1158c2ecf20Sopenharmony_ci		/* environment function parameters */
1168c2ecf20Sopenharmony_ci		struct xiocb_envbuf xiocb_envbuf;
1178c2ecf20Sopenharmony_ci
1188c2ecf20Sopenharmony_ci		/* CPU control parameters */
1198c2ecf20Sopenharmony_ci		struct xiocb_cpuctl xiocb_cpuctl;
1208c2ecf20Sopenharmony_ci
1218c2ecf20Sopenharmony_ci		/* timer parameters */
1228c2ecf20Sopenharmony_ci		struct xiocb_time xiocb_time;
1238c2ecf20Sopenharmony_ci
1248c2ecf20Sopenharmony_ci		/* memory arena info parameters */
1258c2ecf20Sopenharmony_ci		struct xiocb_meminfo xiocb_meminfo;
1268c2ecf20Sopenharmony_ci
1278c2ecf20Sopenharmony_ci		/* firmware information */
1288c2ecf20Sopenharmony_ci		struct xiocb_fwinfo xiocb_fwinfo;
1298c2ecf20Sopenharmony_ci
1308c2ecf20Sopenharmony_ci		/* Exit Status */
1318c2ecf20Sopenharmony_ci		struct xiocb_exitstat xiocb_exitstat;
1328c2ecf20Sopenharmony_ci	} plist;
1338c2ecf20Sopenharmony_ci};
1348c2ecf20Sopenharmony_ci
1358c2ecf20Sopenharmony_ci#endif /* CFE_API_INT_H */
136