Linux-libre 5.4.49-gnu
[librecmc/linux-libre.git] / arch / mips / fw / cfe / cfe_api_int.h
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 CFE_CMD_FW_MEMENUM      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 */