b2dd9b33de8fd3c50685fa59b24bb2b3b4c0a0e3
[pandora-kernel.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 #include <asm/setup.h>
16
17 /*
18  * The MACH_ IDs are sort of equivalent to PCI product IDs.  As such the
19  * numbers do not necessarily reflect technical relations or similarities
20  * between systems.
21  */
22
23 /*
24  * Valid machtype values for group unknown
25  */
26 #define  MACH_UNKNOWN           0       /* whatever...                  */
27
28 /*
29  * Valid machtype values for group JAZZ
30  */
31 #define  MACH_ACER_PICA_61      0       /* Acer PICA-61 (PICA1)         */
32 #define  MACH_MIPS_MAGNUM_4000  1       /* Mips Magnum 4000 "RC4030"    */
33 #define  MACH_OLIVETTI_M700     2       /* Olivetti M700-10 (-15 ??)    */
34
35 /*
36  * Valid machtype for group DEC
37  */
38 #define  MACH_DSUNKNOWN         0
39 #define  MACH_DS23100           1       /* DECstation 2100 or 3100      */
40 #define  MACH_DS5100            2       /* DECsystem 5100               */
41 #define  MACH_DS5000_200        3       /* DECstation 5000/200          */
42 #define  MACH_DS5000_1XX        4       /* DECstation 5000/120, 125, 133, 150 */
43 #define  MACH_DS5000_XX         5       /* DECstation 5000/20, 25, 33, 50 */
44 #define  MACH_DS5000_2X0        6       /* DECstation 5000/240, 260     */
45 #define  MACH_DS5400            7       /* DECsystem 5400               */
46 #define  MACH_DS5500            8       /* DECsystem 5500               */
47 #define  MACH_DS5800            9       /* DECsystem 5800               */
48 #define  MACH_DS5900            10      /* DECsystem 5900               */
49
50 /*
51  * Valid machtype for group ARC
52  */
53 #define MACH_DESKSTATION_RPC44  0       /* Deskstation rPC44 */
54 #define MACH_DESKSTATION_TYNE   1       /* Deskstation Tyne */
55
56 /*
57  * Valid machtype for group SNI_RM
58  */
59 #define  MACH_SNI_RM200_PCI     0       /* RM200/RM300/RM400 PCI series */
60
61 /*
62  * Valid machtype for group ACN
63  */
64 #define  MACH_ACN_MIPS_BOARD    0       /* ACN MIPS single board        */
65
66 /*
67  * Valid machtype for group SGI
68  */
69 #define  MACH_SGI_IP22          0       /* Indy, Indigo2, Challenge S   */
70 #define  MACH_SGI_IP27          1       /* Origin 200, Origin 2000, Onyx 2 */
71 #define  MACH_SGI_IP28          2       /* Indigo2 Impact               */
72 #define  MACH_SGI_IP32          3       /* O2                           */
73 #define  MACH_SGI_IP30          4       /* Octane, Octane2              */
74
75 /*
76  * Valid machtype for group COBALT
77  */
78 #define  MACH_COBALT_27         0       /* Proto "27" hardware          */
79
80 /*
81  * Valid machtype for group BAGET
82  */
83 #define  MACH_BAGET201          0       /* BT23-201 */
84 #define  MACH_BAGET202          1       /* BT23-202 */
85
86 /*
87  * Cosine boards.
88  */
89 #define  MACH_COSINE_ORION      0
90
91 /*
92  * Valid machtype for group MOMENCO
93  */
94 #define  MACH_MOMENCO_OCELOT    0
95 #define  MACH_MOMENCO_OCELOT_G  1       /* no more supported (may 2007) */
96 #define  MACH_MOMENCO_OCELOT_C  2       /* no more supported (jun 2007) */
97 #define  MACH_MOMENCO_JAGUAR_ATX 3      /* no more supported (may 2007) */
98 #define  MACH_MOMENCO_OCELOT_3  4
99
100 /*
101  * Valid machtype for group PHILIPS
102  */
103 #define  MACH_PHILIPS_NINO      0       /* Nino */
104 #define  MACH_PHILIPS_VELO      1       /* Velo */
105 #define  MACH_PHILIPS_JBS       2       /* JBS */
106 #define  MACH_PHILIPS_STB810    3       /* STB810 */
107
108 /*
109  * Valid machtype for group SIBYTE
110  */
111 #define  MACH_SWARM              0
112
113 /*
114  * Valid machtypes for group Toshiba
115  */
116 #define  MACH_PALLAS            0
117 #define  MACH_TOPAS             1
118 #define  MACH_JMR               2
119 #define  MACH_TOSHIBA_JMR3927   3       /* JMR-TX3927 CPU/IO board */
120 #define  MACH_TOSHIBA_RBTX4927  4
121 #define  MACH_TOSHIBA_RBTX4937  5
122 #define  MACH_TOSHIBA_RBTX4938  6
123
124 /*
125  * Valid machtype for group Alchemy
126  */
127 #define  MACH_PB1000            0       /* Au1000-based eval board */
128 #define  MACH_PB1100            1       /* Au1100-based eval board */
129 #define  MACH_PB1500            2       /* Au1500-based eval board */
130 #define  MACH_DB1000            3       /* Au1000-based eval board */
131 #define  MACH_DB1100            4       /* Au1100-based eval board */
132 #define  MACH_DB1500            5       /* Au1500-based eval board */
133 #define  MACH_XXS1500           6       /* Au1500-based eval board */
134 #define  MACH_MTX1              7       /* 4G MTX-1 Au1500-based board */
135 #define  MACH_PB1550            8       /* Au1550-based eval board */
136 #define  MACH_DB1550            9       /* Au1550-based eval board */
137 #define  MACH_PB1200            10       /* Au1200-based eval board */
138 #define  MACH_DB1200            11       /* Au1200-based eval board */
139
140 /*
141  * Valid machtype for group NEC_VR41XX
142  *
143  * Various NEC-based devices.
144  *
145  * FIXME: MACH_GROUPs should be by _MANUFACTURER_ of * the device, not by
146  *        technical properties, so no new additions to this group.
147  */
148 #define  MACH_NEC_OSPREY        0       /* Osprey eval board */
149 #define  MACH_NEC_EAGLE         1       /* NEC Eagle/Hawk board */
150 #define  MACH_ZAO_CAPCELLA      2       /* ZAO Networks Capcella */
151 #define  MACH_VICTOR_MPC30X     3       /* Victor MP-C303/304 */
152 #define  MACH_IBM_WORKPAD       4       /* IBM WorkPad z50 */
153 #define  MACH_CASIO_E55         5       /* CASIO CASSIOPEIA E-10/15/55/65 */
154 #define  MACH_TANBAC_TB0226     6       /* TANBAC TB0226 (Mbase) */
155 #define  MACH_TANBAC_TB0229     7       /* TANBAC TB0229 (VR4131DIMM) */
156 #define  MACH_NEC_CMBVR4133     8       /* CMB VR4133 Board */
157
158 #define  MACH_HP_LASERJET       1
159
160 /*
161  * Valid machtype for group LASAT
162  */
163 #define  MACH_LASAT_100         0       /* Masquerade II/SP100/SP50/SP25 */
164 #define  MACH_LASAT_200         1       /* Masquerade PRO/SP200 */
165
166 /*
167  * Valid machtype for group TITAN
168  */
169 #define  MACH_TITAN_YOSEMITE    1       /* PMC-Sierra Yosemite          */
170 #define  MACH_TITAN_EXCITE      2       /* Basler eXcite                */
171
172 /*
173  * Valid machtype for group NEC EMMA2RH
174  */
175 #define  MACH_NEC_MARKEINS      0       /* NEC EMMA2RH Mark-eins        */
176
177 /*
178  * Valid machtype for group LEMOTE
179  */
180 #define  MACH_LEMOTE_FULONG        0
181
182 /*
183  * Valid machtype for group PMC-MSP
184  */
185 #define MACH_MSP4200_EVAL       0       /* PMC-Sierra MSP4200 Evaluation */
186 #define MACH_MSP4200_GW         1       /* PMC-Sierra MSP4200 Gateway demo */
187 #define MACH_MSP4200_FPGA       2       /* PMC-Sierra MSP4200 Emulation */
188 #define MACH_MSP7120_EVAL       3       /* PMC-Sierra MSP7120 Evaluation */
189 #define MACH_MSP7120_GW         4       /* PMC-Sierra MSP7120 Residential GW */
190 #define MACH_MSP7120_FPGA       5       /* PMC-Sierra MSP7120 Emulation */
191 #define MACH_MSP_OTHER        255       /* PMC-Sierra unknown board type */
192
193 #define MACH_WRPPMC             1
194
195 /*
196  * Valid machtype for group Broadcom
197  */
198 #define MACH_GROUP_BRCM         23      /* Broadcom                     */
199 #define  MACH_BCM47XX           1       /* Broadcom BCM47XX             */
200
201 #define CL_SIZE                 COMMAND_LINE_SIZE
202
203 const char *get_system_type(void);
204
205 extern unsigned long mips_machtype;
206
207 #define BOOT_MEM_MAP_MAX        32
208 #define BOOT_MEM_RAM            1
209 #define BOOT_MEM_ROM_DATA       2
210 #define BOOT_MEM_RESERVED       3
211
212 /*
213  * A memory map that's built upon what was determined
214  * or specified on the command line.
215  */
216 struct boot_mem_map {
217         int nr_map;
218         struct boot_mem_map_entry {
219                 phys_t addr;    /* start of memory segment */
220                 phys_t size;    /* size of memory segment */
221                 long type;              /* type of memory segment */
222         } map[BOOT_MEM_MAP_MAX];
223 };
224
225 extern struct boot_mem_map boot_mem_map;
226
227 extern void add_memory_region(phys_t start, phys_t size, long type);
228
229 extern void prom_init(void);
230 extern void prom_free_prom_memory(void);
231
232 extern void free_init_pages(const char *what,
233                             unsigned long begin, unsigned long end);
234
235 /*
236  * Initial kernel command line, usually setup by prom_init()
237  */
238 extern char arcs_cmdline[CL_SIZE];
239
240 /*
241  * Registers a0, a1, a3 and a4 as passed to the kernel entry by firmware
242  */
243 extern unsigned long fw_arg0, fw_arg1, fw_arg2, fw_arg3;
244
245 /*
246  * Platform memory detection hook called by setup_arch
247  */
248 extern void plat_mem_setup(void);
249
250 #endif /* _ASM_BOOTINFO_H */