Merge branches 'release' and 'gpe-ack' into release
[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 SNI_RM
52  */
53 #define  MACH_SNI_RM200_PCI     0       /* RM200/RM300/RM400 PCI series */
54
55 /*
56  * Valid machtype for group SGI
57  */
58 #define  MACH_SGI_IP22          0       /* Indy, Indigo2, Challenge S   */
59 #define  MACH_SGI_IP27          1       /* Origin 200, Origin 2000, Onyx 2 */
60 #define  MACH_SGI_IP28          2       /* Indigo2 Impact               */
61 #define  MACH_SGI_IP32          3       /* O2                           */
62 #define  MACH_SGI_IP30          4       /* Octane, Octane2              */
63
64 /*
65  * Valid machtypes for group Toshiba
66  */
67 #define  MACH_PALLAS            0
68 #define  MACH_TOPAS             1
69 #define  MACH_JMR               2
70 #define  MACH_TOSHIBA_JMR3927   3       /* JMR-TX3927 CPU/IO board */
71 #define  MACH_TOSHIBA_RBTX4927  4
72 #define  MACH_TOSHIBA_RBTX4937  5
73 #define  MACH_TOSHIBA_RBTX4938  6
74
75 /*
76  * Valid machtype for group LASAT
77  */
78 #define  MACH_LASAT_100         0       /* Masquerade II/SP100/SP50/SP25 */
79 #define  MACH_LASAT_200         1       /* Masquerade PRO/SP200 */
80
81 /*
82  * Valid machtype for group NEC EMMA2RH
83  */
84 #define  MACH_NEC_MARKEINS      0       /* NEC EMMA2RH Mark-eins        */
85
86 /*
87  * Valid machtype for group PMC-MSP
88  */
89 #define MACH_MSP4200_EVAL       0       /* PMC-Sierra MSP4200 Evaluation */
90 #define MACH_MSP4200_GW         1       /* PMC-Sierra MSP4200 Gateway demo */
91 #define MACH_MSP4200_FPGA       2       /* PMC-Sierra MSP4200 Emulation */
92 #define MACH_MSP7120_EVAL       3       /* PMC-Sierra MSP7120 Evaluation */
93 #define MACH_MSP7120_GW         4       /* PMC-Sierra MSP7120 Residential GW */
94 #define MACH_MSP7120_FPGA       5       /* PMC-Sierra MSP7120 Emulation */
95 #define MACH_MSP_OTHER        255       /* PMC-Sierra unknown board type */
96
97 #define CL_SIZE                 COMMAND_LINE_SIZE
98
99 extern char *system_type;
100 const char *get_system_type(void);
101
102 extern unsigned long mips_machtype;
103
104 #define BOOT_MEM_MAP_MAX        32
105 #define BOOT_MEM_RAM            1
106 #define BOOT_MEM_ROM_DATA       2
107 #define BOOT_MEM_RESERVED       3
108
109 /*
110  * A memory map that's built upon what was determined
111  * or specified on the command line.
112  */
113 struct boot_mem_map {
114         int nr_map;
115         struct boot_mem_map_entry {
116                 phys_t addr;    /* start of memory segment */
117                 phys_t size;    /* size of memory segment */
118                 long type;              /* type of memory segment */
119         } map[BOOT_MEM_MAP_MAX];
120 };
121
122 extern struct boot_mem_map boot_mem_map;
123
124 extern void add_memory_region(phys_t start, phys_t size, long type);
125
126 extern void prom_init(void);
127 extern void prom_free_prom_memory(void);
128
129 extern void free_init_pages(const char *what,
130                             unsigned long begin, unsigned long end);
131
132 /*
133  * Initial kernel command line, usually setup by prom_init()
134  */
135 extern char arcs_cmdline[CL_SIZE];
136
137 /*
138  * Registers a0, a1, a3 and a4 as passed to the kernel entry by firmware
139  */
140 extern unsigned long fw_arg0, fw_arg1, fw_arg2, fw_arg3;
141
142 /*
143  * Platform memory detection hook called by setup_arch
144  */
145 extern void plat_mem_setup(void);
146
147 #endif /* _ASM_BOOTINFO_H */