blob: b2dd9b33de8fd3c50685fa59b24bb2b3b4c0a0e3 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
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/*
Ralf Baechle05dc8c02007-10-11 23:46:08 +010018 * 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.
Linus Torvalds1da177e2005-04-16 15:20:36 -070021 */
22
23/*
24 * Valid machtype values for group unknown
25 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070026#define MACH_UNKNOWN 0 /* whatever... */
27
28/*
29 * Valid machtype values for group JAZZ
30 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070031#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 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070038#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 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070053#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 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070059#define MACH_SNI_RM200_PCI 0 /* RM200/RM300/RM400 PCI series */
60
61/*
62 * Valid machtype for group ACN
63 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070064#define MACH_ACN_MIPS_BOARD 0 /* ACN MIPS single board */
65
66/*
67 * Valid machtype for group SGI
68 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070069#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 */
Thiemo Seufer45520742005-07-08 07:36:51 +000073#define MACH_SGI_IP30 4 /* Octane, Octane2 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070074
75/*
76 * Valid machtype for group COBALT
77 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070078#define MACH_COBALT_27 0 /* Proto "27" hardware */
79
80/*
Linus Torvalds1da177e2005-04-16 15:20:36 -070081 * Valid machtype for group BAGET
82 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070083#define MACH_BAGET201 0 /* BT23-201 */
84#define MACH_BAGET202 1 /* BT23-202 */
85
86/*
87 * Cosine boards.
88 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070089#define MACH_COSINE_ORION 0
90
91/*
Linus Torvalds1da177e2005-04-16 15:20:36 -070092 * Valid machtype for group MOMENCO
93 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070094#define MACH_MOMENCO_OCELOT 0
Franck Bui-Huu1e54f772007-05-07 18:01:51 +020095#define MACH_MOMENCO_OCELOT_G 1 /* no more supported (may 2007) */
Franck Bui-Huu192cca62007-06-11 15:08:55 +020096#define MACH_MOMENCO_OCELOT_C 2 /* no more supported (jun 2007) */
Franck Bui-Huubef964e2007-05-07 18:01:52 +020097#define MACH_MOMENCO_JAGUAR_ATX 3 /* no more supported (may 2007) */
Linus Torvalds1da177e2005-04-16 15:20:36 -070098#define MACH_MOMENCO_OCELOT_3 4
99
100/*
Linus Torvalds1da177e2005-04-16 15:20:36 -0700101 * Valid machtype for group PHILIPS
102 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700103#define MACH_PHILIPS_NINO 0 /* Nino */
104#define MACH_PHILIPS_VELO 1 /* Velo */
Pete Popovbdf21b12005-07-14 17:47:57 +0000105#define MACH_PHILIPS_JBS 2 /* JBS */
Vitaly Woolf0647a52006-12-08 11:40:35 +0300106#define MACH_PHILIPS_STB810 3 /* STB810 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700107
108/*
Linus Torvalds1da177e2005-04-16 15:20:36 -0700109 * Valid machtype for group SIBYTE
110 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700111#define MACH_SWARM 0
112
113/*
114 * Valid machtypes for group Toshiba
115 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700116#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
Ralf Baechle23fbee92005-07-25 22:45:45 +0000122#define MACH_TOSHIBA_RBTX4938 6
Linus Torvalds1da177e2005-04-16 15:20:36 -0700123
Linus Torvalds1da177e2005-04-16 15:20:36 -0700124/*
125 * Valid machtype for group Alchemy
126 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700127#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 */
Pete Popove3ad1c22005-03-01 06:33:16 +0000137#define MACH_PB1200 10 /* Au1200-based eval board */
138#define MACH_DB1200 11 /* Au1200-based eval board */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700139
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 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700148#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
Linus Torvalds1da177e2005-04-16 15:20:36 -0700158#define MACH_HP_LASERJET 1
159
160/*
Brian Murphy1f21d2b2007-08-21 22:34:16 +0200161 * Valid machtype for group LASAT
162 */
Brian Murphy1f21d2b2007-08-21 22:34:16 +0200163#define MACH_LASAT_100 0 /* Masquerade II/SP100/SP50/SP25 */
164#define MACH_LASAT_200 1 /* Masquerade PRO/SP200 */
165
166/*
Linus Torvalds1da177e2005-04-16 15:20:36 -0700167 * Valid machtype for group TITAN
168 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700169#define MACH_TITAN_YOSEMITE 1 /* PMC-Sierra Yosemite */
Ralf Baechle35189fa2006-06-18 16:39:46 +0100170#define MACH_TITAN_EXCITE 2 /* Basler eXcite */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700171
dmitry pervushin355c4712006-05-21 14:53:06 +0400172/*
173 * Valid machtype for group NEC EMMA2RH
174 */
dmitry pervushin355c4712006-05-21 14:53:06 +0400175#define MACH_NEC_MARKEINS 0 /* NEC EMMA2RH Mark-eins */
176
Songmao Tian42d226c2007-06-06 14:52:38 +0800177/*
178 * Valid machtype for group LEMOTE
179 */
Songmao Tian42d226c2007-06-06 14:52:38 +0800180#define MACH_LEMOTE_FULONG 0
181
Marc St-Jean9267a302007-06-14 15:55:31 -0600182/*
183 * Valid machtype for group PMC-MSP
184 */
Marc St-Jean9267a302007-06-14 15:55:31 -0600185#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
Ralf Baechle569fb752007-07-10 16:56:33 +0100193#define MACH_WRPPMC 1
194
Aurelien Jarno1c0c13e2007-09-25 15:40:12 +0200195/*
196 * Valid machtype for group Broadcom
197 */
198#define MACH_GROUP_BRCM 23 /* Broadcom */
199#define MACH_BCM47XX 1 /* Broadcom BCM47XX */
200
Linus Torvalds1da177e2005-04-16 15:20:36 -0700201#define CL_SIZE COMMAND_LINE_SIZE
202
203const char *get_system_type(void);
204
205extern unsigned long mips_machtype;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700206
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 */
216struct 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
225extern struct boot_mem_map boot_mem_map;
226
227extern void add_memory_region(phys_t start, phys_t size, long type);
228
229extern void prom_init(void);
Atsushi Nemotoc44e8d52006-12-30 00:43:59 +0900230extern void prom_free_prom_memory(void);
231
232extern void free_init_pages(const char *what,
233 unsigned long begin, unsigned long end);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700234
235/*
236 * Initial kernel command line, usually setup by prom_init()
237 */
238extern char arcs_cmdline[CL_SIZE];
239
240/*
Robert P. J. Daybeb7dd82007-05-09 07:14:03 +0200241 * Registers a0, a1, a3 and a4 as passed to the kernel entry by firmware
Linus Torvalds1da177e2005-04-16 15:20:36 -0700242 */
243extern unsigned long fw_arg0, fw_arg1, fw_arg2, fw_arg3;
Ralf Baechle2925aba2006-06-18 01:32:22 +0100244
245/*
246 * Platform memory detection hook called by setup_arch
247 */
248extern void plat_mem_setup(void);
249
Linus Torvalds1da177e2005-04-16 15:20:36 -0700250#endif /* _ASM_BOOTINFO_H */