ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[linux-2.6.git] / include / asm-mips / bootinfo.h
1 /*
2  * This file is subject to the terms and conditions of the GNU General Public
3  * License.  See the file COPYING in the main directory of this archive
4  * for more details.
5  *
6  * Copyright (C) 1995, 1996, 2003 by Ralf Baechle
7  * Copyright (C) 1995, 1996 Andreas Busse
8  * Copyright (C) 1995, 1996 Stoned Elipot
9  * Copyright (C) 1995, 1996 Paul M. Antoine.
10  */
11 #ifndef _ASM_BOOTINFO_H
12 #define _ASM_BOOTINFO_H
13
14 #include <linux/types.h>
15
16 /*
17  * The MACH_GROUP_ IDs are the equivalent to PCI vendor IDs; the remaining
18  * MACH_ values equivalent to product IDs.  As such the numbers do not
19  * necessarily reflect technical relations or similarities between systems.
20  */
21
22 /*
23  * Valid machtype values for group unknown
24  */
25 #define MACH_GROUP_UNKNOWN      0       /* whatever...                  */
26 #define  MACH_UNKNOWN           0       /* whatever...                  */
27
28 /*
29  * Valid machtype values for group JAZZ
30  */
31 #define MACH_GROUP_JAZZ         1       /* Jazz                         */
32 #define  MACH_ACER_PICA_61      0       /* Acer PICA-61 (PICA1)         */
33 #define  MACH_MIPS_MAGNUM_4000  1       /* Mips Magnum 4000 "RC4030"    */
34 #define  MACH_OLIVETTI_M700     2       /* Olivetti M700-10 (-15 ??)    */
35
36 /*
37  * Valid machtype for group DEC
38  */
39 #define MACH_GROUP_DEC          2       /* Digital Equipment            */
40 #define  MACH_DSUNKNOWN         0
41 #define  MACH_DS23100           1       /* DECstation 2100 or 3100      */
42 #define  MACH_DS5100            2       /* DECsystem 5100               */
43 #define  MACH_DS5000_200        3       /* DECstation 5000/200          */
44 #define  MACH_DS5000_1XX        4       /* DECstation 5000/120, 125, 133, 150 */
45 #define  MACH_DS5000_XX         5       /* DECstation 5000/20, 25, 33, 50 */
46 #define  MACH_DS5000_2X0        6       /* DECstation 5000/240, 260     */
47 #define  MACH_DS5400            7       /* DECsystem 5400               */
48 #define  MACH_DS5500            8       /* DECsystem 5500               */
49 #define  MACH_DS5800            9       /* DECsystem 5800               */
50 #define  MACH_DS5900            10      /* DECsystem 5900               */
51
52 /*
53  * Valid machtype for group ARC
54  */
55 #define MACH_GROUP_ARC          3       /* Deskstation                  */
56 #define MACH_DESKSTATION_RPC44  0       /* Deskstation rPC44 */
57 #define MACH_DESKSTATION_TYNE   1       /* Deskstation Tyne */
58
59 /*
60  * Valid machtype for group SNI_RM
61  */
62 #define MACH_GROUP_SNI_RM       4       /* Siemens Nixdorf RM series    */
63 #define  MACH_SNI_RM200_PCI     0       /* RM200/RM300/RM400 PCI series */
64
65 /*
66  * Valid machtype for group ACN
67  */
68 #define MACH_GROUP_ACN          5
69 #define  MACH_ACN_MIPS_BOARD    0       /* ACN MIPS single board        */
70
71 /*
72  * Valid machtype for group SGI
73  */
74 #define MACH_GROUP_SGI          6       /* Silicon Graphics             */
75 #define  MACH_SGI_IP22          0       /* Indy, Indigo2, Challenge S   */
76 #define  MACH_SGI_IP27          1       /* Origin 200, Origin 2000, Onyx 2 */
77 #define  MACH_SGI_IP28          2       /* Indigo2 Impact               */
78 #define  MACH_SGI_IP32          3       /* O2                           */
79
80 /*
81  * Valid machtype for group COBALT
82  */
83 #define MACH_GROUP_COBALT       7       /* Cobalt servers               */
84 #define  MACH_COBALT_27         0       /* Proto "27" hardware          */
85
86 /*
87  * Valid machtype for group NEC DDB
88  */
89 #define MACH_GROUP_NEC_DDB      8       /* NEC DDB                      */
90 #define  MACH_NEC_DDB5074       0       /* NEC DDB Vrc-5074 */
91 #define  MACH_NEC_DDB5476       1       /* NEC DDB Vrc-5476 */
92 #define  MACH_NEC_DDB5477       2       /* NEC DDB Vrc-5477 */
93 #define  MACH_NEC_ROCKHOPPER    3       /* Rockhopper base board */
94 #define  MACH_NEC_ROCKHOPPERII  4       /* Rockhopper II base board */
95
96 /*
97  * Valid machtype for group BAGET
98  */
99 #define MACH_GROUP_BAGET        9       /* Baget                        */
100 #define  MACH_BAGET201          0       /* BT23-201 */
101 #define  MACH_BAGET202          1       /* BT23-202 */
102
103 /*
104  * Cosine boards.
105  */
106 #define MACH_GROUP_COSINE      10       /* CoSine Orion                 */
107 #define  MACH_COSINE_ORION      0
108
109 /*
110  * Valid machtype for group GALILEO
111  */
112 #define MACH_GROUP_GALILEO     11       /* Galileo Eval Boards          */
113 #define  MACH_EV96100           0       /* EV96100 */
114 #define  MACH_EV64120A          1       /* EV64120A */
115
116 /*
117  * Valid machtype for group MOMENCO
118  */
119 #define MACH_GROUP_MOMENCO      12      /* Momentum Boards              */
120 #define  MACH_MOMENCO_OCELOT    0
121 #define  MACH_MOMENCO_OCELOT_G  1
122 #define  MACH_MOMENCO_OCELOT_C  2
123 #define  MACH_MOMENCO_JAGUAR_ATX 3
124
125 /*
126  * Valid machtype for group ITE
127  */
128 #define MACH_GROUP_ITE          13      /* ITE Semi Eval Boards         */
129 #define  MACH_QED_4N_S01B       0       /* ITE8172 based eval board */
130
131 /*
132  * Valid machtype for group PHILIPS
133  */
134 #define MACH_GROUP_PHILIPS     14
135 #define  MACH_PHILIPS_NINO      0       /* Nino */
136 #define  MACH_PHILIPS_VELO      1       /* Velo */
137
138 /*
139  * Valid machtype for group Globespan
140  */
141 #define MACH_GROUP_GLOBESPAN   15       /* Globespan */
142 #define  MACH_IVR               0       /* IVR eval board */
143
144 /*
145  * Valid machtype for group SIBYTE
146  */
147 #define MACH_GROUP_SIBYTE       16      /* Sibyte / Broadcom */
148 #define  MACH_SWARM              0
149
150 /*
151  * Valid machtypes for group Toshiba
152  */
153 #define MACH_GROUP_TOSHIBA      17 /* Toshiba Reference Systems TSBREF       */
154 #define  MACH_PALLAS            0
155 #define  MACH_TOPAS             1
156 #define  MACH_JMR               2
157 #define  MACH_TOSHIBA_JMR3927   3       /* JMR-TX3927 CPU/IO board */
158 #define  MACH_TOSHIBA_RBTX4927  4
159 #define  MACH_TOSHIBA_RBTX4937  5
160
161 #define GROUP_TOSHIBA_NAMES     { "Pallas", "TopasCE", "JMR", "JMR TX3927", \
162                                   "RBTX4927", "RBTX4937" }
163
164 /*
165  * Valid machtype for group Alchemy
166  */
167 #define MACH_GROUP_ALCHEMY     18       /* AMD Alchemy  */
168 #define  MACH_PB1000            0       /* Au1000-based eval board */
169 #define  MACH_PB1100            1       /* Au1100-based eval board */
170 #define  MACH_PB1500            2       /* Au1500-based eval board */
171 #define  MACH_DB1000            3       /* Au1000-based eval board */
172 #define  MACH_DB1100            4       /* Au1100-based eval board */
173 #define  MACH_DB1500            5       /* Au1500-based eval board */
174 #define  MACH_XXS1500           6       /* Au1500-based eval board */
175 #define  MACH_MTX1              7       /* 4G MTX-1 Au1500-based board */
176 #define  MACH_PB1550            8       /* Au1550-based eval board */
177
178 /*
179  * Valid machtype for group NEC_VR41XX
180  *
181  * Various NEC-based devices.
182  *
183  * FIXME: MACH_GROUPs should be by _MANUFACTURER_ of * the device, not by
184  *        technical properties, so no new additions to this group.
185  */
186 #define MACH_GROUP_NEC_VR41XX  19
187 #define  MACH_NEC_OSPREY        0       /* Osprey eval board */
188 #define  MACH_NEC_EAGLE         1       /* NEC Eagle/Hawk board */
189 #define  MACH_ZAO_CAPCELLA      2       /* ZAO Networks Capcella */
190 #define  MACH_VICTOR_MPC30X     3       /* Victor MP-C303/304 */
191 #define  MACH_IBM_WORKPAD       4       /* IBM WorkPad z50 */
192 #define  MACH_CASIO_E55         5       /* CASIO CASSIOPEIA E-10/15/55/65 */
193 #define  MACH_TANBAC_TB0226     6       /* TANBAC TB0226 (Mbase) */
194 #define  MACH_TANBAC_TB0229     7       /* TANBAC TB0229 (VR4131DIMM) */
195
196 #define MACH_GROUP_HP_LJ        20      /* Hewlett Packard LaserJet     */
197 #define  MACH_HP_LASERJET       1
198
199 /*
200  * Valid machtype for group LASAT
201  */
202 #define MACH_GROUP_LASAT       21
203 #define  MACH_LASAT_100         0       /* Masquerade II/SP100/SP50/SP25 */
204 #define  MACH_LASAT_200         1       /* Masquerade PRO/SP200 */
205
206 /*
207  * Valid machtype for group TITAN
208  */
209 #define MACH_GROUP_TITAN       22       /* PMC-Sierra Titan             */
210 #define  MACH_TITAN_YOSEMITE    1       /* PMC-Sierra Yosemite          */
211
212 #define CL_SIZE                 (256)
213
214 const char *get_system_type(void);
215
216 extern unsigned long mips_machtype;
217 extern unsigned long mips_machgroup;
218
219 #define BOOT_MEM_MAP_MAX        32
220 #define BOOT_MEM_RAM            1
221 #define BOOT_MEM_ROM_DATA       2
222 #define BOOT_MEM_RESERVED       3
223
224 /*
225  * A memory map that's built upon what was determined
226  * or specified on the command line.
227  */
228 struct boot_mem_map {
229         int nr_map;
230         struct boot_mem_map_entry {
231                 phys_t addr;    /* start of memory segment */
232                 phys_t size;    /* size of memory segment */
233                 long type;              /* type of memory segment */
234         } map[BOOT_MEM_MAP_MAX];
235 };
236
237 extern struct boot_mem_map boot_mem_map;
238
239 extern void add_memory_region(phys_t start, phys_t size, long type);
240
241 extern void prom_init(void);
242
243 /*
244  * Initial kernel command line, usually setup by prom_init()
245  */
246 extern char arcs_cmdline[CL_SIZE];
247
248 /*
249  * Registers a0, a1, a3 and a4 as passed to the kenrel entry by firmware
250  */
251 extern unsigned long fw_arg0, fw_arg1, fw_arg2, fw_arg3;
252 #endif /* _ASM_BOOTINFO_H */