Blame view

include/asm-arm/setup.h 4.58 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  /*
   *  linux/include/asm/setup.h
   *
   *  Copyright (C) 1997-1999 Russell King
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU General Public License version 2 as
   * published by the Free Software Foundation.
   *
   *  Structure passed to kernel to tell it about the
   *  hardware it's running on.  See Documentation/arm/Setup
   *  for more info.
   */
  #ifndef __ASMARM_SETUP_H
  #define __ASMARM_SETUP_H
7d1362c0d   Adrian Bunk   [PATCH] cleanup a...
16
  #include <asm/types.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
17
18
19
20
21
22
  #define COMMAND_LINE_SIZE 1024
  
  /* The list ends with an ATAG_NONE node. */
  #define ATAG_NONE	0x00000000
  
  struct tag_header {
7d1362c0d   Adrian Bunk   [PATCH] cleanup a...
23
24
  	__u32 size;
  	__u32 tag;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
25
26
27
28
29
30
  };
  
  /* The list must start with an ATAG_CORE node */
  #define ATAG_CORE	0x54410001
  
  struct tag_core {
7d1362c0d   Adrian Bunk   [PATCH] cleanup a...
31
32
33
  	__u32 flags;		/* bit 0 = read-only */
  	__u32 pagesize;
  	__u32 rootdev;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
34
35
36
37
38
39
  };
  
  /* it is allowed to have multiple ATAG_MEM nodes */
  #define ATAG_MEM	0x54410002
  
  struct tag_mem32 {
7d1362c0d   Adrian Bunk   [PATCH] cleanup a...
40
41
  	__u32	size;
  	__u32	start;	/* physical start address */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
42
43
44
45
46
47
  };
  
  /* VGA text type displays */
  #define ATAG_VIDEOTEXT	0x54410003
  
  struct tag_videotext {
7d1362c0d   Adrian Bunk   [PATCH] cleanup a...
48
49
50
51
52
53
54
55
56
  	__u8		x;
  	__u8		y;
  	__u16		video_page;
  	__u8		video_mode;
  	__u8		video_cols;
  	__u16		video_ega_bx;
  	__u8		video_lines;
  	__u8		video_isvga;
  	__u16		video_points;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
57
58
59
60
61
62
  };
  
  /* describes how the ramdisk will be used in kernel */
  #define ATAG_RAMDISK	0x54410004
  
  struct tag_ramdisk {
7d1362c0d   Adrian Bunk   [PATCH] cleanup a...
63
64
65
  	__u32 flags;	/* bit 0 = load, bit 1 = prompt */
  	__u32 size;	/* decompressed ramdisk size in _kilo_ bytes */
  	__u32 start;	/* starting block of floppy-based RAM disk image */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
66
67
68
69
70
71
72
73
74
75
76
77
78
  };
  
  /* describes where the compressed ramdisk image lives (virtual address) */
  /*
   * this one accidentally used virtual addresses - as such,
   * it's deprecated.
   */
  #define ATAG_INITRD	0x54410005
  
  /* describes where the compressed ramdisk image lives (physical address) */
  #define ATAG_INITRD2	0x54420005
  
  struct tag_initrd {
7d1362c0d   Adrian Bunk   [PATCH] cleanup a...
79
80
  	__u32 start;	/* physical start address */
  	__u32 size;	/* size of compressed ramdisk image in bytes */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
81
82
83
84
85
86
  };
  
  /* board serial number. "64 bits should be enough for everybody" */
  #define ATAG_SERIAL	0x54410006
  
  struct tag_serialnr {
7d1362c0d   Adrian Bunk   [PATCH] cleanup a...
87
88
  	__u32 low;
  	__u32 high;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
89
90
91
92
93
94
  };
  
  /* board revision */
  #define ATAG_REVISION	0x54410007
  
  struct tag_revision {
7d1362c0d   Adrian Bunk   [PATCH] cleanup a...
95
  	__u32 rev;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
96
97
98
99
100
101
102
103
  };
  
  /* initial values for vesafb-type framebuffers. see struct screen_info
   * in include/linux/tty.h
   */
  #define ATAG_VIDEOLFB	0x54410008
  
  struct tag_videolfb {
7d1362c0d   Adrian Bunk   [PATCH] cleanup a...
104
105
106
107
108
109
110
111
112
113
114
115
116
117
  	__u16		lfb_width;
  	__u16		lfb_height;
  	__u16		lfb_depth;
  	__u16		lfb_linelength;
  	__u32		lfb_base;
  	__u32		lfb_size;
  	__u8		red_size;
  	__u8		red_pos;
  	__u8		green_size;
  	__u8		green_pos;
  	__u8		blue_size;
  	__u8		blue_pos;
  	__u8		rsvd_size;
  	__u8		rsvd_pos;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
118
119
120
121
122
123
124
125
126
127
128
129
130
  };
  
  /* command line: \0 terminated string */
  #define ATAG_CMDLINE	0x54410009
  
  struct tag_cmdline {
  	char	cmdline[1];	/* this is the minimum size */
  };
  
  /* acorn RiscPC specific information */
  #define ATAG_ACORN	0x41000101
  
  struct tag_acorn {
7d1362c0d   Adrian Bunk   [PATCH] cleanup a...
131
132
133
134
  	__u32 memc_control_reg;
  	__u32 vram_pages;
  	__u8 sounddefault;
  	__u8 adfsdrives;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
135
136
137
138
139
140
  };
  
  /* footbridge memory clock, see arch/arm/mach-footbridge/arch.c */
  #define ATAG_MEMCLK	0x41000402
  
  struct tag_memclk {
7d1362c0d   Adrian Bunk   [PATCH] cleanup a...
141
  	__u32 fmemclk;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
  };
  
  struct tag {
  	struct tag_header hdr;
  	union {
  		struct tag_core		core;
  		struct tag_mem32	mem;
  		struct tag_videotext	videotext;
  		struct tag_ramdisk	ramdisk;
  		struct tag_initrd	initrd;
  		struct tag_serialnr	serialnr;
  		struct tag_revision	revision;
  		struct tag_videolfb	videolfb;
  		struct tag_cmdline	cmdline;
  
  		/*
  		 * Acorn specific
  		 */
  		struct tag_acorn	acorn;
  
  		/*
  		 * DC21285 specific
  		 */
  		struct tag_memclk	memclk;
  	} u;
  };
  
  struct tagtable {
7d1362c0d   Adrian Bunk   [PATCH] cleanup a...
170
  	__u32 tag;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
171
172
  	int (*parse)(const struct tag *);
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
173
174
175
  #define tag_member_present(tag,member)				\
  	((unsigned long)(&((struct tag *)0L)->member + 1)	\
  		<= (tag)->hdr.size * 4)
7d1362c0d   Adrian Bunk   [PATCH] cleanup a...
176
  #define tag_next(t)	((struct tag *)((__u32 *)(t) + (t)->hdr.size))
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
177
178
179
180
  #define tag_size(type)	((sizeof(struct tag_header) + sizeof(struct type)) >> 2)
  
  #define for_each_tag(t,base)		\
  	for (t = base; t->hdr.size; t = tag_next(t))
7d1362c0d   Adrian Bunk   [PATCH] cleanup a...
181
182
183
184
185
  #ifdef __KERNEL__
  
  #define __tag __attribute_used__ __attribute__((__section__(".taglist.init")))
  #define __tagtable(tag, fn) \
  static struct tagtable __tagtable_##fn __tag = { tag, fn }
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
186
187
188
189
190
191
192
193
  /*
   * Memory map description
   */
  #ifdef CONFIG_ARCH_LH7A40X
  # define NR_BANKS 16
  #else
  # define NR_BANKS 8
  #endif
456335e20   Russell King   [ARM] Separate pa...
194
195
196
197
198
  struct membank {
  	unsigned long start;
  	unsigned long size;
  	int           node;
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
199
200
  struct meminfo {
  	int nr_banks;
456335e20   Russell King   [ARM] Separate pa...
201
  	struct membank bank[NR_BANKS];
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
202
203
204
205
206
207
208
209
210
211
212
213
  };
  
  /*
   * Early command line parameters.
   */
  struct early_params {
  	const char *arg;
  	void (*fn)(char **p);
  };
  
  #define __early_param(name,fn)					\
  static struct early_params __early_##fn __attribute_used__	\
bfe6815e0   Ben Dooks   [ARM] 2925/3: ear...
214
  __attribute__((__section__(".early_param.init"))) = { name, fn }
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
215

7d1362c0d   Adrian Bunk   [PATCH] cleanup a...
216
  #endif  /*  __KERNEL__  */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
217
  #endif