Merge branches 'release', 'acpi_pm_device_sleep_state' and 'battery' into release
[sfrench/cifs-2.6.git] / arch / mips / fw / cfe / cfe_api_int.h
1 /*
2  * Copyright (C) 2000, 2001, 2002 Broadcom Corporation
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
17  */
18 #ifndef CFE_API_INT_H
19 #define CFE_API_INT_H
20
21 /*
22  * Constants.
23  */
24 #define CFE_CMD_FW_GETINFO      0
25 #define CFE_CMD_FW_RESTART      1
26 #define CFE_CMD_FW_BOOT         2
27 #define CFE_CMD_FW_CPUCTL       3
28 #define CFE_CMD_FW_GETTIME      4
29 #define CFE_CMD_FW_MEMENUM      5
30 #define CFE_CMD_FW_FLUSHCACHE   6
31
32 #define CFE_CMD_DEV_GETHANDLE   9
33 #define CFE_CMD_DEV_ENUM        10
34 #define CFE_CMD_DEV_OPEN        11
35 #define CFE_CMD_DEV_INPSTAT     12
36 #define CFE_CMD_DEV_READ        13
37 #define CFE_CMD_DEV_WRITE       14
38 #define CFE_CMD_DEV_IOCTL       15
39 #define CFE_CMD_DEV_CLOSE       16
40 #define CFE_CMD_DEV_GETINFO     17
41
42 #define CFE_CMD_ENV_ENUM        20
43 #define CFE_CMD_ENV_GET         22
44 #define CFE_CMD_ENV_SET         23
45 #define CFE_CMD_ENV_DEL         24
46
47 #define CFE_CMD_MAX             32
48
49 #define CFE_CMD_VENDOR_USE      0x8000  /* codes above this are for customer use */
50
51 /*
52  * Structures.
53  */
54
55 /* eeek, signed "pointers" */
56 typedef s64 cfe_xptr_t;
57
58 struct xiocb_buffer {
59         u64 buf_offset;         /* offset on device (bytes) */
60         cfe_xptr_t  buf_ptr;            /* pointer to a buffer */
61         u64 buf_length;         /* length of this buffer */
62         u64 buf_retlen;         /* returned length (for read ops) */
63         u64 buf_ioctlcmd;       /* IOCTL command (used only for IOCTLs) */
64 };
65
66 struct xiocb_inpstat {
67         u64 inp_status;         /* 1 means input available */
68 };
69
70 struct xiocb_envbuf {
71         s64 enum_idx;           /* 0-based enumeration index */
72         cfe_xptr_t name_ptr;            /* name string buffer */
73         s64 name_length;                /* size of name buffer */
74         cfe_xptr_t val_ptr;             /* value string buffer */
75         s64 val_length;         /* size of value string buffer */
76 };
77
78 struct xiocb_cpuctl {
79         u64 cpu_number;         /* cpu number to control */
80         u64 cpu_command;        /* command to issue to CPU */
81         u64 start_addr;         /* CPU start address */
82         u64 gp_val;             /* starting GP value */
83         u64 sp_val;             /* starting SP value */
84         u64 a1_val;             /* starting A1 value */
85 };
86
87 struct xiocb_time {
88         s64 ticks;              /* current time in ticks */
89 };
90
91 struct xiocb_exitstat{
92         s64 status;
93 };
94
95 struct xiocb_meminfo {
96         s64 mi_idx;             /* 0-based enumeration index */
97         s64 mi_type;            /* type of memory block */
98         u64 mi_addr;            /* physical start address */
99         u64 mi_size;            /* block size */
100 };
101
102 struct xiocb_fwinfo {
103         s64 fwi_version;                /* major, minor, eco version */
104         s64 fwi_totalmem;       /* total installed mem */
105         s64 fwi_flags;          /* various flags */
106         s64 fwi_boardid;                /* board ID */
107         s64 fwi_bootarea_va;    /* VA of boot area */
108         s64 fwi_bootarea_pa;    /* PA of boot area */
109         s64 fwi_bootarea_size;  /* size of boot area */
110         s64 fwi_reserved1;
111         s64 fwi_reserved2;
112         s64 fwi_reserved3;
113 };
114
115 struct cfe_xiocb {
116         u64 xiocb_fcode;        /* IOCB function code */
117         s64 xiocb_status;       /* return status */
118         s64 xiocb_handle;       /* file/device handle */
119         u64 xiocb_flags;        /* flags for this IOCB */
120         u64 xiocb_psize;        /* size of parameter list */
121         union {
122                 /* buffer parameters */
123                 struct xiocb_buffer xiocb_buffer;
124
125                 /* input status parameters */
126                 struct xiocb_inpstat xiocb_inpstat;
127
128                 /* environment function parameters */
129                 struct xiocb_envbuf xiocb_envbuf;
130
131                 /* CPU control parameters */
132                 struct xiocb_cpuctl xiocb_cpuctl;
133
134                 /* timer parameters */
135                 struct xiocb_time xiocb_time;
136
137                 /* memory arena info parameters */
138                 struct xiocb_meminfo xiocb_meminfo;
139
140                 /* firmware information */
141                 struct xiocb_fwinfo xiocb_fwinfo;
142
143                 /* Exit Status */
144                 struct xiocb_exitstat xiocb_exitstat;
145         } plist;
146 };
147
148 #endif /* CFE_API_INT_H */