Commit f6dfc80554b27da11dbb36ebae166b23ec3aa9ca

Authored by David Gibson
Committed by Paul Mackerras
1 parent ea20ff5d03

[POWERPC] Support for the Ebony 440GP reference board in arch/powerpc

This adds platform support code for the Ebony (440GP) evaluation
board.  This includes both code in arch/powerpc/platforms/44x for
board initialization, and zImage wrapper code to correctly tweak the
flattened device tree based on information from the firmware.  The
zImage supports both IBM OpenBIOS (aka "treeboot") and old versions of
uboot which don't support a flattened device tree.

Signed-off-by: David Gibson <dwg@au1.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>

Showing 15 changed files with 1418 additions and 11 deletions Inline Diff

arch/powerpc/Kconfig
1 # For a description of the syntax of this configuration file, 1 # For a description of the syntax of this configuration file,
2 # see Documentation/kbuild/kconfig-language.txt. 2 # see Documentation/kbuild/kconfig-language.txt.
3 # 3 #
4 4
5 mainmenu "Linux/PowerPC Kernel Configuration" 5 mainmenu "Linux/PowerPC Kernel Configuration"
6 6
7 config PPC64 7 config PPC64
8 bool "64-bit kernel" 8 bool "64-bit kernel"
9 default n 9 default n
10 help 10 help
11 This option selects whether a 32-bit or a 64-bit kernel 11 This option selects whether a 32-bit or a 64-bit kernel
12 will be built. 12 will be built.
13 13
14 config PPC_PM_NEEDS_RTC_LIB 14 config PPC_PM_NEEDS_RTC_LIB
15 bool 15 bool
16 select RTC_LIB 16 select RTC_LIB
17 default y if PM 17 default y if PM
18 18
19 config PPC32 19 config PPC32
20 bool 20 bool
21 default y if !PPC64 21 default y if !PPC64
22 22
23 config 64BIT 23 config 64BIT
24 bool 24 bool
25 default y if PPC64 25 default y if PPC64
26 26
27 config PPC_MERGE 27 config PPC_MERGE
28 def_bool y 28 def_bool y
29 29
30 config MMU 30 config MMU
31 bool 31 bool
32 default y 32 default y
33 33
34 config GENERIC_HARDIRQS 34 config GENERIC_HARDIRQS
35 bool 35 bool
36 default y 36 default y
37 37
38 config IRQ_PER_CPU 38 config IRQ_PER_CPU
39 bool 39 bool
40 default y 40 default y
41 41
42 config RWSEM_GENERIC_SPINLOCK 42 config RWSEM_GENERIC_SPINLOCK
43 bool 43 bool
44 44
45 config RWSEM_XCHGADD_ALGORITHM 45 config RWSEM_XCHGADD_ALGORITHM
46 bool 46 bool
47 default y 47 default y
48 48
49 config ARCH_HAS_ILOG2_U32 49 config ARCH_HAS_ILOG2_U32
50 bool 50 bool
51 default y 51 default y
52 52
53 config ARCH_HAS_ILOG2_U64 53 config ARCH_HAS_ILOG2_U64
54 bool 54 bool
55 default y if 64BIT 55 default y if 64BIT
56 56
57 config GENERIC_HWEIGHT 57 config GENERIC_HWEIGHT
58 bool 58 bool
59 default y 59 default y
60 60
61 config GENERIC_CALIBRATE_DELAY 61 config GENERIC_CALIBRATE_DELAY
62 bool 62 bool
63 default y 63 default y
64 64
65 config GENERIC_FIND_NEXT_BIT 65 config GENERIC_FIND_NEXT_BIT
66 bool 66 bool
67 default y 67 default y
68 68
69 config PPC 69 config PPC
70 bool 70 bool
71 default y 71 default y
72 72
73 config EARLY_PRINTK 73 config EARLY_PRINTK
74 bool 74 bool
75 default y 75 default y
76 76
77 config COMPAT 77 config COMPAT
78 bool 78 bool
79 default y if PPC64 79 default y if PPC64
80 80
81 config SYSVIPC_COMPAT 81 config SYSVIPC_COMPAT
82 bool 82 bool
83 depends on COMPAT && SYSVIPC 83 depends on COMPAT && SYSVIPC
84 default y 84 default y
85 85
86 # All PPC32s use generic nvram driver through ppc_md 86 # All PPC32s use generic nvram driver through ppc_md
87 config GENERIC_NVRAM 87 config GENERIC_NVRAM
88 bool 88 bool
89 default y if PPC32 89 default y if PPC32
90 90
91 config SCHED_NO_NO_OMIT_FRAME_POINTER 91 config SCHED_NO_NO_OMIT_FRAME_POINTER
92 bool 92 bool
93 default y 93 default y
94 94
95 config ARCH_MAY_HAVE_PC_FDC 95 config ARCH_MAY_HAVE_PC_FDC
96 bool 96 bool
97 default !PPC_PSERIES || PCI 97 default !PPC_PSERIES || PCI
98 98
99 config PPC_OF 99 config PPC_OF
100 def_bool y 100 def_bool y
101 101
102 config PPC_UDBG_16550 102 config PPC_UDBG_16550
103 bool 103 bool
104 default n 104 default n
105 105
106 config GENERIC_TBSYNC 106 config GENERIC_TBSYNC
107 bool 107 bool
108 default y if PPC32 && SMP 108 default y if PPC32 && SMP
109 default n 109 default n
110 110
111 config AUDIT_ARCH 111 config AUDIT_ARCH
112 bool 112 bool
113 default y 113 default y
114 114
115 config GENERIC_BUG 115 config GENERIC_BUG
116 bool 116 bool
117 default y 117 default y
118 depends on BUG 118 depends on BUG
119 119
120 config SYS_SUPPORTS_APM_EMULATION 120 config SYS_SUPPORTS_APM_EMULATION
121 bool 121 bool
122 122
123 # 123 #
124 # Powerpc uses the slab allocator to manage its ptes and the 124 # Powerpc uses the slab allocator to manage its ptes and the
125 # page structs of ptes are used for splitting the page table 125 # page structs of ptes are used for splitting the page table
126 # lock for configurations supporting more than SPLIT_PTLOCK_CPUS. 126 # lock for configurations supporting more than SPLIT_PTLOCK_CPUS.
127 # 127 #
128 # In that special configuration the page structs of slabs are modified. 128 # In that special configuration the page structs of slabs are modified.
129 # This setting disables the selection of SLUB as a slab allocator. 129 # This setting disables the selection of SLUB as a slab allocator.
130 # 130 #
131 config ARCH_USES_SLAB_PAGE_STRUCT 131 config ARCH_USES_SLAB_PAGE_STRUCT
132 bool 132 bool
133 default y 133 default y
134 depends on SPLIT_PTLOCK_CPUS <= NR_CPUS 134 depends on SPLIT_PTLOCK_CPUS <= NR_CPUS
135 135
136 config DEFAULT_UIMAGE 136 config DEFAULT_UIMAGE
137 bool 137 bool
138 help 138 help
139 Used to allow a board to specify it wants a uImage built by default 139 Used to allow a board to specify it wants a uImage built by default
140 default n 140 default n
141 141
142 config PPC64_SWSUSP 142 config PPC64_SWSUSP
143 bool 143 bool
144 depends on PPC64 && (BROKEN || (PPC_PMAC64 && EXPERIMENTAL)) 144 depends on PPC64 && (BROKEN || (PPC_PMAC64 && EXPERIMENTAL))
145 default y 145 default y
146 146
147 menu "Processor support" 147 menu "Processor support"
148 choice 148 choice
149 prompt "Processor Type" 149 prompt "Processor Type"
150 depends on PPC32 150 depends on PPC32
151 default 6xx 151 default 6xx
152 152
153 config CLASSIC32 153 config CLASSIC32
154 bool "52xx/6xx/7xx/74xx" 154 bool "52xx/6xx/7xx/74xx"
155 select PPC_FPU 155 select PPC_FPU
156 select 6xx 156 select 6xx
157 help 157 help
158 There are four families of PowerPC chips supported. The more common 158 There are four families of PowerPC chips supported. The more common
159 types (601, 603, 604, 740, 750, 7400), the Motorola embedded 159 types (601, 603, 604, 740, 750, 7400), the Motorola embedded
160 versions (821, 823, 850, 855, 860, 52xx, 82xx, 83xx), the AMCC 160 versions (821, 823, 850, 855, 860, 52xx, 82xx, 83xx), the AMCC
161 embedded versions (403 and 405) and the high end 64 bit Power 161 embedded versions (403 and 405) and the high end 64 bit Power
162 processors (POWER 3, POWER4, and IBM PPC970 also known as G5). 162 processors (POWER 3, POWER4, and IBM PPC970 also known as G5).
163 163
164 This option is the catch-all for 6xx types, including some of the 164 This option is the catch-all for 6xx types, including some of the
165 embedded versions. Unless there is see an option for the specific 165 embedded versions. Unless there is see an option for the specific
166 chip family you are using, you want this option. 166 chip family you are using, you want this option.
167 167
168 You do not want this if you are building a kernel for a 64 bit 168 You do not want this if you are building a kernel for a 64 bit
169 IBM RS/6000 or an Apple G5, choose 6xx. 169 IBM RS/6000 or an Apple G5, choose 6xx.
170 170
171 If unsure, select this option 171 If unsure, select this option
172 172
173 Note that the kernel runs in 32-bit mode even on 64-bit chips. 173 Note that the kernel runs in 32-bit mode even on 64-bit chips.
174 174
175 config PPC_82xx 175 config PPC_82xx
176 bool "Freescale 82xx" 176 bool "Freescale 82xx"
177 select 6xx 177 select 6xx
178 select PPC_FPU 178 select PPC_FPU
179 179
180 config PPC_83xx 180 config PPC_83xx
181 bool "Freescale 83xx" 181 bool "Freescale 83xx"
182 select 6xx 182 select 6xx
183 select FSL_SOC 183 select FSL_SOC
184 select 83xx 184 select 83xx
185 select PPC_FPU 185 select PPC_FPU
186 select WANT_DEVICE_TREE 186 select WANT_DEVICE_TREE
187 187
188 config PPC_85xx 188 config PPC_85xx
189 bool "Freescale 85xx" 189 bool "Freescale 85xx"
190 select E500 190 select E500
191 select FSL_SOC 191 select FSL_SOC
192 select 85xx 192 select 85xx
193 select WANT_DEVICE_TREE 193 select WANT_DEVICE_TREE
194 194
195 config PPC_86xx 195 config PPC_86xx
196 bool "Freescale 86xx" 196 bool "Freescale 86xx"
197 select 6xx 197 select 6xx
198 select FSL_SOC 198 select FSL_SOC
199 select FSL_PCIE 199 select FSL_PCIE
200 select PPC_FPU 200 select PPC_FPU
201 select ALTIVEC 201 select ALTIVEC
202 help 202 help
203 The Freescale E600 SoCs have 74xx cores. 203 The Freescale E600 SoCs have 74xx cores.
204 204
205 config PPC_8xx 205 config PPC_8xx
206 bool "Freescale 8xx" 206 bool "Freescale 8xx"
207 select FSL_SOC 207 select FSL_SOC
208 select 8xx 208 select 8xx
209 209
210 config 40x 210 config 40x
211 bool "AMCC 40x" 211 bool "AMCC 40x"
212 select PPC_DCR_NATIVE 212 select PPC_DCR_NATIVE
213 213
214 config 44x 214 config 44x
215 bool "AMCC 44x" 215 bool "AMCC 44x"
216 select PPC_DCR_NATIVE 216 select PPC_DCR_NATIVE
217 select WANT_DEVICE_TREE
217 218
218 config E200 219 config E200
219 bool "Freescale e200" 220 bool "Freescale e200"
220 221
221 endchoice 222 endchoice
222 223
223 config POWER4_ONLY 224 config POWER4_ONLY
224 bool "Optimize for POWER4" 225 bool "Optimize for POWER4"
225 depends on PPC64 226 depends on PPC64
226 default n 227 default n
227 ---help--- 228 ---help---
228 Cause the compiler to optimize for POWER4/POWER5/PPC970 processors. 229 Cause the compiler to optimize for POWER4/POWER5/PPC970 processors.
229 The resulting binary will not work on POWER3 or RS64 processors 230 The resulting binary will not work on POWER3 or RS64 processors
230 when compiled with binutils 2.15 or later. 231 when compiled with binutils 2.15 or later.
231 232
232 config POWER3 233 config POWER3
233 bool 234 bool
234 depends on PPC64 235 depends on PPC64
235 default y if !POWER4_ONLY 236 default y if !POWER4_ONLY
236 237
237 config POWER4 238 config POWER4
238 depends on PPC64 239 depends on PPC64
239 def_bool y 240 def_bool y
240 241
241 config 6xx 242 config 6xx
242 bool 243 bool
243 244
244 # this is temp to handle compat with arch=ppc 245 # this is temp to handle compat with arch=ppc
245 config 8xx 246 config 8xx
246 bool 247 bool
247 248
248 # this is temp to handle compat with arch=ppc 249 # this is temp to handle compat with arch=ppc
249 config 83xx 250 config 83xx
250 bool 251 bool
251 252
252 # this is temp to handle compat with arch=ppc 253 # this is temp to handle compat with arch=ppc
253 config 85xx 254 config 85xx
254 bool 255 bool
255 256
256 config E500 257 config E500
257 bool 258 bool
258 259
259 config PPC_FPU 260 config PPC_FPU
260 bool 261 bool
261 default y if PPC64 262 default y if PPC64
262 263
263 config PPC_DCR_NATIVE 264 config PPC_DCR_NATIVE
264 bool 265 bool
265 default n 266 default n
266 267
267 config PPC_DCR_MMIO 268 config PPC_DCR_MMIO
268 bool 269 bool
269 default n 270 default n
270 271
271 config PPC_DCR 272 config PPC_DCR
272 bool 273 bool
273 depends on PPC_DCR_NATIVE || PPC_DCR_MMIO 274 depends on PPC_DCR_NATIVE || PPC_DCR_MMIO
274 default y 275 default y
275 276
276 config PPC_OF_PLATFORM_PCI 277 config PPC_OF_PLATFORM_PCI
277 bool 278 bool
278 depends on PPC64 # not supported on 32 bits yet 279 depends on PPC64 # not supported on 32 bits yet
279 default n 280 default n
280 281
282 config 4xx
283 bool
284 depends on 40x || 44x
285 default y
286
281 config BOOKE 287 config BOOKE
282 bool 288 bool
283 depends on E200 || E500 289 depends on E200 || E500 || 44x
284 default y 290 default y
285 291
286 config FSL_BOOKE 292 config FSL_BOOKE
287 bool 293 bool
288 depends on E200 || E500 294 depends on E200 || E500
289 default y 295 default y
290 296
291 config PTE_64BIT 297 config PTE_64BIT
292 bool 298 bool
293 depends on 44x || E500 299 depends on 44x || E500
294 default y if 44x 300 default y if 44x
295 default y if E500 && PHYS_64BIT 301 default y if E500 && PHYS_64BIT
296 302
297 config PHYS_64BIT 303 config PHYS_64BIT
298 bool 'Large physical address support' if E500 304 bool 'Large physical address support' if E500
299 depends on 44x || E500 305 depends on 44x || E500
300 select RESOURCES_64BIT 306 select RESOURCES_64BIT
301 default y if 44x 307 default y if 44x
302 ---help--- 308 ---help---
303 This option enables kernel support for larger than 32-bit physical 309 This option enables kernel support for larger than 32-bit physical
304 addresses. This features is not be available on all e500 cores. 310 addresses. This features is not be available on all e500 cores.
305 311
306 If in doubt, say N here. 312 If in doubt, say N here.
307 313
308 config ALTIVEC 314 config ALTIVEC
309 bool "AltiVec Support" 315 bool "AltiVec Support"
310 depends on CLASSIC32 || POWER4 316 depends on CLASSIC32 || POWER4
311 ---help--- 317 ---help---
312 This option enables kernel support for the Altivec extensions to the 318 This option enables kernel support for the Altivec extensions to the
313 PowerPC processor. The kernel currently supports saving and restoring 319 PowerPC processor. The kernel currently supports saving and restoring
314 altivec registers, and turning on the 'altivec enable' bit so user 320 altivec registers, and turning on the 'altivec enable' bit so user
315 processes can execute altivec instructions. 321 processes can execute altivec instructions.
316 322
317 This option is only usefully if you have a processor that supports 323 This option is only usefully if you have a processor that supports
318 altivec (G4, otherwise known as 74xx series), but does not have 324 altivec (G4, otherwise known as 74xx series), but does not have
319 any affect on a non-altivec cpu (it does, however add code to the 325 any affect on a non-altivec cpu (it does, however add code to the
320 kernel). 326 kernel).
321 327
322 If in doubt, say Y here. 328 If in doubt, say Y here.
323 329
324 config SPE 330 config SPE
325 bool "SPE Support" 331 bool "SPE Support"
326 depends on E200 || E500 332 depends on E200 || E500
327 default y 333 default y
328 ---help--- 334 ---help---
329 This option enables kernel support for the Signal Processing 335 This option enables kernel support for the Signal Processing
330 Extensions (SPE) to the PowerPC processor. The kernel currently 336 Extensions (SPE) to the PowerPC processor. The kernel currently
331 supports saving and restoring SPE registers, and turning on the 337 supports saving and restoring SPE registers, and turning on the
332 'spe enable' bit so user processes can execute SPE instructions. 338 'spe enable' bit so user processes can execute SPE instructions.
333 339
334 This option is only useful if you have a processor that supports 340 This option is only useful if you have a processor that supports
335 SPE (e500, otherwise known as 85xx series), but does not have any 341 SPE (e500, otherwise known as 85xx series), but does not have any
336 effect on a non-spe cpu (it does, however add code to the kernel). 342 effect on a non-spe cpu (it does, however add code to the kernel).
337 343
338 If in doubt, say Y here. 344 If in doubt, say Y here.
339 345
340 config PPC_STD_MMU 346 config PPC_STD_MMU
341 bool 347 bool
342 depends on 6xx || POWER3 || POWER4 || PPC64 348 depends on 6xx || POWER3 || POWER4 || PPC64
343 default y 349 default y
344 350
345 config PPC_STD_MMU_32 351 config PPC_STD_MMU_32
346 def_bool y 352 def_bool y
347 depends on PPC_STD_MMU && PPC32 353 depends on PPC_STD_MMU && PPC32
348 354
349 config VIRT_CPU_ACCOUNTING 355 config VIRT_CPU_ACCOUNTING
350 bool "Deterministic task and CPU time accounting" 356 bool "Deterministic task and CPU time accounting"
351 depends on PPC64 357 depends on PPC64
352 default y 358 default y
353 help 359 help
354 Select this option to enable more accurate task and CPU time 360 Select this option to enable more accurate task and CPU time
355 accounting. This is done by reading a CPU counter on each 361 accounting. This is done by reading a CPU counter on each
356 kernel entry and exit and on transitions within the kernel 362 kernel entry and exit and on transitions within the kernel
357 between system, softirq and hardirq state, so there is a 363 between system, softirq and hardirq state, so there is a
358 small performance impact. This also enables accounting of 364 small performance impact. This also enables accounting of
359 stolen time on logically-partitioned systems running on 365 stolen time on logically-partitioned systems running on
360 IBM POWER5-based machines. 366 IBM POWER5-based machines.
361 367
362 If in doubt, say Y here. 368 If in doubt, say Y here.
363 369
364 config SMP 370 config SMP
365 depends on PPC_STD_MMU 371 depends on PPC_STD_MMU
366 bool "Symmetric multi-processing support" 372 bool "Symmetric multi-processing support"
367 ---help--- 373 ---help---
368 This enables support for systems with more than one CPU. If you have 374 This enables support for systems with more than one CPU. If you have
369 a system with only one CPU, say N. If you have a system with more 375 a system with only one CPU, say N. If you have a system with more
370 than one CPU, say Y. Note that the kernel does not currently 376 than one CPU, say Y. Note that the kernel does not currently
371 support SMP machines with 603/603e/603ev or PPC750 ("G3") processors 377 support SMP machines with 603/603e/603ev or PPC750 ("G3") processors
372 since they have inadequate hardware support for multiprocessor 378 since they have inadequate hardware support for multiprocessor
373 operation. 379 operation.
374 380
375 If you say N here, the kernel will run on single and multiprocessor 381 If you say N here, the kernel will run on single and multiprocessor
376 machines, but will use only one CPU of a multiprocessor machine. If 382 machines, but will use only one CPU of a multiprocessor machine. If
377 you say Y here, the kernel will run on single-processor machines. 383 you say Y here, the kernel will run on single-processor machines.
378 On a single-processor machine, the kernel will run faster if you say 384 On a single-processor machine, the kernel will run faster if you say
379 N here. 385 N here.
380 386
381 If you don't know what to do here, say N. 387 If you don't know what to do here, say N.
382 388
383 config NR_CPUS 389 config NR_CPUS
384 int "Maximum number of CPUs (2-128)" 390 int "Maximum number of CPUs (2-128)"
385 range 2 128 391 range 2 128
386 depends on SMP 392 depends on SMP
387 default "32" if PPC64 393 default "32" if PPC64
388 default "4" 394 default "4"
389 395
390 config NOT_COHERENT_CACHE 396 config NOT_COHERENT_CACHE
391 bool 397 bool
392 depends on 4xx || 8xx || E200 398 depends on 4xx || 8xx || E200
393 default y 399 default y
394 endmenu 400 endmenu
395 401
396 source "init/Kconfig" 402 source "init/Kconfig"
397 403
398 source "arch/powerpc/platforms/Kconfig" 404 source "arch/powerpc/platforms/Kconfig"
399 405
400 menu "Kernel options" 406 menu "Kernel options"
401 407
402 config HIGHMEM 408 config HIGHMEM
403 bool "High memory support" 409 bool "High memory support"
404 depends on PPC32 410 depends on PPC32
405 411
406 source kernel/Kconfig.hz 412 source kernel/Kconfig.hz
407 source kernel/Kconfig.preempt 413 source kernel/Kconfig.preempt
408 source "fs/Kconfig.binfmt" 414 source "fs/Kconfig.binfmt"
409 415
410 # We optimistically allocate largepages from the VM, so make the limit 416 # We optimistically allocate largepages from the VM, so make the limit
411 # large enough (16MB). This badly named config option is actually 417 # large enough (16MB). This badly named config option is actually
412 # max order + 1 418 # max order + 1
413 config FORCE_MAX_ZONEORDER 419 config FORCE_MAX_ZONEORDER
414 int 420 int
415 depends on PPC64 421 depends on PPC64
416 default "9" if PPC_64K_PAGES 422 default "9" if PPC_64K_PAGES
417 default "13" 423 default "13"
418 424
419 config MATH_EMULATION 425 config MATH_EMULATION
420 bool "Math emulation" 426 bool "Math emulation"
421 depends on 4xx || 8xx || E200 || PPC_MPC832x || E500 427 depends on 4xx || 8xx || E200 || PPC_MPC832x || E500
422 ---help--- 428 ---help---
423 Some PowerPC chips designed for embedded applications do not have 429 Some PowerPC chips designed for embedded applications do not have
424 a floating-point unit and therefore do not implement the 430 a floating-point unit and therefore do not implement the
425 floating-point instructions in the PowerPC instruction set. If you 431 floating-point instructions in the PowerPC instruction set. If you
426 say Y here, the kernel will include code to emulate a floating-point 432 say Y here, the kernel will include code to emulate a floating-point
427 unit, which will allow programs that use floating-point 433 unit, which will allow programs that use floating-point
428 instructions to run. 434 instructions to run.
429 435
430 config IOMMU_VMERGE 436 config IOMMU_VMERGE
431 bool "Enable IOMMU virtual merging (EXPERIMENTAL)" 437 bool "Enable IOMMU virtual merging (EXPERIMENTAL)"
432 depends on EXPERIMENTAL && PPC64 438 depends on EXPERIMENTAL && PPC64
433 default n 439 default n
434 help 440 help
435 Cause IO segments sent to a device for DMA to be merged virtually 441 Cause IO segments sent to a device for DMA to be merged virtually
436 by the IOMMU when they happen to have been allocated contiguously. 442 by the IOMMU when they happen to have been allocated contiguously.
437 This doesn't add pressure to the IOMMU allocator. However, some 443 This doesn't add pressure to the IOMMU allocator. However, some
438 drivers don't support getting large merged segments coming back 444 drivers don't support getting large merged segments coming back
439 from *_map_sg(). Say Y if you know the drivers you are using are 445 from *_map_sg(). Say Y if you know the drivers you are using are
440 properly handling this case. 446 properly handling this case.
441 447
442 config HOTPLUG_CPU 448 config HOTPLUG_CPU
443 bool "Support for enabling/disabling CPUs" 449 bool "Support for enabling/disabling CPUs"
444 depends on SMP && HOTPLUG && EXPERIMENTAL && (PPC_PSERIES || PPC_PMAC) 450 depends on SMP && HOTPLUG && EXPERIMENTAL && (PPC_PSERIES || PPC_PMAC)
445 ---help--- 451 ---help---
446 Say Y here to be able to disable and re-enable individual 452 Say Y here to be able to disable and re-enable individual
447 CPUs at runtime on SMP machines. 453 CPUs at runtime on SMP machines.
448 454
449 Say N if you are unsure. 455 Say N if you are unsure.
450 456
451 config ARCH_ENABLE_MEMORY_HOTPLUG 457 config ARCH_ENABLE_MEMORY_HOTPLUG
452 def_bool y 458 def_bool y
453 459
454 config KEXEC 460 config KEXEC
455 bool "kexec system call (EXPERIMENTAL)" 461 bool "kexec system call (EXPERIMENTAL)"
456 depends on PPC_MULTIPLATFORM && EXPERIMENTAL 462 depends on PPC_MULTIPLATFORM && EXPERIMENTAL
457 help 463 help
458 kexec is a system call that implements the ability to shutdown your 464 kexec is a system call that implements the ability to shutdown your
459 current kernel, and to start another kernel. It is like a reboot 465 current kernel, and to start another kernel. It is like a reboot
460 but it is independent of the system firmware. And like a reboot 466 but it is independent of the system firmware. And like a reboot
461 you can start any kernel with it, not just Linux. 467 you can start any kernel with it, not just Linux.
462 468
463 The name comes from the similarity to the exec system call. 469 The name comes from the similarity to the exec system call.
464 470
465 It is an ongoing process to be certain the hardware in a machine 471 It is an ongoing process to be certain the hardware in a machine
466 is properly shutdown, so do not be surprised if this code does not 472 is properly shutdown, so do not be surprised if this code does not
467 initially work for you. It may help to enable device hotplugging 473 initially work for you. It may help to enable device hotplugging
468 support. As of this writing the exact hardware interface is 474 support. As of this writing the exact hardware interface is
469 strongly in flux, so no good recommendation can be made. 475 strongly in flux, so no good recommendation can be made.
470 476
471 config CRASH_DUMP 477 config CRASH_DUMP
472 bool "Build a kdump crash kernel (EXPERIMENTAL)" 478 bool "Build a kdump crash kernel (EXPERIMENTAL)"
473 depends on PPC_MULTIPLATFORM && PPC64 && EXPERIMENTAL 479 depends on PPC_MULTIPLATFORM && PPC64 && EXPERIMENTAL
474 help 480 help
475 Build a kernel suitable for use as a kdump capture kernel. 481 Build a kernel suitable for use as a kdump capture kernel.
476 The kernel will be linked at a different address than normal, and 482 The kernel will be linked at a different address than normal, and
477 so can only be used for Kdump. 483 so can only be used for Kdump.
478 484
479 Don't change this unless you know what you are doing. 485 Don't change this unless you know what you are doing.
480 486
481 config PPCBUG_NVRAM 487 config PPCBUG_NVRAM
482 bool "Enable reading PPCBUG NVRAM during boot" if PPLUS || LOPEC 488 bool "Enable reading PPCBUG NVRAM during boot" if PPLUS || LOPEC
483 default y if PPC_PREP 489 default y if PPC_PREP
484 490
485 config IRQ_ALL_CPUS 491 config IRQ_ALL_CPUS
486 bool "Distribute interrupts on all CPUs by default" 492 bool "Distribute interrupts on all CPUs by default"
487 depends on SMP && !MV64360 493 depends on SMP && !MV64360
488 help 494 help
489 This option gives the kernel permission to distribute IRQs across 495 This option gives the kernel permission to distribute IRQs across
490 multiple CPUs. Saying N here will route all IRQs to the first 496 multiple CPUs. Saying N here will route all IRQs to the first
491 CPU. Generally saying Y is safe, although some problems have been 497 CPU. Generally saying Y is safe, although some problems have been
492 reported with SMP Power Macintoshes with this option enabled. 498 reported with SMP Power Macintoshes with this option enabled.
493 499
494 config NUMA 500 config NUMA
495 bool "NUMA support" 501 bool "NUMA support"
496 depends on PPC64 502 depends on PPC64
497 default y if SMP && PPC_PSERIES 503 default y if SMP && PPC_PSERIES
498 504
499 config NODES_SHIFT 505 config NODES_SHIFT
500 int 506 int
501 default "4" 507 default "4"
502 depends on NEED_MULTIPLE_NODES 508 depends on NEED_MULTIPLE_NODES
503 509
504 config ARCH_SELECT_MEMORY_MODEL 510 config ARCH_SELECT_MEMORY_MODEL
505 def_bool y 511 def_bool y
506 depends on PPC64 512 depends on PPC64
507 513
508 config ARCH_FLATMEM_ENABLE 514 config ARCH_FLATMEM_ENABLE
509 def_bool y 515 def_bool y
510 depends on (PPC64 && !NUMA) || PPC32 516 depends on (PPC64 && !NUMA) || PPC32
511 517
512 config ARCH_SPARSEMEM_ENABLE 518 config ARCH_SPARSEMEM_ENABLE
513 def_bool y 519 def_bool y
514 depends on PPC64 520 depends on PPC64
515 521
516 config ARCH_SPARSEMEM_DEFAULT 522 config ARCH_SPARSEMEM_DEFAULT
517 def_bool y 523 def_bool y
518 depends on (SMP && PPC_PSERIES) || PPC_PS3 524 depends on (SMP && PPC_PSERIES) || PPC_PS3
519 525
520 config ARCH_POPULATES_NODE_MAP 526 config ARCH_POPULATES_NODE_MAP
521 def_bool y 527 def_bool y
522 528
523 source "mm/Kconfig" 529 source "mm/Kconfig"
524 530
525 config ARCH_MEMORY_PROBE 531 config ARCH_MEMORY_PROBE
526 def_bool y 532 def_bool y
527 depends on MEMORY_HOTPLUG 533 depends on MEMORY_HOTPLUG
528 534
529 # Some NUMA nodes have memory ranges that span 535 # Some NUMA nodes have memory ranges that span
530 # other nodes. Even though a pfn is valid and 536 # other nodes. Even though a pfn is valid and
531 # between a node's start and end pfns, it may not 537 # between a node's start and end pfns, it may not
532 # reside on that node. See memmap_init_zone() 538 # reside on that node. See memmap_init_zone()
533 # for details. 539 # for details.
534 config NODES_SPAN_OTHER_NODES 540 config NODES_SPAN_OTHER_NODES
535 def_bool y 541 def_bool y
536 depends on NEED_MULTIPLE_NODES 542 depends on NEED_MULTIPLE_NODES
537 543
538 config PPC_64K_PAGES 544 config PPC_64K_PAGES
539 bool "64k page size" 545 bool "64k page size"
540 depends on PPC64 546 depends on PPC64
541 help 547 help
542 This option changes the kernel logical page size to 64k. On machines 548 This option changes the kernel logical page size to 64k. On machines
543 without processor support for 64k pages, the kernel will simulate 549 without processor support for 64k pages, the kernel will simulate
544 them by loading each individual 4k page on demand transparently, 550 them by loading each individual 4k page on demand transparently,
545 while on hardware with such support, it will be used to map 551 while on hardware with such support, it will be used to map
546 normal application pages. 552 normal application pages.
547 553
548 config SCHED_SMT 554 config SCHED_SMT
549 bool "SMT (Hyperthreading) scheduler support" 555 bool "SMT (Hyperthreading) scheduler support"
550 depends on PPC64 && SMP 556 depends on PPC64 && SMP
551 help 557 help
552 SMT scheduler support improves the CPU scheduler's decision making 558 SMT scheduler support improves the CPU scheduler's decision making
553 when dealing with POWER5 cpus at a cost of slightly increased 559 when dealing with POWER5 cpus at a cost of slightly increased
554 overhead in some places. If unsure say N here. 560 overhead in some places. If unsure say N here.
555 561
556 config PROC_DEVICETREE 562 config PROC_DEVICETREE
557 bool "Support for device tree in /proc" 563 bool "Support for device tree in /proc"
558 depends on PROC_FS 564 depends on PROC_FS
559 help 565 help
560 This option adds a device-tree directory under /proc which contains 566 This option adds a device-tree directory under /proc which contains
561 an image of the device tree that the kernel copies from Open 567 an image of the device tree that the kernel copies from Open
562 Firmware or other boot firmware. If unsure, say Y here. 568 Firmware or other boot firmware. If unsure, say Y here.
563 569
564 config CMDLINE_BOOL 570 config CMDLINE_BOOL
565 bool "Default bootloader kernel arguments" 571 bool "Default bootloader kernel arguments"
566 572
567 config CMDLINE 573 config CMDLINE
568 string "Initial kernel command string" 574 string "Initial kernel command string"
569 depends on CMDLINE_BOOL 575 depends on CMDLINE_BOOL
570 default "console=ttyS0,9600 console=tty0 root=/dev/sda2" 576 default "console=ttyS0,9600 console=tty0 root=/dev/sda2"
571 help 577 help
572 On some platforms, there is currently no way for the boot loader to 578 On some platforms, there is currently no way for the boot loader to
573 pass arguments to the kernel. For these platforms, you can supply 579 pass arguments to the kernel. For these platforms, you can supply
574 some command-line options at build time by entering them here. In 580 some command-line options at build time by entering them here. In
575 most cases you will need to specify the root device here. 581 most cases you will need to specify the root device here.
576 582
577 if !44x || BROKEN 583 if !44x || BROKEN
578 source kernel/power/Kconfig 584 source kernel/power/Kconfig
579 endif 585 endif
580 586
581 config SECCOMP 587 config SECCOMP
582 bool "Enable seccomp to safely compute untrusted bytecode" 588 bool "Enable seccomp to safely compute untrusted bytecode"
583 depends on PROC_FS 589 depends on PROC_FS
584 default y 590 default y
585 help 591 help
586 This kernel feature is useful for number crunching applications 592 This kernel feature is useful for number crunching applications
587 that may need to compute untrusted bytecode during their 593 that may need to compute untrusted bytecode during their
588 execution. By using pipes or other transports made available to 594 execution. By using pipes or other transports made available to
589 the process as file descriptors supporting the read/write 595 the process as file descriptors supporting the read/write
590 syscalls, it's possible to isolate those applications in 596 syscalls, it's possible to isolate those applications in
591 their own address space using seccomp. Once seccomp is 597 their own address space using seccomp. Once seccomp is
592 enabled via /proc/<pid>/seccomp, it cannot be disabled 598 enabled via /proc/<pid>/seccomp, it cannot be disabled
593 and the task is only allowed to execute a few safe syscalls 599 and the task is only allowed to execute a few safe syscalls
594 defined by each seccomp mode. 600 defined by each seccomp mode.
595 601
596 If unsure, say Y. Only embedded should say N here. 602 If unsure, say Y. Only embedded should say N here.
597 603
598 config WANT_DEVICE_TREE 604 config WANT_DEVICE_TREE
599 bool 605 bool
600 default n 606 default n
601 607
602 config DEVICE_TREE 608 config DEVICE_TREE
603 string "Static device tree source file" 609 string "Static device tree source file"
604 depends on WANT_DEVICE_TREE 610 depends on WANT_DEVICE_TREE
605 help 611 help
606 This specifies the device tree source (.dts) file to be 612 This specifies the device tree source (.dts) file to be
607 compiled and included when building the bootwrapper. If a 613 compiled and included when building the bootwrapper. If a
608 relative filename is given, then it will be relative to 614 relative filename is given, then it will be relative to
609 arch/powerpc/boot/dts. If you are not using the bootwrapper, 615 arch/powerpc/boot/dts. If you are not using the bootwrapper,
610 or do not need to build a dts into the bootwrapper, this 616 or do not need to build a dts into the bootwrapper, this
611 field is ignored. 617 field is ignored.
612 618
613 For example, this is required when building a cuImage target 619 For example, this is required when building a cuImage target
614 for an older U-Boot, which cannot pass a device tree itself. 620 for an older U-Boot, which cannot pass a device tree itself.
615 Such a kernel will not work with a newer U-Boot that tries to 621 Such a kernel will not work with a newer U-Boot that tries to
616 pass a device tree (unless you tell it not to). If your U-Boot 622 pass a device tree (unless you tell it not to). If your U-Boot
617 does not mention a device tree in "help bootm", then use the 623 does not mention a device tree in "help bootm", then use the
618 cuImage target and specify a device tree here. Otherwise, use 624 cuImage target and specify a device tree here. Otherwise, use
619 the uImage target and leave this field blank. 625 the uImage target and leave this field blank.
620 626
621 endmenu 627 endmenu
622 628
623 config ISA_DMA_API 629 config ISA_DMA_API
624 bool 630 bool
625 default y 631 default y
626 632
627 menu "Bus options" 633 menu "Bus options"
628 634
629 config ISA 635 config ISA
630 bool "Support for ISA-bus hardware" 636 bool "Support for ISA-bus hardware"
631 depends on PPC_PREP || PPC_CHRP 637 depends on PPC_PREP || PPC_CHRP
632 select PPC_I8259 638 select PPC_I8259
633 help 639 help
634 Find out whether you have ISA slots on your motherboard. ISA is the 640 Find out whether you have ISA slots on your motherboard. ISA is the
635 name of a bus system, i.e. the way the CPU talks to the other stuff 641 name of a bus system, i.e. the way the CPU talks to the other stuff
636 inside your box. If you have an Apple machine, say N here; if you 642 inside your box. If you have an Apple machine, say N here; if you
637 have an IBM RS/6000 or pSeries machine or a PReP machine, say Y. If 643 have an IBM RS/6000 or pSeries machine or a PReP machine, say Y. If
638 you have an embedded board, consult your board documentation. 644 you have an embedded board, consult your board documentation.
639 645
640 config ZONE_DMA 646 config ZONE_DMA
641 bool 647 bool
642 default y 648 default y
643 649
644 config GENERIC_ISA_DMA 650 config GENERIC_ISA_DMA
645 bool 651 bool
646 depends on PPC64 || POWER4 || 6xx && !CPM2 652 depends on PPC64 || POWER4 || 6xx && !CPM2
647 default y 653 default y
648 654
649 config PPC_INDIRECT_PCI 655 config PPC_INDIRECT_PCI
650 bool 656 bool
651 depends on PCI 657 depends on PCI
652 default y if 40x || 44x 658 default y if 40x || 44x
653 default n 659 default n
654 660
655 config PPC_INDIRECT_PCI_BE 661 config PPC_INDIRECT_PCI_BE
656 bool 662 bool
657 depends PPC_INDIRECT_PCI 663 depends PPC_INDIRECT_PCI
658 default n 664 default n
659 665
660 config EISA 666 config EISA
661 bool 667 bool
662 668
663 config SBUS 669 config SBUS
664 bool 670 bool
665 671
666 config FSL_SOC 672 config FSL_SOC
667 bool 673 bool
668 674
669 config FSL_PCIE 675 config FSL_PCIE
670 bool 676 bool
671 depends on PPC_86xx 677 depends on PPC_86xx
672 678
673 # Yes MCA RS/6000s exist but Linux-PPC does not currently support any 679 # Yes MCA RS/6000s exist but Linux-PPC does not currently support any
674 config MCA 680 config MCA
675 bool 681 bool
676 682
677 config PCI 683 config PCI
678 bool "PCI support" if 40x || CPM2 || PPC_83xx || PPC_85xx || PPC_86xx \ 684 bool "PCI support" if 40x || CPM2 || PPC_83xx || PPC_85xx || PPC_86xx \
679 || PPC_MPC52xx || (EMBEDDED && (PPC_PSERIES || PPC_ISERIES)) \ 685 || PPC_MPC52xx || (EMBEDDED && (PPC_PSERIES || PPC_ISERIES)) \
680 || MPC7448HPC2 || PPC_PS3 || PPC_HOLLY 686 || MPC7448HPC2 || PPC_PS3 || PPC_HOLLY
681 default y if !40x && !CPM2 && !8xx && !APUS && !PPC_83xx \ 687 default y if !40x && !CPM2 && !8xx && !APUS && !PPC_83xx \
682 && !PPC_85xx && !PPC_86xx 688 && !PPC_85xx && !PPC_86xx
683 default PCI_PERMEDIA if !4xx && !CPM2 && !8xx && APUS 689 default PCI_PERMEDIA if !4xx && !CPM2 && !8xx && APUS
684 default PCI_QSPAN if !4xx && !CPM2 && 8xx 690 default PCI_QSPAN if !4xx && !CPM2 && 8xx
685 select ARCH_SUPPORTS_MSI 691 select ARCH_SUPPORTS_MSI
686 help 692 help
687 Find out whether your system includes a PCI bus. PCI is the name of 693 Find out whether your system includes a PCI bus. PCI is the name of
688 a bus system, i.e. the way the CPU talks to the other stuff inside 694 a bus system, i.e. the way the CPU talks to the other stuff inside
689 your box. If you say Y here, the kernel will include drivers and 695 your box. If you say Y here, the kernel will include drivers and
690 infrastructure code to support PCI bus devices. 696 infrastructure code to support PCI bus devices.
691 697
692 config PCI_DOMAINS 698 config PCI_DOMAINS
693 bool 699 bool
694 default PCI 700 default PCI
695 701
696 config PCI_QSPAN 702 config PCI_QSPAN
697 bool "QSpan PCI" 703 bool "QSpan PCI"
698 depends on !4xx && !CPM2 && 8xx 704 depends on !4xx && !CPM2 && 8xx
699 select PPC_I8259 705 select PPC_I8259
700 help 706 help
701 Say Y here if you have a system based on a Motorola 8xx-series 707 Say Y here if you have a system based on a Motorola 8xx-series
702 embedded processor with a QSPAN PCI interface, otherwise say N. 708 embedded processor with a QSPAN PCI interface, otherwise say N.
703 709
704 config PCI_8260 710 config PCI_8260
705 bool 711 bool
706 depends on PCI && 8260 712 depends on PCI && 8260
707 select PPC_INDIRECT_PCI 713 select PPC_INDIRECT_PCI
708 default y 714 default y
709 715
710 config 8260_PCI9 716 config 8260_PCI9
711 bool "Enable workaround for MPC826x erratum PCI 9" 717 bool "Enable workaround for MPC826x erratum PCI 9"
712 depends on PCI_8260 && !ADS8272 718 depends on PCI_8260 && !ADS8272
713 default y 719 default y
714 720
715 choice 721 choice
716 prompt "IDMA channel for PCI 9 workaround" 722 prompt "IDMA channel for PCI 9 workaround"
717 depends on 8260_PCI9 723 depends on 8260_PCI9
718 724
719 config 8260_PCI9_IDMA1 725 config 8260_PCI9_IDMA1
720 bool "IDMA1" 726 bool "IDMA1"
721 727
722 config 8260_PCI9_IDMA2 728 config 8260_PCI9_IDMA2
723 bool "IDMA2" 729 bool "IDMA2"
724 730
725 config 8260_PCI9_IDMA3 731 config 8260_PCI9_IDMA3
726 bool "IDMA3" 732 bool "IDMA3"
727 733
728 config 8260_PCI9_IDMA4 734 config 8260_PCI9_IDMA4
729 bool "IDMA4" 735 bool "IDMA4"
730 736
731 endchoice 737 endchoice
732 738
733 source "drivers/pci/pcie/Kconfig" 739 source "drivers/pci/pcie/Kconfig"
734 740
735 source "drivers/pci/Kconfig" 741 source "drivers/pci/Kconfig"
736 742
737 source "drivers/pcmcia/Kconfig" 743 source "drivers/pcmcia/Kconfig"
738 744
739 source "drivers/pci/hotplug/Kconfig" 745 source "drivers/pci/hotplug/Kconfig"
740 746
741 endmenu 747 endmenu
742 748
743 menu "Advanced setup" 749 menu "Advanced setup"
744 depends on PPC32 750 depends on PPC32
745 751
746 config ADVANCED_OPTIONS 752 config ADVANCED_OPTIONS
747 bool "Prompt for advanced kernel configuration options" 753 bool "Prompt for advanced kernel configuration options"
748 help 754 help
749 This option will enable prompting for a variety of advanced kernel 755 This option will enable prompting for a variety of advanced kernel
750 configuration options. These options can cause the kernel to not 756 configuration options. These options can cause the kernel to not
751 work if they are set incorrectly, but can be used to optimize certain 757 work if they are set incorrectly, but can be used to optimize certain
752 aspects of kernel memory management. 758 aspects of kernel memory management.
753 759
754 Unless you know what you are doing, say N here. 760 Unless you know what you are doing, say N here.
755 761
756 comment "Default settings for advanced configuration options are used" 762 comment "Default settings for advanced configuration options are used"
757 depends on !ADVANCED_OPTIONS 763 depends on !ADVANCED_OPTIONS
758 764
759 config HIGHMEM_START_BOOL 765 config HIGHMEM_START_BOOL
760 bool "Set high memory pool address" 766 bool "Set high memory pool address"
761 depends on ADVANCED_OPTIONS && HIGHMEM 767 depends on ADVANCED_OPTIONS && HIGHMEM
762 help 768 help
763 This option allows you to set the base address of the kernel virtual 769 This option allows you to set the base address of the kernel virtual
764 area used to map high memory pages. This can be useful in 770 area used to map high memory pages. This can be useful in
765 optimizing the layout of kernel virtual memory. 771 optimizing the layout of kernel virtual memory.
766 772
767 Say N here unless you know what you are doing. 773 Say N here unless you know what you are doing.
768 774
769 config HIGHMEM_START 775 config HIGHMEM_START
770 hex "Virtual start address of high memory pool" if HIGHMEM_START_BOOL 776 hex "Virtual start address of high memory pool" if HIGHMEM_START_BOOL
771 default "0xfe000000" 777 default "0xfe000000"
772 778
773 config LOWMEM_SIZE_BOOL 779 config LOWMEM_SIZE_BOOL
774 bool "Set maximum low memory" 780 bool "Set maximum low memory"
775 depends on ADVANCED_OPTIONS 781 depends on ADVANCED_OPTIONS
776 help 782 help
777 This option allows you to set the maximum amount of memory which 783 This option allows you to set the maximum amount of memory which
778 will be used as "low memory", that is, memory which the kernel can 784 will be used as "low memory", that is, memory which the kernel can
779 access directly, without having to set up a kernel virtual mapping. 785 access directly, without having to set up a kernel virtual mapping.
780 This can be useful in optimizing the layout of kernel virtual 786 This can be useful in optimizing the layout of kernel virtual
781 memory. 787 memory.
782 788
783 Say N here unless you know what you are doing. 789 Say N here unless you know what you are doing.
784 790
785 config LOWMEM_SIZE 791 config LOWMEM_SIZE
786 hex "Maximum low memory size (in bytes)" if LOWMEM_SIZE_BOOL 792 hex "Maximum low memory size (in bytes)" if LOWMEM_SIZE_BOOL
787 default "0x30000000" 793 default "0x30000000"
788 794
789 config KERNEL_START_BOOL 795 config KERNEL_START_BOOL
790 bool "Set custom kernel base address" 796 bool "Set custom kernel base address"
791 depends on ADVANCED_OPTIONS 797 depends on ADVANCED_OPTIONS
792 help 798 help
793 This option allows you to set the kernel virtual address at which 799 This option allows you to set the kernel virtual address at which
794 the kernel will map low memory (the kernel image will be linked at 800 the kernel will map low memory (the kernel image will be linked at
795 this address). This can be useful in optimizing the virtual memory 801 this address). This can be useful in optimizing the virtual memory
796 layout of the system. 802 layout of the system.
797 803
798 Say N here unless you know what you are doing. 804 Say N here unless you know what you are doing.
799 805
800 config KERNEL_START 806 config KERNEL_START
801 hex "Virtual address of kernel base" if KERNEL_START_BOOL 807 hex "Virtual address of kernel base" if KERNEL_START_BOOL
802 default "0xc0000000" 808 default "0xc0000000"
803 809
804 config TASK_SIZE_BOOL 810 config TASK_SIZE_BOOL
805 bool "Set custom user task size" 811 bool "Set custom user task size"
806 depends on ADVANCED_OPTIONS 812 depends on ADVANCED_OPTIONS
807 help 813 help
808 This option allows you to set the amount of virtual address space 814 This option allows you to set the amount of virtual address space
809 allocated to user tasks. This can be useful in optimizing the 815 allocated to user tasks. This can be useful in optimizing the
810 virtual memory layout of the system. 816 virtual memory layout of the system.
811 817
812 Say N here unless you know what you are doing. 818 Say N here unless you know what you are doing.
813 819
814 config TASK_SIZE 820 config TASK_SIZE
815 hex "Size of user task space" if TASK_SIZE_BOOL 821 hex "Size of user task space" if TASK_SIZE_BOOL
816 default "0x80000000" 822 default "0x80000000"
817 823
818 config CONSISTENT_START_BOOL 824 config CONSISTENT_START_BOOL
819 bool "Set custom consistent memory pool address" 825 bool "Set custom consistent memory pool address"
820 depends on ADVANCED_OPTIONS && NOT_COHERENT_CACHE 826 depends on ADVANCED_OPTIONS && NOT_COHERENT_CACHE
821 help 827 help
822 This option allows you to set the base virtual address 828 This option allows you to set the base virtual address
823 of the consistent memory pool. This pool of virtual 829 of the consistent memory pool. This pool of virtual
824 memory is used to make consistent memory allocations. 830 memory is used to make consistent memory allocations.
825 831
826 config CONSISTENT_START 832 config CONSISTENT_START
827 hex "Base virtual address of consistent memory pool" if CONSISTENT_START_BOOL 833 hex "Base virtual address of consistent memory pool" if CONSISTENT_START_BOOL
828 default "0xff100000" if NOT_COHERENT_CACHE 834 default "0xff100000" if NOT_COHERENT_CACHE
829 835
830 config CONSISTENT_SIZE_BOOL 836 config CONSISTENT_SIZE_BOOL
831 bool "Set custom consistent memory pool size" 837 bool "Set custom consistent memory pool size"
832 depends on ADVANCED_OPTIONS && NOT_COHERENT_CACHE 838 depends on ADVANCED_OPTIONS && NOT_COHERENT_CACHE
833 help 839 help
834 This option allows you to set the size of the 840 This option allows you to set the size of the
835 consistent memory pool. This pool of virtual memory 841 consistent memory pool. This pool of virtual memory
836 is used to make consistent memory allocations. 842 is used to make consistent memory allocations.
837 843
838 config CONSISTENT_SIZE 844 config CONSISTENT_SIZE
839 hex "Size of consistent memory pool" if CONSISTENT_SIZE_BOOL 845 hex "Size of consistent memory pool" if CONSISTENT_SIZE_BOOL
840 default "0x00200000" if NOT_COHERENT_CACHE 846 default "0x00200000" if NOT_COHERENT_CACHE
841 847
842 config BOOT_LOAD_BOOL 848 config BOOT_LOAD_BOOL
843 bool "Set the boot link/load address" 849 bool "Set the boot link/load address"
844 depends on ADVANCED_OPTIONS && !PPC_MULTIPLATFORM 850 depends on ADVANCED_OPTIONS && !PPC_MULTIPLATFORM
845 help 851 help
846 This option allows you to set the initial load address of the zImage 852 This option allows you to set the initial load address of the zImage
847 or zImage.initrd file. This can be useful if you are on a board 853 or zImage.initrd file. This can be useful if you are on a board
848 which has a small amount of memory. 854 which has a small amount of memory.
849 855
850 Say N here unless you know what you are doing. 856 Say N here unless you know what you are doing.
851 857
852 config BOOT_LOAD 858 config BOOT_LOAD
853 hex "Link/load address for booting" if BOOT_LOAD_BOOL 859 hex "Link/load address for booting" if BOOT_LOAD_BOOL
854 default "0x00400000" if 40x || 8xx || 8260 860 default "0x00400000" if 40x || 8xx || 8260
855 default "0x01000000" if 44x 861 default "0x01000000" if 44x
856 default "0x00800000" 862 default "0x00800000"
857 863
858 config PIN_TLB 864 config PIN_TLB
859 bool "Pinned Kernel TLBs (860 ONLY)" 865 bool "Pinned Kernel TLBs (860 ONLY)"
860 depends on ADVANCED_OPTIONS && 8xx 866 depends on ADVANCED_OPTIONS && 8xx
861 endmenu 867 endmenu
862 868
863 if PPC64 869 if PPC64
864 config KERNEL_START 870 config KERNEL_START
865 hex 871 hex
866 default "0xc000000000000000" 872 default "0xc000000000000000"
867 endif 873 endif
868 874
869 source "net/Kconfig" 875 source "net/Kconfig"
870 876
871 source "drivers/Kconfig" 877 source "drivers/Kconfig"
872 878
873 source "fs/Kconfig" 879 source "fs/Kconfig"
874 880
875 # XXX source "arch/ppc/8xx_io/Kconfig" 881 # XXX source "arch/ppc/8xx_io/Kconfig"
876 882
877 # XXX source "arch/ppc/8260_io/Kconfig" 883 # XXX source "arch/ppc/8260_io/Kconfig"
878 884
879 source "arch/powerpc/sysdev/qe_lib/Kconfig" 885 source "arch/powerpc/sysdev/qe_lib/Kconfig"
880 886
881 source "lib/Kconfig" 887 source "lib/Kconfig"
882 888
883 menu "Instrumentation Support" 889 menu "Instrumentation Support"
884 depends on EXPERIMENTAL 890 depends on EXPERIMENTAL
885 891
886 source "arch/powerpc/oprofile/Kconfig" 892 source "arch/powerpc/oprofile/Kconfig"
887 893
888 config KPROBES 894 config KPROBES
889 bool "Kprobes (EXPERIMENTAL)" 895 bool "Kprobes (EXPERIMENTAL)"
890 depends on !BOOKE && !4xx && KALLSYMS && EXPERIMENTAL && MODULES 896 depends on !BOOKE && !4xx && KALLSYMS && EXPERIMENTAL && MODULES
891 help 897 help
892 Kprobes allows you to trap at almost any kernel address and 898 Kprobes allows you to trap at almost any kernel address and
893 execute a callback function. register_kprobe() establishes 899 execute a callback function. register_kprobe() establishes
894 a probepoint and specifies the callback. Kprobes is useful 900 a probepoint and specifies the callback. Kprobes is useful
895 for kernel debugging, non-intrusive instrumentation and testing. 901 for kernel debugging, non-intrusive instrumentation and testing.
896 If in doubt, say "N". 902 If in doubt, say "N".
897 endmenu 903 endmenu
898 904
899 source "arch/powerpc/Kconfig.debug" 905 source "arch/powerpc/Kconfig.debug"
900 906
901 source "security/Kconfig" 907 source "security/Kconfig"
902 908
903 config KEYS_COMPAT 909 config KEYS_COMPAT
904 bool 910 bool
905 depends on COMPAT && KEYS 911 depends on COMPAT && KEYS
906 default y 912 default y
907 913
908 source "crypto/Kconfig" 914 source "crypto/Kconfig"
909 915
arch/powerpc/boot/44x.c
File was created 1 /*
2 * Copyright 2007 David Gibson, IBM Corporation.
3 *
4 * Based on earlier code:
5 * Matt Porter <mporter@kernel.crashing.org>
6 * Copyright 2002-2005 MontaVista Software Inc.
7 *
8 * Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net>
9 * Copyright (c) 2003, 2004 Zultys Technologies
10 *
11 * This program is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License
13 * as published by the Free Software Foundation; either version
14 * 2 of the License, or (at your option) any later version.
15 */
16 #include <stddef.h>
17 #include "types.h"
18 #include "string.h"
19 #include "stdio.h"
20 #include "ops.h"
21 #include "reg.h"
22 #include "dcr.h"
23
24 /* Read the 44x memory controller to get size of system memory. */
25 void ibm44x_fixup_memsize(void)
26 {
27 int i;
28 unsigned long memsize, bank_config;
29
30 memsize = 0;
31 for (i = 0; i < ARRAY_SIZE(sdram_bxcr); i++) {
32 mtdcr(DCRN_SDRAM0_CFGADDR, sdram_bxcr[i]);
33 bank_config = mfdcr(DCRN_SDRAM0_CFGDATA);
34
35 if (bank_config & SDRAM_CONFIG_BANK_ENABLE)
36 memsize += SDRAM_CONFIG_BANK_SIZE(bank_config);
37 }
38
39 dt_fixup_memory(0, memsize);
40 }
41
arch/powerpc/boot/44x.h
File was created 1 /*
2 * PowerPC 44x related functions
3 *
4 * Copyright 2007 David Gibson, IBM Corporation.
5 *
6 * This file is licensed under the terms of the GNU General Public
7 * License version 2. This program is licensed "as is" without any
8 * warranty of any kind, whether express or implied.
9 */
10 #ifndef _PPC_BOOT_44X_H_
11 #define _PPC_BOOT_44X_H_
12
13 void ibm44x_fixup_memsize(void);
14 void ebony_init(void *mac0, void *mac1);
15
16 #endif /* _PPC_BOOT_44X_H_ */
17
arch/powerpc/boot/Makefile
1 # Makefile for making ELF bootable images for booting on CHRP 1 # Makefile for making ELF bootable images for booting on CHRP
2 # using Open Firmware. 2 # using Open Firmware.
3 # 3 #
4 # Geert Uytterhoeven September 1997 4 # Geert Uytterhoeven September 1997
5 # 5 #
6 # Based on coffboot by Paul Mackerras 6 # Based on coffboot by Paul Mackerras
7 # Simplified for ppc64 by Todd Inglett 7 # Simplified for ppc64 by Todd Inglett
8 # 8 #
9 # NOTE: this code is built for 32 bit in ELF32 format even though 9 # NOTE: this code is built for 32 bit in ELF32 format even though
10 # it packages a 64 bit kernel. We do this to simplify the 10 # it packages a 64 bit kernel. We do this to simplify the
11 # bootloader and increase compatibility with OpenFirmware. 11 # bootloader and increase compatibility with OpenFirmware.
12 # 12 #
13 # To this end we need to define BOOTCC, etc, as the tools 13 # To this end we need to define BOOTCC, etc, as the tools
14 # needed to build the 32 bit image. These are normally HOSTCC, 14 # needed to build the 32 bit image. These are normally HOSTCC,
15 # but may be a third compiler if, for example, you are cross 15 # but may be a third compiler if, for example, you are cross
16 # compiling from an intel box. Once the 64bit ppc gcc is 16 # compiling from an intel box. Once the 64bit ppc gcc is
17 # stable it will probably simply be a compiler switch to 17 # stable it will probably simply be a compiler switch to
18 # compile for 32bit mode. 18 # compile for 32bit mode.
19 # To make it easier to setup a cross compiler, 19 # To make it easier to setup a cross compiler,
20 # CROSS32_COMPILE is setup as a prefix just like CROSS_COMPILE 20 # CROSS32_COMPILE is setup as a prefix just like CROSS_COMPILE
21 # in the toplevel makefile. 21 # in the toplevel makefile.
22 22
23 all: $(obj)/zImage 23 all: $(obj)/zImage
24 24
25 HOSTCC := gcc 25 HOSTCC := gcc
26 BOOTCFLAGS := $(HOSTCFLAGS) -fno-builtin -nostdinc -isystem \ 26 BOOTCFLAGS := $(HOSTCFLAGS) -fno-builtin -nostdinc -isystem \
27 $(shell $(CROSS32CC) -print-file-name=include) -fPIC 27 $(shell $(CROSS32CC) -print-file-name=include) -fPIC
28 BOOTAFLAGS := -D__ASSEMBLY__ $(BOOTCFLAGS) -traditional -nostdinc 28 BOOTAFLAGS := -D__ASSEMBLY__ $(BOOTCFLAGS) -traditional -nostdinc
29 29
30 ifeq ($(call cc-option-yn, -fstack-protector),y) 30 ifeq ($(call cc-option-yn, -fstack-protector),y)
31 BOOTCFLAGS += -fno-stack-protector 31 BOOTCFLAGS += -fno-stack-protector
32 endif 32 endif
33 33
34 BOOTCFLAGS += -I$(obj) -I$(srctree)/$(obj) 34 BOOTCFLAGS += -I$(obj) -I$(srctree)/$(obj)
35 35
36 zlib := inffast.c inflate.c inftrees.c 36 zlib := inffast.c inflate.c inftrees.c
37 zlibheader := inffast.h inffixed.h inflate.h inftrees.h infutil.h 37 zlibheader := inffast.h inffixed.h inflate.h inftrees.h infutil.h
38 zliblinuxheader := zlib.h zconf.h zutil.h 38 zliblinuxheader := zlib.h zconf.h zutil.h
39 39
40 $(addprefix $(obj)/,$(zlib) gunzip_util.o main.o): \ 40 $(addprefix $(obj)/,$(zlib) gunzip_util.o main.o): \
41 $(addprefix $(obj)/,$(zliblinuxheader)) $(addprefix $(obj)/,$(zlibheader)) 41 $(addprefix $(obj)/,$(zliblinuxheader)) $(addprefix $(obj)/,$(zlibheader))
42 42
43 src-wlib := string.S crt0.S stdio.c main.c flatdevtree.c flatdevtree_misc.c \ 43 src-wlib := string.S crt0.S stdio.c main.c flatdevtree.c flatdevtree_misc.c \
44 ns16550.c serial.c simple_alloc.c div64.S util.S \ 44 ns16550.c serial.c simple_alloc.c div64.S util.S \
45 gunzip_util.c elf_util.c $(zlib) devtree.c 45 gunzip_util.c elf_util.c $(zlib) devtree.c \
46 src-plat := of.c cuboot-83xx.c cuboot-85xx.c holly.c 46 44x.c ebony.c
47 src-plat := of.c cuboot-83xx.c cuboot-85xx.c holly.c \
48 cuboot-ebony.c treeboot-ebony.c
47 src-boot := $(src-wlib) $(src-plat) empty.c 49 src-boot := $(src-wlib) $(src-plat) empty.c
48 50
49 src-boot := $(addprefix $(obj)/, $(src-boot)) 51 src-boot := $(addprefix $(obj)/, $(src-boot))
50 obj-boot := $(addsuffix .o, $(basename $(src-boot))) 52 obj-boot := $(addsuffix .o, $(basename $(src-boot)))
51 obj-wlib := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-wlib)))) 53 obj-wlib := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-wlib))))
52 obj-plat := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-plat)))) 54 obj-plat := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-plat))))
53 55
54 quiet_cmd_copy_zlib = COPY $@ 56 quiet_cmd_copy_zlib = COPY $@
55 cmd_copy_zlib = sed "s@__attribute_used__@@;s@<linux/\([^>]\+\).*@\"\1\"@" $< > $@ 57 cmd_copy_zlib = sed "s@__attribute_used__@@;s@<linux/\([^>]\+\).*@\"\1\"@" $< > $@
56 58
57 quiet_cmd_copy_zlibheader = COPY $@ 59 quiet_cmd_copy_zlibheader = COPY $@
58 cmd_copy_zlibheader = sed "s@<linux/\([^>]\+\).*@\"\1\"@" $< > $@ 60 cmd_copy_zlibheader = sed "s@<linux/\([^>]\+\).*@\"\1\"@" $< > $@
59 # stddef.h for NULL 61 # stddef.h for NULL
60 quiet_cmd_copy_zliblinuxheader = COPY $@ 62 quiet_cmd_copy_zliblinuxheader = COPY $@
61 cmd_copy_zliblinuxheader = sed "s@<linux/string.h>@\"string.h\"@;s@<linux/kernel.h>@<stddef.h>@;s@<linux/\([^>]\+\).*@\"\1\"@" $< > $@ 63 cmd_copy_zliblinuxheader = sed "s@<linux/string.h>@\"string.h\"@;s@<linux/kernel.h>@<stddef.h>@;s@<linux/\([^>]\+\).*@\"\1\"@" $< > $@
62 64
63 $(addprefix $(obj)/,$(zlib)): $(obj)/%: $(srctree)/lib/zlib_inflate/% 65 $(addprefix $(obj)/,$(zlib)): $(obj)/%: $(srctree)/lib/zlib_inflate/%
64 $(call cmd,copy_zlib) 66 $(call cmd,copy_zlib)
65 67
66 $(addprefix $(obj)/,$(zlibheader)): $(obj)/%: $(srctree)/lib/zlib_inflate/% 68 $(addprefix $(obj)/,$(zlibheader)): $(obj)/%: $(srctree)/lib/zlib_inflate/%
67 $(call cmd,copy_zlibheader) 69 $(call cmd,copy_zlibheader)
68 70
69 $(addprefix $(obj)/,$(zliblinuxheader)): $(obj)/%: $(srctree)/include/linux/% 71 $(addprefix $(obj)/,$(zliblinuxheader)): $(obj)/%: $(srctree)/include/linux/%
70 $(call cmd,copy_zliblinuxheader) 72 $(call cmd,copy_zliblinuxheader)
71 73
72 $(obj)/empty.c: 74 $(obj)/empty.c:
73 @touch $@ 75 @touch $@
74 76
75 $(obj)/zImage.lds $(obj)/zImage.coff.lds: $(obj)/%: $(srctree)/$(src)/%.S 77 $(obj)/zImage.lds $(obj)/zImage.coff.lds: $(obj)/%: $(srctree)/$(src)/%.S
76 @cp $< $@ 78 @cp $< $@
77 79
78 clean-files := $(zlib) $(zlibheader) $(zliblinuxheader) \ 80 clean-files := $(zlib) $(zlibheader) $(zliblinuxheader) \
79 empty.c zImage.coff.lds zImage.lds 81 empty.c zImage.coff.lds zImage.lds
80 82
81 quiet_cmd_bootcc = BOOTCC $@ 83 quiet_cmd_bootcc = BOOTCC $@
82 cmd_bootcc = $(CROSS32CC) -Wp,-MD,$(depfile) $(BOOTCFLAGS) -c -o $@ $< 84 cmd_bootcc = $(CROSS32CC) -Wp,-MD,$(depfile) $(BOOTCFLAGS) -c -o $@ $<
83 85
84 quiet_cmd_bootas = BOOTAS $@ 86 quiet_cmd_bootas = BOOTAS $@
85 cmd_bootas = $(CROSS32CC) -Wp,-MD,$(depfile) $(BOOTAFLAGS) -c -o $@ $< 87 cmd_bootas = $(CROSS32CC) -Wp,-MD,$(depfile) $(BOOTAFLAGS) -c -o $@ $<
86 88
87 quiet_cmd_bootar = BOOTAR $@ 89 quiet_cmd_bootar = BOOTAR $@
88 cmd_bootar = $(CROSS32AR) -cr $@.$$$$ $(filter-out FORCE,$^); mv $@.$$$$ $@ 90 cmd_bootar = $(CROSS32AR) -cr $@.$$$$ $(filter-out FORCE,$^); mv $@.$$$$ $@
89 91
90 $(patsubst %.c,%.o, $(filter %.c, $(src-boot))): %.o: %.c FORCE 92 $(patsubst %.c,%.o, $(filter %.c, $(src-boot))): %.o: %.c FORCE
91 $(call if_changed_dep,bootcc) 93 $(call if_changed_dep,bootcc)
92 $(patsubst %.S,%.o, $(filter %.S, $(src-boot))): %.o: %.S FORCE 94 $(patsubst %.S,%.o, $(filter %.S, $(src-boot))): %.o: %.S FORCE
93 $(call if_changed_dep,bootas) 95 $(call if_changed_dep,bootas)
94 96
95 $(obj)/wrapper.a: $(obj-wlib) FORCE 97 $(obj)/wrapper.a: $(obj-wlib) FORCE
96 $(call if_changed,bootar) 98 $(call if_changed,bootar)
97 99
98 hostprogs-y := addnote addRamDisk hack-coff mktree 100 hostprogs-y := addnote addRamDisk hack-coff mktree
99 101
100 targets += $(patsubst $(obj)/%,%,$(obj-boot) wrapper.a) 102 targets += $(patsubst $(obj)/%,%,$(obj-boot) wrapper.a)
101 extra-y := $(obj)/wrapper.a $(obj-plat) $(obj)/empty.o \ 103 extra-y := $(obj)/wrapper.a $(obj-plat) $(obj)/empty.o \
102 $(obj)/zImage.lds $(obj)/zImage.coff.lds 104 $(obj)/zImage.lds $(obj)/zImage.coff.lds
103 105
104 wrapper :=$(srctree)/$(src)/wrapper 106 wrapper :=$(srctree)/$(src)/wrapper
105 wrapperbits := $(extra-y) $(addprefix $(obj)/,addnote hack-coff mktree) \ 107 wrapperbits := $(extra-y) $(addprefix $(obj)/,addnote hack-coff mktree) \
106 $(wrapper) FORCE 108 $(wrapper) FORCE
107 109
108 ############# 110 #############
109 # Bits for building various flavours of zImage 111 # Bits for building various flavours of zImage
110 112
111 ifneq ($(CROSS32_COMPILE),) 113 ifneq ($(CROSS32_COMPILE),)
112 CROSSWRAP := -C "$(CROSS32_COMPILE)" 114 CROSSWRAP := -C "$(CROSS32_COMPILE)"
113 else 115 else
114 ifneq ($(CROSS_COMPILE),) 116 ifneq ($(CROSS_COMPILE),)
115 CROSSWRAP := -C "$(CROSS_COMPILE)" 117 CROSSWRAP := -C "$(CROSS_COMPILE)"
116 endif 118 endif
117 endif 119 endif
118 120
119 # args (to if_changed): 1 = (this rule), 2 = platform, 3 = dts 4=dtb 5=initrd 121 # args (to if_changed): 1 = (this rule), 2 = platform, 3 = dts 4=dtb 5=initrd
120 quiet_cmd_wrap = WRAP $@ 122 quiet_cmd_wrap = WRAP $@
121 cmd_wrap =$(CONFIG_SHELL) $(wrapper) -c -o $@ -p $2 $(CROSSWRAP) \ 123 cmd_wrap =$(CONFIG_SHELL) $(wrapper) -c -o $@ -p $2 $(CROSSWRAP) \
122 $(if $3, -s $3)$(if $4, -d $4)$(if $5, -i $5) vmlinux 124 $(if $3, -s $3)$(if $4, -d $4)$(if $5, -i $5) vmlinux
123 125
124 image-$(CONFIG_PPC_PSERIES) += zImage.pseries 126 image-$(CONFIG_PPC_PSERIES) += zImage.pseries
125 image-$(CONFIG_PPC_MAPLE) += zImage.pseries 127 image-$(CONFIG_PPC_MAPLE) += zImage.pseries
126 image-$(CONFIG_PPC_IBM_CELL_BLADE) += zImage.pseries 128 image-$(CONFIG_PPC_IBM_CELL_BLADE) += zImage.pseries
127 image-$(CONFIG_PPC_PS3) += zImage.ps3 129 image-$(CONFIG_PPC_PS3) += zImage.ps3
128 image-$(CONFIG_PPC_CELLEB) += zImage.pseries 130 image-$(CONFIG_PPC_CELLEB) += zImage.pseries
129 image-$(CONFIG_PPC_CHRP) += zImage.chrp 131 image-$(CONFIG_PPC_CHRP) += zImage.chrp
130 image-$(CONFIG_PPC_EFIKA) += zImage.chrp 132 image-$(CONFIG_PPC_EFIKA) += zImage.chrp
131 image-$(CONFIG_PPC_PMAC) += zImage.pmac 133 image-$(CONFIG_PPC_PMAC) += zImage.pmac
132 image-$(CONFIG_PPC_HOLLY) += zImage.holly-elf 134 image-$(CONFIG_PPC_HOLLY) += zImage.holly-elf
133 image-$(CONFIG_DEFAULT_UIMAGE) += uImage 135 image-$(CONFIG_DEFAULT_UIMAGE) += uImage
134 136
135 ifneq ($(CONFIG_DEVICE_TREE),"") 137 ifneq ($(CONFIG_DEVICE_TREE),"")
136 image-$(CONFIG_PPC_83xx) += cuImage.83xx 138 image-$(CONFIG_PPC_83xx) += cuImage.83xx
137 image-$(CONFIG_PPC_85xx) += cuImage.85xx 139 image-$(CONFIG_PPC_85xx) += cuImage.85xx
140 image-$(CONFIG_EBONY) += treeImage.ebony cuImage.ebony
138 endif 141 endif
139 142
140 # For 32-bit powermacs, build the COFF and miboot images 143 # For 32-bit powermacs, build the COFF and miboot images
141 # as well as the ELF images. 144 # as well as the ELF images.
142 ifeq ($(CONFIG_PPC32),y) 145 ifeq ($(CONFIG_PPC32),y)
143 image-$(CONFIG_PPC_PMAC) += zImage.coff zImage.miboot 146 image-$(CONFIG_PPC_PMAC) += zImage.coff zImage.miboot
144 endif 147 endif
145 148
146 initrd- := $(patsubst zImage%, zImage.initrd%, $(image-n) $(image-)) 149 initrd- := $(patsubst zImage%, zImage.initrd%, $(image-n) $(image-))
147 initrd-y := $(patsubst zImage%, zImage.initrd%, $(image-y)) 150 initrd-y := $(patsubst zImage%, zImage.initrd%, \
151 $(patsubst treeImage%, treeImage.initrd%, $(image-y)))
148 initrd-y := $(filter-out $(image-y), $(initrd-y)) 152 initrd-y := $(filter-out $(image-y), $(initrd-y))
149 targets += $(image-y) $(initrd-y) 153 targets += $(image-y) $(initrd-y)
150 154
151 $(addprefix $(obj)/, $(initrd-y)): $(obj)/ramdisk.image.gz 155 $(addprefix $(obj)/, $(initrd-y)): $(obj)/ramdisk.image.gz
152 156
153 # Don't put the ramdisk on the pattern rule; when its missing make will try 157 # Don't put the ramdisk on the pattern rule; when its missing make will try
154 # the pattern rule with less dependencies that also matches (even with the 158 # the pattern rule with less dependencies that also matches (even with the
155 # hard dependency listed). 159 # hard dependency listed).
156 $(obj)/zImage.initrd.%: vmlinux $(wrapperbits) 160 $(obj)/zImage.initrd.%: vmlinux $(wrapperbits)
157 $(call if_changed,wrap,$*,,,$(obj)/ramdisk.image.gz) 161 $(call if_changed,wrap,$*,,,$(obj)/ramdisk.image.gz)
158 162
159 $(obj)/zImage.%: vmlinux $(wrapperbits) 163 $(obj)/zImage.%: vmlinux $(wrapperbits)
160 $(call if_changed,wrap,$*) 164 $(call if_changed,wrap,$*)
161 165
162 $(obj)/zImage.ps3: vmlinux 166 $(obj)/zImage.ps3: vmlinux
163 $(STRIP) -s -R .comment $< -o $@ 167 $(STRIP) -s -R .comment $< -o $@
164 168
165 $(obj)/zImage.initrd.ps3: vmlinux 169 $(obj)/zImage.initrd.ps3: vmlinux
166 @echo " WARNING zImage.initrd.ps3 not supported (yet)" 170 @echo " WARNING zImage.initrd.ps3 not supported (yet)"
167 171
168 $(obj)/zImage.holly-elf: vmlinux $(wrapperbits) 172 $(obj)/zImage.holly-elf: vmlinux $(wrapperbits)
169 $(call if_changed,wrap,holly,$(obj)/dts/holly.dts,,) 173 $(call if_changed,wrap,holly,$(obj)/dts/holly.dts,,)
170 174
171 $(obj)/zImage.initrd.holly-elf: vmlinux $(wrapperbits) $(obj)/ramdisk.image.gz 175 $(obj)/zImage.initrd.holly-elf: vmlinux $(wrapperbits) $(obj)/ramdisk.image.gz
172 $(call if_changed,wrap,holly,$(obj)/dts/holly.dts,,$(obj)/ramdisk.image.gz) 176 $(call if_changed,wrap,holly,$(obj)/dts/holly.dts,,$(obj)/ramdisk.image.gz)
173 177
174 $(obj)/uImage: vmlinux $(wrapperbits) 178 $(obj)/uImage: vmlinux $(wrapperbits)
175 $(call if_changed,wrap,uboot) 179 $(call if_changed,wrap,uboot)
176 180
177 # CONFIG_DEVICE_TREE will have "" around it, make sure to strip them 181 # CONFIG_DEVICE_TREE will have "" around it, make sure to strip them
178 dts = $(if $(shell echo $(CONFIG_DEVICE_TREE) | grep '^/'),\ 182 dts = $(if $(shell echo $(CONFIG_DEVICE_TREE) | grep '^/'),\
179 ,$(srctree)/$(src)/dts/)$(CONFIG_DEVICE_TREE:"%"=%) 183 ,$(srctree)/$(src)/dts/)$(CONFIG_DEVICE_TREE:"%"=%)
180 184
181 $(obj)/cuImage.%: vmlinux $(dts) $(wrapperbits) 185 $(obj)/cuImage.%: vmlinux $(dts) $(wrapperbits)
182 $(call if_changed,wrap,cuboot-$*,$(dts)) 186 $(call if_changed,wrap,cuboot-$*,$(dts))
183 187
188 $(obj)/treeImage.%: vmlinux $(dts) $(wrapperbits)
189 $(call if_changed,wrap,treeboot-$*,$(dts))
190
191 $(obj)/treeImage.initrd.%: vmlinux $(dts) $(wrapperbits)
192 $(call if_changed,wrap,treeboot-$*,$(dts),,$(obj)/ramdisk.image.gz)
193
184 $(obj)/zImage: $(addprefix $(obj)/, $(image-y)) 194 $(obj)/zImage: $(addprefix $(obj)/, $(image-y))
185 @rm -f $@; ln $< $@ 195 @rm -f $@; ln $< $@
186 $(obj)/zImage.initrd: $(addprefix $(obj)/, $(initrd-y)) 196 $(obj)/zImage.initrd: $(addprefix $(obj)/, $(initrd-y))
187 @rm -f $@; ln $< $@ 197 @rm -f $@; ln $< $@
188 198
189 install: $(CONFIGURE) $(addprefix $(obj)/, $(image-y)) 199 install: $(CONFIGURE) $(addprefix $(obj)/, $(image-y))
190 sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" $< 200 sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" $<
191 201
192 # anything not in $(targets) 202 # anything not in $(targets)
193 clean-files += $(image-) $(initrd-) zImage zImage.initrd cuImage.* 203 clean-files += $(image-) $(initrd-) zImage zImage.initrd cuImage.* \
204 treeImage.*
194 205
195 # clean up files cached by wrapper 206 # clean up files cached by wrapper
196 clean-kernel := vmlinux.strip vmlinux.bin 207 clean-kernel := vmlinux.strip vmlinux.bin
197 clean-kernel += $(addsuffix .gz,$(clean-kernel)) 208 clean-kernel += $(addsuffix .gz,$(clean-kernel))
198 # If not absolute clean-files are relative to $(obj). 209 # If not absolute clean-files are relative to $(obj).
199 clean-files += $(addprefix $(objtree)/, $(clean-kernel)) 210 clean-files += $(addprefix $(objtree)/, $(clean-kernel))
200 211
arch/powerpc/boot/cuboot-ebony.c
File was created 1 /*
2 * Old U-boot compatibility for Ebony
3 *
4 * Author: David Gibson <david@gibson.dropbear.id.au>
5 *
6 * Copyright 2007 David Gibson, IBM Corporatio.
7 * Based on cuboot-83xx.c, which is:
8 * Copyright (c) 2007 Freescale Semiconductor, Inc.
9 *
10 * This program is free software; you can redistribute it and/or modify it
11 * under the terms of the GNU General Public License version 2 as published
12 * by the Free Software Foundation.
13 */
14
15 #include "ops.h"
16 #include "stdio.h"
17 #include "44x.h"
18
19 #define TARGET_44x
20 #include "ppcboot.h"
21
22 static bd_t bd;
23 extern char _end[];
24
25 BSS_STACK(4096);
26
27 void platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
28 unsigned long r6, unsigned long r7)
29 {
30 unsigned long end_of_ram = bd.bi_memstart + bd.bi_memsize;
31 unsigned long avail_ram = end_of_ram - (unsigned long)_end;
32
33 memcpy(&bd, (bd_t *)r3, sizeof(bd));
34 loader_info.initrd_addr = r4;
35 loader_info.initrd_size = r4 ? r5 : 0;
36 loader_info.cmdline = (char *)r6;
37 loader_info.cmdline_len = r7 - r6;
38
39 simple_alloc_init(_end, avail_ram, 32, 64);
40
41 ebony_init(&bd.bi_enetaddr, &bd.bi_enet1addr);
42 }
43
arch/powerpc/boot/dcr.h
File was created 1 #ifndef _PPC_BOOT_DCR_H_
2 #define _PPC_BOOT_DCR_H_
3
4 #define mfdcr(rn) \
5 ({ \
6 unsigned long rval; \
7 asm volatile("mfdcr %0,%1" : "=r"(rval) : "i"(rn)); \
8 rval; \
9 })
10 #define mtdcr(rn, val) \
11 asm volatile("mtdcr %0,%1" : : "i"(rn), "r"(val))
12
13 /* 440GP/440GX SDRAM controller DCRs */
14 #define DCRN_SDRAM0_CFGADDR 0x010
15 #define DCRN_SDRAM0_CFGDATA 0x011
16
17 #define SDRAM0_B0CR 0x40
18 #define SDRAM0_B1CR 0x44
19 #define SDRAM0_B2CR 0x48
20 #define SDRAM0_B3CR 0x4c
21
22 static const unsigned long sdram_bxcr[] = { SDRAM0_B0CR, SDRAM0_B1CR, SDRAM0_B2CR, SDRAM0_B3CR };
23
24 #define SDRAM_CONFIG_BANK_ENABLE 0x00000001
25 #define SDRAM_CONFIG_SIZE_MASK 0x000e0000
26 #define SDRAM_CONFIG_BANK_SIZE(reg) \
27 (0x00400000 << ((reg & SDRAM_CONFIG_SIZE_MASK) >> 17))
28
29 /* 440GP Clock, PM, chip control */
30 #define DCRN_CPC0_SR 0x0b0
31 #define DCRN_CPC0_ER 0x0b1
32 #define DCRN_CPC0_FR 0x0b2
33 #define DCRN_CPC0_SYS0 0x0e0
34 #define CPC0_SYS0_TUNE 0xffc00000
35 #define CPC0_SYS0_FBDV_MASK 0x003c0000
36 #define CPC0_SYS0_FWDVA_MASK 0x00038000
37 #define CPC0_SYS0_FWDVB_MASK 0x00007000
38 #define CPC0_SYS0_OPDV_MASK 0x00000c00
39 #define CPC0_SYS0_EPDV_MASK 0x00000300
40 /* Helper macros to compute the actual clock divider values from the
41 * encodings in the CPC0 register */
42 #define CPC0_SYS0_FBDV(reg) \
43 ((((((reg) & CPC0_SYS0_FBDV_MASK) >> 18) - 1) & 0xf) + 1)
44 #define CPC0_SYS0_FWDVA(reg) \
45 (8 - (((reg) & CPC0_SYS0_FWDVA_MASK) >> 15))
46 #define CPC0_SYS0_FWDVB(reg) \
47 (8 - (((reg) & CPC0_SYS0_FWDVB_MASK) >> 12))
48 #define CPC0_SYS0_OPDV(reg) \
49 ((((reg) & CPC0_SYS0_OPDV_MASK) >> 10) + 1)
50 #define CPC0_SYS0_EPDV(reg) \
51 ((((reg) & CPC0_SYS0_EPDV_MASK) >> 8) + 1)
52 #define CPC0_SYS0_EXTSL 0x00000080
53 #define CPC0_SYS0_RW_MASK 0x00000060
54 #define CPC0_SYS0_RL 0x00000010
55 #define CPC0_SYS0_ZMIISL_MASK 0x0000000c
56 #define CPC0_SYS0_BYPASS 0x00000002
57 #define CPC0_SYS0_NTO1 0x00000001
58 #define DCRN_CPC0_SYS1 0x0e1
59 #define DCRN_CPC0_CUST0 0x0e2
60 #define DCRN_CPC0_CUST1 0x0e3
61 #define DCRN_CPC0_STRP0 0x0e4
62 #define DCRN_CPC0_STRP1 0x0e5
63 #define DCRN_CPC0_STRP2 0x0e6
64 #define DCRN_CPC0_STRP3 0x0e7
65 #define DCRN_CPC0_GPIO 0x0e8
66 #define DCRN_CPC0_PLB 0x0e9
67 #define DCRN_CPC0_CR1 0x0ea
68 #define DCRN_CPC0_CR0 0x0eb
69 #define CPC0_CR0_SWE 0x80000000
70 #define CPC0_CR0_CETE 0x40000000
71 #define CPC0_CR0_U1FCS 0x20000000
72 #define CPC0_CR0_U0DTE 0x10000000
73 #define CPC0_CR0_U0DRE 0x08000000
74 #define CPC0_CR0_U0DC 0x04000000
75 #define CPC0_CR0_U1DTE 0x02000000
76 #define CPC0_CR0_U1DRE 0x01000000
77 #define CPC0_CR0_U1DC 0x00800000
78 #define CPC0_CR0_U0EC 0x00400000
79 #define CPC0_CR0_U1EC 0x00200000
80 #define CPC0_CR0_UDIV_MASK 0x001f0000
81 #define CPC0_CR0_UDIV(reg) \
82 ((((reg) & CPC0_CR0_UDIV_MASK) >> 16) + 1)
83 #define DCRN_CPC0_MIRQ0 0x0ec
84 #define DCRN_CPC0_MIRQ1 0x0ed
85 #define DCRN_CPC0_JTAGID 0x0ef
86
87 #endif /* _PPC_BOOT_DCR_H_ */
88
arch/powerpc/boot/ebony.c
File was created 1 /*
2 * Copyright 2007 David Gibson, IBM Corporation.
3 *
4 * Based on earlier code:
5 * Copyright (C) Paul Mackerras 1997.
6 *
7 * Matt Porter <mporter@kernel.crashing.org>
8 * Copyright 2002-2005 MontaVista Software Inc.
9 *
10 * Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net>
11 * Copyright (c) 2003, 2004 Zultys Technologies
12 *
13 * This program is free software; you can redistribute it and/or
14 * modify it under the terms of the GNU General Public License
15 * as published by the Free Software Foundation; either version
16 * 2 of the License, or (at your option) any later version.
17 */
18 #include <stdarg.h>
19 #include <stddef.h>
20 #include "types.h"
21 #include "elf.h"
22 #include "string.h"
23 #include "stdio.h"
24 #include "page.h"
25 #include "ops.h"
26 #include "reg.h"
27 #include "dcr.h"
28 #include "44x.h"
29
30 extern char _dtb_start[];
31 extern char _dtb_end[];
32
33 static u8 *ebony_mac0, *ebony_mac1;
34
35 /* Calculate 440GP clocks */
36 void ibm440gp_fixup_clocks(unsigned int sysclk, unsigned int ser_clk)
37 {
38 u32 sys0 = mfdcr(DCRN_CPC0_SYS0);
39 u32 cr0 = mfdcr(DCRN_CPC0_CR0);
40 u32 cpu, plb, opb, ebc, tb, uart0, uart1, m;
41 u32 opdv = CPC0_SYS0_OPDV(sys0);
42 u32 epdv = CPC0_SYS0_EPDV(sys0);
43
44 if (sys0 & CPC0_SYS0_BYPASS) {
45 /* Bypass system PLL */
46 cpu = plb = sysclk;
47 } else {
48 if (sys0 & CPC0_SYS0_EXTSL)
49 /* PerClk */
50 m = CPC0_SYS0_FWDVB(sys0) * opdv * epdv;
51 else
52 /* CPU clock */
53 m = CPC0_SYS0_FBDV(sys0) * CPC0_SYS0_FWDVA(sys0);
54 cpu = sysclk * m / CPC0_SYS0_FWDVA(sys0);
55 plb = sysclk * m / CPC0_SYS0_FWDVB(sys0);
56 }
57
58 opb = plb / opdv;
59 ebc = opb / epdv;
60
61 /* FIXME: Check if this is for all 440GP, or just Ebony */
62 if ((mfpvr() & 0xf0000fff) == 0x40000440)
63 /* Rev. B 440GP, use external system clock */
64 tb = sysclk;
65 else
66 /* Rev. C 440GP, errata force us to use internal clock */
67 tb = cpu;
68
69 if (cr0 & CPC0_CR0_U0EC)
70 /* External UART clock */
71 uart0 = ser_clk;
72 else
73 /* Internal UART clock */
74 uart0 = plb / CPC0_CR0_UDIV(cr0);
75
76 if (cr0 & CPC0_CR0_U1EC)
77 /* External UART clock */
78 uart1 = ser_clk;
79 else
80 /* Internal UART clock */
81 uart1 = plb / CPC0_CR0_UDIV(cr0);
82
83 printf("PPC440GP: SysClk = %dMHz (%x)\n\r",
84 (sysclk + 500000) / 1000000, sysclk);
85
86 dt_fixup_cpu_clocks(cpu, tb, 0);
87
88 dt_fixup_clock("/plb", plb);
89 dt_fixup_clock("/plb/opb", opb);
90 dt_fixup_clock("/plb/opb/ebc", ebc);
91 dt_fixup_clock("/plb/opb/serial@40000200", uart0);
92 dt_fixup_clock("/plb/opb/serial@40000300", uart1);
93 }
94
95 static void ebony_fixups(void)
96 {
97 // FIXME: sysclk should be derived by reading the FPGA registers
98 unsigned long sysclk = 33000000;
99
100 ibm440gp_fixup_clocks(sysclk, 6 * 1843200);
101 ibm44x_fixup_memsize();
102 dt_fixup_mac_addresses(ebony_mac0, ebony_mac1);
103 }
104
105 #define SPRN_DBCR0 0x134
106 #define DBCR0_RST_SYSTEM 0x30000000
107
108 static void ebony_exit(void)
109 {
110 unsigned long tmp;
111
112 asm volatile (
113 "mfspr %0,%1\n"
114 "oris %0,%0,%2@h\n"
115 "mtspr %1,%0"
116 : "=&r"(tmp) : "i"(SPRN_DBCR0), "i"(DBCR0_RST_SYSTEM)
117 );
118
119 }
120
121 void ebony_init(void *mac0, void *mac1)
122 {
123 platform_ops.fixups = ebony_fixups;
124 platform_ops.exit = ebony_exit;
125 ebony_mac0 = mac0;
126 ebony_mac1 = mac1;
127 ft_init(_dtb_start, _dtb_end - _dtb_start, 32);
128 serial_console_init();
129 }
130
arch/powerpc/boot/mktree.c
1 /* 1 /*
2 * Makes a tree bootable image for IBM Evaluation boards. 2 * Makes a tree bootable image for IBM Evaluation boards.
3 * Basically, just take a zImage, skip the ELF header, and stuff 3 * Basically, just take a zImage, skip the ELF header, and stuff
4 * a 32 byte header on the front. 4 * a 32 byte header on the front.
5 * 5 *
6 * We use htonl, which is a network macro, to make sure we're doing 6 * We use htonl, which is a network macro, to make sure we're doing
7 * The Right Thing on an LE machine. It's non-obvious, but it should 7 * The Right Thing on an LE machine. It's non-obvious, but it should
8 * work on anything BSD'ish. 8 * work on anything BSD'ish.
9 */ 9 */
10 10
11 #include <fcntl.h> 11 #include <fcntl.h>
12 #include <stdio.h> 12 #include <stdio.h>
13 #include <stdlib.h> 13 #include <stdlib.h>
14 #include <string.h> 14 #include <string.h>
15 #include <sys/stat.h> 15 #include <sys/stat.h>
16 #include <unistd.h> 16 #include <unistd.h>
17 #include <netinet/in.h> 17 #include <netinet/in.h>
18 #ifdef __sun__ 18 #ifdef __sun__
19 #include <inttypes.h> 19 #include <inttypes.h>
20 #else 20 #else
21 #include <stdint.h> 21 #include <stdint.h>
22 #endif 22 #endif
23 23
24 /* This gets tacked on the front of the image. There are also a few 24 /* This gets tacked on the front of the image. There are also a few
25 * bytes allocated after the _start label used by the boot rom (see 25 * bytes allocated after the _start label used by the boot rom (see
26 * head.S for details). 26 * head.S for details).
27 */ 27 */
28 typedef struct boot_block { 28 typedef struct boot_block {
29 uint32_t bb_magic; /* 0x0052504F */ 29 uint32_t bb_magic; /* 0x0052504F */
30 uint32_t bb_dest; /* Target address of the image */ 30 uint32_t bb_dest; /* Target address of the image */
31 uint32_t bb_num_512blocks; /* Size, rounded-up, in 512 byte blks */ 31 uint32_t bb_num_512blocks; /* Size, rounded-up, in 512 byte blks */
32 uint32_t bb_debug_flag; /* Run debugger or image after load */ 32 uint32_t bb_debug_flag; /* Run debugger or image after load */
33 uint32_t bb_entry_point; /* The image address to start */ 33 uint32_t bb_entry_point; /* The image address to start */
34 uint32_t bb_checksum; /* 32 bit checksum including header */ 34 uint32_t bb_checksum; /* 32 bit checksum including header */
35 uint32_t reserved[2]; 35 uint32_t reserved[2];
36 } boot_block_t; 36 } boot_block_t;
37 37
38 #define IMGBLK 512 38 #define IMGBLK 512
39 char tmpbuf[IMGBLK]; 39 char tmpbuf[IMGBLK];
40 40
41 int main(int argc, char *argv[]) 41 int main(int argc, char *argv[])
42 { 42 {
43 int in_fd, out_fd; 43 int in_fd, out_fd;
44 int nblks, i; 44 int nblks, i;
45 uint cksum, *cp; 45 uint cksum, *cp;
46 struct stat st; 46 struct stat st;
47 boot_block_t bt; 47 boot_block_t bt;
48 48
49 if (argc < 3) { 49 if (argc < 5) {
50 fprintf(stderr, "usage: %s <zImage-file> <boot-image> [entry-point]\n",argv[0]); 50 fprintf(stderr, "usage: %s <zImage-file> <boot-image> <load address> <entry point>\n",argv[0]);
51 exit(1); 51 exit(1);
52 } 52 }
53 53
54 if (stat(argv[1], &st) < 0) { 54 if (stat(argv[1], &st) < 0) {
55 perror("stat"); 55 perror("stat");
56 exit(2); 56 exit(2);
57 } 57 }
58 58
59 nblks = (st.st_size + IMGBLK) / IMGBLK; 59 nblks = (st.st_size + IMGBLK) / IMGBLK;
60 60
61 bt.bb_magic = htonl(0x0052504F); 61 bt.bb_magic = htonl(0x0052504F);
62 62
63 /* If we have the optional entry point parameter, use it */ 63 /* If we have the optional entry point parameter, use it */
64 if (argc == 4) 64 bt.bb_dest = htonl(strtoul(argv[3], NULL, 0));
65 bt.bb_dest = bt.bb_entry_point = htonl(strtoul(argv[3], NULL, 0)); 65 bt.bb_entry_point = htonl(strtoul(argv[4], NULL, 0));
66 else
67 bt.bb_dest = bt.bb_entry_point = htonl(0x500000);
68 66
69 /* We know these from the linker command. 67 /* We know these from the linker command.
70 * ...and then move it up into memory a little more so the 68 * ...and then move it up into memory a little more so the
71 * relocation can happen. 69 * relocation can happen.
72 */ 70 */
73 bt.bb_num_512blocks = htonl(nblks); 71 bt.bb_num_512blocks = htonl(nblks);
74 bt.bb_debug_flag = 0; 72 bt.bb_debug_flag = 0;
75 73
76 bt.bb_checksum = 0; 74 bt.bb_checksum = 0;
77 75
78 /* To be neat and tidy :-). 76 /* To be neat and tidy :-).
79 */ 77 */
80 bt.reserved[0] = 0; 78 bt.reserved[0] = 0;
81 bt.reserved[1] = 0; 79 bt.reserved[1] = 0;
82 80
83 if ((in_fd = open(argv[1], O_RDONLY)) < 0) { 81 if ((in_fd = open(argv[1], O_RDONLY)) < 0) {
84 perror("zImage open"); 82 perror("zImage open");
85 exit(3); 83 exit(3);
86 } 84 }
87 85
88 if ((out_fd = open(argv[2], (O_RDWR | O_CREAT | O_TRUNC), 0666)) < 0) { 86 if ((out_fd = open(argv[2], (O_RDWR | O_CREAT | O_TRUNC), 0666)) < 0) {
89 perror("bootfile open"); 87 perror("bootfile open");
90 exit(3); 88 exit(3);
91 } 89 }
92 90
93 cksum = 0; 91 cksum = 0;
94 cp = (void *)&bt; 92 cp = (void *)&bt;
95 for (i=0; i<sizeof(bt)/sizeof(uint); i++) 93 for (i=0; i<sizeof(bt)/sizeof(uint); i++)
96 cksum += *cp++; 94 cksum += *cp++;
97 95
98 /* Assume zImage is an ELF file, and skip the 64K header. 96 /* Assume zImage is an ELF file, and skip the 64K header.
99 */ 97 */
100 if (read(in_fd, tmpbuf, IMGBLK) != IMGBLK) { 98 if (read(in_fd, tmpbuf, IMGBLK) != IMGBLK) {
101 fprintf(stderr, "%s is too small to be an ELF image\n", 99 fprintf(stderr, "%s is too small to be an ELF image\n",
102 argv[1]); 100 argv[1]);
103 exit(4); 101 exit(4);
104 } 102 }
105 103
106 if ((*(uint *)tmpbuf) != htonl(0x7f454c46)) { 104 if ((*(uint *)tmpbuf) != htonl(0x7f454c46)) {
107 fprintf(stderr, "%s is not an ELF image\n", argv[1]); 105 fprintf(stderr, "%s is not an ELF image\n", argv[1]);
108 exit(4); 106 exit(4);
109 } 107 }
110 108
111 if (lseek(in_fd, (64 * 1024), SEEK_SET) < 0) { 109 if (lseek(in_fd, (64 * 1024), SEEK_SET) < 0) {
112 fprintf(stderr, "%s failed to seek in ELF image\n", argv[1]); 110 fprintf(stderr, "%s failed to seek in ELF image\n", argv[1]);
113 exit(4); 111 exit(4);
114 } 112 }
115 113
116 nblks -= (64 * 1024) / IMGBLK; 114 nblks -= (64 * 1024) / IMGBLK;
117 115
118 /* And away we go...... 116 /* And away we go......
119 */ 117 */
120 if (write(out_fd, &bt, sizeof(bt)) != sizeof(bt)) { 118 if (write(out_fd, &bt, sizeof(bt)) != sizeof(bt)) {
121 perror("boot-image write"); 119 perror("boot-image write");
122 exit(5); 120 exit(5);
123 } 121 }
124 122
125 while (nblks-- > 0) { 123 while (nblks-- > 0) {
126 if (read(in_fd, tmpbuf, IMGBLK) < 0) { 124 if (read(in_fd, tmpbuf, IMGBLK) < 0) {
127 perror("zImage read"); 125 perror("zImage read");
128 exit(5); 126 exit(5);
129 } 127 }
130 cp = (uint *)tmpbuf; 128 cp = (uint *)tmpbuf;
131 for (i=0; i<sizeof(tmpbuf)/sizeof(uint); i++) 129 for (i=0; i<sizeof(tmpbuf)/sizeof(uint); i++)
132 cksum += *cp++; 130 cksum += *cp++;
133 if (write(out_fd, tmpbuf, sizeof(tmpbuf)) != sizeof(tmpbuf)) { 131 if (write(out_fd, tmpbuf, sizeof(tmpbuf)) != sizeof(tmpbuf)) {
134 perror("boot-image write"); 132 perror("boot-image write");
135 exit(5); 133 exit(5);
136 } 134 }
137 } 135 }
138 136
139 /* rewrite the header with the computed checksum. 137 /* rewrite the header with the computed checksum.
140 */ 138 */
141 bt.bb_checksum = htonl(cksum); 139 bt.bb_checksum = htonl(cksum);
142 if (lseek(out_fd, 0, SEEK_SET) < 0) { 140 if (lseek(out_fd, 0, SEEK_SET) < 0) {
143 perror("rewrite seek"); 141 perror("rewrite seek");
144 exit(1); 142 exit(1);
145 } 143 }
146 if (write(out_fd, &bt, sizeof(bt)) != sizeof(bt)) { 144 if (write(out_fd, &bt, sizeof(bt)) != sizeof(bt)) {
147 perror("boot-image rewrite"); 145 perror("boot-image rewrite");
148 exit(1); 146 exit(1);
149 } 147 }
150 148
151 exit(0); 149 exit(0);
152 } 150 }
153 151
arch/powerpc/boot/treeboot-ebony.c
File was created 1 /*
2 * Old U-boot compatibility for Ebony
3 *
4 * Author: David Gibson <david@gibson.dropbear.id.au>
5 *
6 * Copyright 2007 David Gibson, IBM Corporatio.
7 * Based on cuboot-83xx.c, which is:
8 * Copyright (c) 2007 Freescale Semiconductor, Inc.
9 *
10 * This program is free software; you can redistribute it and/or modify it
11 * under the terms of the GNU General Public License version 2 as published
12 * by the Free Software Foundation.
13 */
14
15 #include "ops.h"
16 #include "stdio.h"
17 #include "44x.h"
18
19 extern char _end[];
20
21 BSS_STACK(4096);
22
23 #define OPENBIOS_MAC_BASE 0xfffffe0c
24 #define OPENBIOS_MAC_OFFSET 0xc
25
26 void platform_init(void)
27 {
28 unsigned long end_of_ram = 0x8000000;
29 unsigned long avail_ram = end_of_ram - (unsigned long)_end;
30
31 simple_alloc_init(_end, avail_ram, 32, 64);
32 ebony_init((u8 *)OPENBIOS_MAC_BASE,
33 (u8 *)(OPENBIOS_MAC_BASE + OPENBIOS_MAC_OFFSET));
34 }
35
arch/powerpc/boot/wrapper
1 #!/bin/sh 1 #!/bin/sh
2 2
3 # Copyright (C) 2006 Paul Mackerras, IBM Corporation <paulus@samba.org> 3 # Copyright (C) 2006 Paul Mackerras, IBM Corporation <paulus@samba.org>
4 # This program may be used under the terms of version 2 of the GNU 4 # This program may be used under the terms of version 2 of the GNU
5 # General Public License. 5 # General Public License.
6 6
7 # This script takes a kernel binary and optionally an initrd image 7 # This script takes a kernel binary and optionally an initrd image
8 # and/or a device-tree blob, and creates a bootable zImage for a 8 # and/or a device-tree blob, and creates a bootable zImage for a
9 # given platform. 9 # given platform.
10 10
11 # Options: 11 # Options:
12 # -o zImage specify output file 12 # -o zImage specify output file
13 # -p platform specify platform (links in $platform.o) 13 # -p platform specify platform (links in $platform.o)
14 # -i initrd specify initrd file 14 # -i initrd specify initrd file
15 # -d devtree specify device-tree blob 15 # -d devtree specify device-tree blob
16 # -s tree.dts specify device-tree source file (needs dtc installed) 16 # -s tree.dts specify device-tree source file (needs dtc installed)
17 # -c cache $kernel.strip.gz (use if present & newer, else make) 17 # -c cache $kernel.strip.gz (use if present & newer, else make)
18 # -C prefix specify command prefix for cross-building tools 18 # -C prefix specify command prefix for cross-building tools
19 # (strip, objcopy, ld) 19 # (strip, objcopy, ld)
20 # -D dir specify directory containing data files used by script 20 # -D dir specify directory containing data files used by script
21 # (default ./arch/powerpc/boot) 21 # (default ./arch/powerpc/boot)
22 # -W dir specify working directory for temporary files (default .) 22 # -W dir specify working directory for temporary files (default .)
23 23
24 # defaults 24 # defaults
25 kernel= 25 kernel=
26 ofile=zImage 26 ofile=zImage
27 platform=of 27 platform=of
28 initrd= 28 initrd=
29 dtb= 29 dtb=
30 dts= 30 dts=
31 cacheit= 31 cacheit=
32 gzip=.gz 32 gzip=.gz
33 33
34 # cross-compilation prefix 34 # cross-compilation prefix
35 CROSS= 35 CROSS=
36 36
37 # directory for object and other files used by this script 37 # directory for object and other files used by this script
38 object=arch/powerpc/boot 38 object=arch/powerpc/boot
39 39
40 # directory for working files 40 # directory for working files
41 tmpdir=. 41 tmpdir=.
42 42
43 usage() { 43 usage() {
44 echo 'Usage: wrapper [-o output] [-p platform] [-i initrd]' >&2 44 echo 'Usage: wrapper [-o output] [-p platform] [-i initrd]' >&2
45 echo ' [-d devtree] [-s tree.dts] [-c] [-C cross-prefix]' >&2 45 echo ' [-d devtree] [-s tree.dts] [-c] [-C cross-prefix]' >&2
46 echo ' [-D datadir] [-W workingdir] [--no-gzip] [vmlinux]' >&2 46 echo ' [-D datadir] [-W workingdir] [--no-gzip] [vmlinux]' >&2
47 exit 1 47 exit 1
48 } 48 }
49 49
50 while [ "$#" -gt 0 ]; do 50 while [ "$#" -gt 0 ]; do
51 case "$1" in 51 case "$1" in
52 -o) 52 -o)
53 shift 53 shift
54 [ "$#" -gt 0 ] || usage 54 [ "$#" -gt 0 ] || usage
55 ofile="$1" 55 ofile="$1"
56 ;; 56 ;;
57 -p) 57 -p)
58 shift 58 shift
59 [ "$#" -gt 0 ] || usage 59 [ "$#" -gt 0 ] || usage
60 platform="$1" 60 platform="$1"
61 ;; 61 ;;
62 -i) 62 -i)
63 shift 63 shift
64 [ "$#" -gt 0 ] || usage 64 [ "$#" -gt 0 ] || usage
65 initrd="$1" 65 initrd="$1"
66 ;; 66 ;;
67 -d) 67 -d)
68 shift 68 shift
69 [ "$#" -gt 0 ] || usage 69 [ "$#" -gt 0 ] || usage
70 dtb="$1" 70 dtb="$1"
71 ;; 71 ;;
72 -s) 72 -s)
73 shift 73 shift
74 [ "$#" -gt 0 ] || usage 74 [ "$#" -gt 0 ] || usage
75 dts="$1" 75 dts="$1"
76 ;; 76 ;;
77 -c) 77 -c)
78 cacheit=y 78 cacheit=y
79 ;; 79 ;;
80 -C) 80 -C)
81 shift 81 shift
82 [ "$#" -gt 0 ] || usage 82 [ "$#" -gt 0 ] || usage
83 CROSS="$1" 83 CROSS="$1"
84 ;; 84 ;;
85 -D) 85 -D)
86 shift 86 shift
87 [ "$#" -gt 0 ] || usage 87 [ "$#" -gt 0 ] || usage
88 object="$1" 88 object="$1"
89 ;; 89 ;;
90 -W) 90 -W)
91 shift 91 shift
92 [ "$#" -gt 0 ] || usage 92 [ "$#" -gt 0 ] || usage
93 tmpdir="$1" 93 tmpdir="$1"
94 ;; 94 ;;
95 --no-gzip) 95 --no-gzip)
96 gzip= 96 gzip=
97 ;; 97 ;;
98 -?) 98 -?)
99 usage 99 usage
100 ;; 100 ;;
101 *) 101 *)
102 [ -z "$kernel" ] || usage 102 [ -z "$kernel" ] || usage
103 kernel="$1" 103 kernel="$1"
104 ;; 104 ;;
105 esac 105 esac
106 shift 106 shift
107 done 107 done
108 108
109 if [ -n "$dts" ]; then 109 if [ -n "$dts" ]; then
110 if [ -z "$dtb" ]; then 110 if [ -z "$dtb" ]; then
111 dtb="$platform.dtb" 111 dtb="$platform.dtb"
112 fi 112 fi
113 dtc -O dtb -o "$dtb" -b 0 -V 16 "$dts" || exit 1 113 dtc -O dtb -o "$dtb" -b 0 -V 16 "$dts" || exit 1
114 fi 114 fi
115 115
116 if [ -z "$kernel" ]; then 116 if [ -z "$kernel" ]; then
117 kernel=vmlinux 117 kernel=vmlinux
118 fi 118 fi
119 119
120 platformo=$object/"$platform".o 120 platformo=$object/"$platform".o
121 lds=$object/zImage.lds 121 lds=$object/zImage.lds
122 ext=strip 122 ext=strip
123 objflags=-S 123 objflags=-S
124 tmp=$tmpdir/zImage.$$.o 124 tmp=$tmpdir/zImage.$$.o
125 ksection=.kernel:vmlinux.strip 125 ksection=.kernel:vmlinux.strip
126 isection=.kernel:initrd 126 isection=.kernel:initrd
127 127
128 case "$platform" in 128 case "$platform" in
129 pmac|pseries|chrp) 129 pmac|pseries|chrp)
130 platformo=$object/of.o 130 platformo=$object/of.o
131 ;; 131 ;;
132 pmaccoff) 132 pmaccoff)
133 platformo=$object/of.o 133 platformo=$object/of.o
134 lds=$object/zImage.coff.lds 134 lds=$object/zImage.coff.lds
135 ;; 135 ;;
136 miboot|uboot) 136 miboot|uboot)
137 # miboot and U-boot want just the bare bits, not an ELF binary 137 # miboot and U-boot want just the bare bits, not an ELF binary
138 ext=bin 138 ext=bin
139 objflags="-O binary" 139 objflags="-O binary"
140 tmp="$ofile" 140 tmp="$ofile"
141 ksection=image 141 ksection=image
142 isection=initrd 142 isection=initrd
143 ;; 143 ;;
144 cuboot*) 144 cuboot*)
145 gzip= 145 gzip=
146 ;; 146 ;;
147 esac 147 esac
148 148
149 vmz="$tmpdir/`basename \"$kernel\"`.$ext" 149 vmz="$tmpdir/`basename \"$kernel\"`.$ext"
150 if [ -z "$cacheit" -o ! -f "$vmz$gzip" -o "$vmz$gzip" -ot "$kernel" ]; then 150 if [ -z "$cacheit" -o ! -f "$vmz$gzip" -o "$vmz$gzip" -ot "$kernel" ]; then
151 ${CROSS}objcopy $objflags "$kernel" "$vmz.$$" 151 ${CROSS}objcopy $objflags "$kernel" "$vmz.$$"
152 152
153 if [ -n "$gzip" ]; then 153 if [ -n "$gzip" ]; then
154 gzip -f -9 "$vmz.$$" 154 gzip -f -9 "$vmz.$$"
155 fi 155 fi
156 156
157 if [ -n "$cacheit" ]; then 157 if [ -n "$cacheit" ]; then
158 mv -f "$vmz.$$$gzip" "$vmz$gzip" 158 mv -f "$vmz.$$$gzip" "$vmz$gzip"
159 else 159 else
160 vmz="$vmz.$$" 160 vmz="$vmz.$$"
161 fi 161 fi
162 fi 162 fi
163 163
164 vmz="$vmz$gzip" 164 vmz="$vmz$gzip"
165 165
166 # Extract kernel version information, some platforms want to include 166 # Extract kernel version information, some platforms want to include
167 # it in the image header 167 # it in the image header
168 version=`${CROSS}strings "$kernel" | grep '^Linux version [-0-9.]' | \ 168 version=`${CROSS}strings "$kernel" | grep '^Linux version [-0-9.]' | \
169 cut -d' ' -f3` 169 cut -d' ' -f3`
170 if [ -n "$version" ]; then 170 if [ -n "$version" ]; then
171 uboot_version="-n Linux-$version" 171 uboot_version="-n Linux-$version"
172 fi 172 fi
173 173
174 case "$platform" in 174 case "$platform" in
175 uboot) 175 uboot)
176 rm -f "$ofile" 176 rm -f "$ofile"
177 mkimage -A ppc -O linux -T kernel -C gzip -a 00000000 -e 00000000 \ 177 mkimage -A ppc -O linux -T kernel -C gzip -a 00000000 -e 00000000 \
178 $uboot_version -d "$vmz" "$ofile" 178 $uboot_version -d "$vmz" "$ofile"
179 if [ -z "$cacheit" ]; then 179 if [ -z "$cacheit" ]; then
180 rm -f "$vmz" 180 rm -f "$vmz"
181 fi 181 fi
182 exit 0 182 exit 0
183 ;; 183 ;;
184 esac 184 esac
185 185
186 addsec() { 186 addsec() {
187 ${CROSS}objcopy $4 $1 \ 187 ${CROSS}objcopy $4 $1 \
188 --add-section=$3="$2" \ 188 --add-section=$3="$2" \
189 --set-section-flags=$3=contents,alloc,load,readonly,data 189 --set-section-flags=$3=contents,alloc,load,readonly,data
190 } 190 }
191 191
192 addsec $tmp "$vmz" $ksection $object/empty.o 192 addsec $tmp "$vmz" $ksection $object/empty.o
193 if [ -z "$cacheit" ]; then 193 if [ -z "$cacheit" ]; then
194 rm -f "$vmz" 194 rm -f "$vmz"
195 fi 195 fi
196 196
197 if [ -n "$initrd" ]; then 197 if [ -n "$initrd" ]; then
198 addsec $tmp "$initrd" $isection 198 addsec $tmp "$initrd" $isection
199 fi 199 fi
200 200
201 if [ -n "$dtb" ]; then 201 if [ -n "$dtb" ]; then
202 addsec $tmp "$dtb" .kernel:dtb 202 addsec $tmp "$dtb" .kernel:dtb
203 if [ -n "$dts" ]; then 203 if [ -n "$dts" ]; then
204 rm $dtb 204 rm $dtb
205 fi 205 fi
206 fi 206 fi
207 207
208 if [ "$platform" != "miboot" ]; then 208 if [ "$platform" != "miboot" ]; then
209 ${CROSS}ld -m elf32ppc -T $lds -o "$ofile" \ 209 ${CROSS}ld -m elf32ppc -T $lds -o "$ofile" \
210 $platformo $tmp $object/wrapper.a 210 $platformo $tmp $object/wrapper.a
211 rm $tmp 211 rm $tmp
212 fi 212 fi
213 213
214 # Some platforms need the zImage's entry point and base address 214 # Some platforms need the zImage's entry point and base address
215 base=0x`${CROSS}nm "$ofile" | grep ' _start$' | cut -d' ' -f1` 215 base=0x`${CROSS}nm "$ofile" | grep ' _start$' | cut -d' ' -f1`
216 entry=`${CROSS}objdump -f "$ofile" | grep '^start address ' | cut -d' ' -f3` 216 entry=`${CROSS}objdump -f "$ofile" | grep '^start address ' | cut -d' ' -f3`
217 217
218 # post-processing needed for some platforms 218 # post-processing needed for some platforms
219 case "$platform" in 219 case "$platform" in
220 pseries|chrp) 220 pseries|chrp)
221 $object/addnote "$ofile" 221 $object/addnote "$ofile"
222 ;; 222 ;;
223 pmaccoff) 223 pmaccoff)
224 ${CROSS}objcopy -O aixcoff-rs6000 --set-start "$entry" "$ofile" 224 ${CROSS}objcopy -O aixcoff-rs6000 --set-start "$entry" "$ofile"
225 $object/hack-coff "$ofile" 225 $object/hack-coff "$ofile"
226 ;; 226 ;;
227 cuboot*) 227 cuboot*)
228 mv "$ofile" "$ofile".elf 228 mv "$ofile" "$ofile".elf
229 ${CROSS}objcopy -O binary "$ofile".elf "$ofile".bin 229 ${CROSS}objcopy -O binary "$ofile".elf "$ofile".bin
230 gzip -f -9 "$ofile".bin 230 gzip -f -9 "$ofile".bin
231 mkimage -A ppc -O linux -T kernel -C gzip -a "$base" -e "$entry" \ 231 mkimage -A ppc -O linux -T kernel -C gzip -a "$base" -e "$entry" \
232 $uboot_version -d "$ofile".bin.gz "$ofile" 232 $uboot_version -d "$ofile".bin.gz "$ofile"
233 ;; 233 ;;
234 treeboot*)
235 mv "$ofile" "$ofile.elf"
236 $object/mktree "$ofile.elf" "$ofile" "$base" "$entry"
237 if [ -z "$cacheit" ]; then
238 rm -f "$ofile.elf"
239 fi
240 exit 0
241 ;;
234 esac 242 esac
235 243
arch/powerpc/configs/ebony_defconfig
File was created 1 #
2 # Automatically generated make config: don't edit
3 # Linux kernel version: 2.6.21
4 # Fri May 4 13:47:08 2007
5 #
6 # CONFIG_PPC64 is not set
7 CONFIG_PPC32=y
8 CONFIG_PPC_MERGE=y
9 CONFIG_MMU=y
10 CONFIG_GENERIC_HARDIRQS=y
11 CONFIG_IRQ_PER_CPU=y
12 CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13 CONFIG_ARCH_HAS_ILOG2_U32=y
14 CONFIG_GENERIC_HWEIGHT=y
15 CONFIG_GENERIC_CALIBRATE_DELAY=y
16 CONFIG_GENERIC_FIND_NEXT_BIT=y
17 CONFIG_PPC=y
18 CONFIG_EARLY_PRINTK=y
19 CONFIG_GENERIC_NVRAM=y
20 CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
21 CONFIG_ARCH_MAY_HAVE_PC_FDC=y
22 CONFIG_PPC_OF=y
23 # CONFIG_PPC_UDBG_16550 is not set
24 # CONFIG_GENERIC_TBSYNC is not set
25 CONFIG_AUDIT_ARCH=y
26 CONFIG_GENERIC_BUG=y
27 # CONFIG_DEFAULT_UIMAGE is not set
28
29 #
30 # Processor support
31 #
32 # CONFIG_CLASSIC32 is not set
33 # CONFIG_PPC_82xx is not set
34 # CONFIG_PPC_83xx is not set
35 # CONFIG_PPC_85xx is not set
36 # CONFIG_PPC_86xx is not set
37 # CONFIG_PPC_8xx is not set
38 # CONFIG_40x is not set
39 CONFIG_44x=y
40 # CONFIG_E200 is not set
41 CONFIG_PPC_DCR_NATIVE=y
42 # CONFIG_PPC_DCR_MMIO is not set
43 CONFIG_PPC_DCR=y
44 CONFIG_4xx=y
45 CONFIG_BOOKE=y
46 CONFIG_PTE_64BIT=y
47 CONFIG_PHYS_64BIT=y
48 CONFIG_NOT_COHERENT_CACHE=y
49 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
50
51 #
52 # Code maturity level options
53 #
54 CONFIG_EXPERIMENTAL=y
55 CONFIG_BROKEN_ON_SMP=y
56 CONFIG_INIT_ENV_ARG_LIMIT=32
57
58 #
59 # General setup
60 #
61 CONFIG_LOCALVERSION=""
62 CONFIG_LOCALVERSION_AUTO=y
63 CONFIG_SWAP=y
64 CONFIG_SYSVIPC=y
65 # CONFIG_IPC_NS is not set
66 CONFIG_SYSVIPC_SYSCTL=y
67 CONFIG_POSIX_MQUEUE=y
68 # CONFIG_BSD_PROCESS_ACCT is not set
69 # CONFIG_TASKSTATS is not set
70 # CONFIG_UTS_NS is not set
71 # CONFIG_AUDIT is not set
72 # CONFIG_IKCONFIG is not set
73 CONFIG_SYSFS_DEPRECATED=y
74 # CONFIG_RELAY is not set
75 CONFIG_BLK_DEV_INITRD=y
76 CONFIG_INITRAMFS_SOURCE=""
77 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
78 CONFIG_SYSCTL=y
79 CONFIG_EMBEDDED=y
80 CONFIG_SYSCTL_SYSCALL=y
81 CONFIG_KALLSYMS=y
82 CONFIG_KALLSYMS_ALL=y
83 CONFIG_KALLSYMS_EXTRA_PASS=y
84 CONFIG_HOTPLUG=y
85 CONFIG_PRINTK=y
86 CONFIG_BUG=y
87 CONFIG_ELF_CORE=y
88 CONFIG_BASE_FULL=y
89 CONFIG_FUTEX=y
90 CONFIG_EPOLL=y
91 CONFIG_SHMEM=y
92 CONFIG_SLAB=y
93 CONFIG_VM_EVENT_COUNTERS=y
94 CONFIG_RT_MUTEXES=y
95 # CONFIG_TINY_SHMEM is not set
96 CONFIG_BASE_SMALL=0
97 # CONFIG_SLOB is not set
98
99 #
100 # Loadable module support
101 #
102 CONFIG_MODULES=y
103 CONFIG_MODULE_UNLOAD=y
104 # CONFIG_MODULE_FORCE_UNLOAD is not set
105 # CONFIG_MODVERSIONS is not set
106 # CONFIG_MODULE_SRCVERSION_ALL is not set
107 CONFIG_KMOD=y
108
109 #
110 # Block layer
111 #
112 CONFIG_BLOCK=y
113 CONFIG_LBD=y
114 # CONFIG_BLK_DEV_IO_TRACE is not set
115 # CONFIG_LSF is not set
116
117 #
118 # IO Schedulers
119 #
120 CONFIG_IOSCHED_NOOP=y
121 CONFIG_IOSCHED_AS=y
122 CONFIG_IOSCHED_DEADLINE=y
123 CONFIG_IOSCHED_CFQ=y
124 CONFIG_DEFAULT_AS=y
125 # CONFIG_DEFAULT_DEADLINE is not set
126 # CONFIG_DEFAULT_CFQ is not set
127 # CONFIG_DEFAULT_NOOP is not set
128 CONFIG_DEFAULT_IOSCHED="anticipatory"
129
130 #
131 # Platform support
132 #
133 # CONFIG_PPC_MPC52xx is not set
134 # CONFIG_PPC_MPC5200 is not set
135 # CONFIG_PPC_CELL is not set
136 # CONFIG_PPC_CELL_NATIVE is not set
137 # CONFIG_PQ2ADS is not set
138 CONFIG_EBONY=y
139 CONFIG_440GP=y
140 # CONFIG_MPIC is not set
141 # CONFIG_MPIC_WEIRD is not set
142 # CONFIG_PPC_I8259 is not set
143 # CONFIG_PPC_RTAS is not set
144 # CONFIG_MMIO_NVRAM is not set
145 # CONFIG_PPC_MPC106 is not set
146 # CONFIG_PPC_970_NAP is not set
147 # CONFIG_PPC_INDIRECT_IO is not set
148 # CONFIG_GENERIC_IOMAP is not set
149 # CONFIG_CPU_FREQ is not set
150 # CONFIG_CPM2 is not set
151
152 #
153 # Kernel options
154 #
155 # CONFIG_HIGHMEM is not set
156 # CONFIG_HZ_100 is not set
157 CONFIG_HZ_250=y
158 # CONFIG_HZ_300 is not set
159 # CONFIG_HZ_1000 is not set
160 CONFIG_HZ=250
161 CONFIG_PREEMPT_NONE=y
162 # CONFIG_PREEMPT_VOLUNTARY is not set
163 # CONFIG_PREEMPT is not set
164 CONFIG_BINFMT_ELF=y
165 # CONFIG_BINFMT_MISC is not set
166 CONFIG_MATH_EMULATION=y
167 CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
168 CONFIG_ARCH_FLATMEM_ENABLE=y
169 CONFIG_ARCH_POPULATES_NODE_MAP=y
170 CONFIG_SELECT_MEMORY_MODEL=y
171 CONFIG_FLATMEM_MANUAL=y
172 # CONFIG_DISCONTIGMEM_MANUAL is not set
173 # CONFIG_SPARSEMEM_MANUAL is not set
174 CONFIG_FLATMEM=y
175 CONFIG_FLAT_NODE_MEM_MAP=y
176 # CONFIG_SPARSEMEM_STATIC is not set
177 CONFIG_SPLIT_PTLOCK_CPUS=4
178 CONFIG_RESOURCES_64BIT=y
179 CONFIG_ZONE_DMA_FLAG=1
180 CONFIG_PROC_DEVICETREE=y
181 # CONFIG_CMDLINE_BOOL is not set
182 CONFIG_SECCOMP=y
183 CONFIG_WANT_DEVICE_TREE=y
184 CONFIG_DEVICE_TREE="ebony.dts"
185 CONFIG_ISA_DMA_API=y
186
187 #
188 # Bus options
189 #
190 CONFIG_ZONE_DMA=y
191 CONFIG_PPC_INDIRECT_PCI=y
192 # CONFIG_PPC_INDIRECT_PCI_BE is not set
193 CONFIG_PCI=y
194 CONFIG_PCI_DOMAINS=y
195 # CONFIG_PCIEPORTBUS is not set
196 # CONFIG_PCI_DEBUG is not set
197
198 #
199 # PCCARD (PCMCIA/CardBus) support
200 #
201 # CONFIG_PCCARD is not set
202
203 #
204 # PCI Hotplug Support
205 #
206 # CONFIG_HOTPLUG_PCI is not set
207
208 #
209 # Advanced setup
210 #
211 # CONFIG_ADVANCED_OPTIONS is not set
212
213 #
214 # Default settings for advanced configuration options are used
215 #
216 CONFIG_HIGHMEM_START=0xfe000000
217 CONFIG_LOWMEM_SIZE=0x30000000
218 CONFIG_KERNEL_START=0xc0000000
219 CONFIG_TASK_SIZE=0x80000000
220 CONFIG_CONSISTENT_START=0xff100000
221 CONFIG_CONSISTENT_SIZE=0x00200000
222 CONFIG_BOOT_LOAD=0x01000000
223
224 #
225 # Networking
226 #
227 CONFIG_NET=y
228
229 #
230 # Networking options
231 #
232 CONFIG_PACKET=y
233 # CONFIG_PACKET_MMAP is not set
234 CONFIG_UNIX=y
235 # CONFIG_NET_KEY is not set
236 CONFIG_INET=y
237 # CONFIG_IP_MULTICAST is not set
238 # CONFIG_IP_ADVANCED_ROUTER is not set
239 CONFIG_IP_FIB_HASH=y
240 CONFIG_IP_PNP=y
241 CONFIG_IP_PNP_DHCP=y
242 CONFIG_IP_PNP_BOOTP=y
243 # CONFIG_IP_PNP_RARP is not set
244 # CONFIG_NET_IPIP is not set
245 # CONFIG_NET_IPGRE is not set
246 # CONFIG_ARPD is not set
247 # CONFIG_SYN_COOKIES is not set
248 # CONFIG_INET_AH is not set
249 # CONFIG_INET_ESP is not set
250 # CONFIG_INET_IPCOMP is not set
251 # CONFIG_INET_XFRM_TUNNEL is not set
252 # CONFIG_INET_TUNNEL is not set
253 # CONFIG_INET_XFRM_MODE_TRANSPORT is not set
254 # CONFIG_INET_XFRM_MODE_TUNNEL is not set
255 # CONFIG_INET_XFRM_MODE_BEET is not set
256 CONFIG_INET_DIAG=y
257 CONFIG_INET_TCP_DIAG=y
258 # CONFIG_TCP_CONG_ADVANCED is not set
259 CONFIG_TCP_CONG_CUBIC=y
260 CONFIG_DEFAULT_TCP_CONG="cubic"
261 # CONFIG_TCP_MD5SIG is not set
262 # CONFIG_IPV6 is not set
263 # CONFIG_INET6_XFRM_TUNNEL is not set
264 # CONFIG_INET6_TUNNEL is not set
265 # CONFIG_NETWORK_SECMARK is not set
266 # CONFIG_NETFILTER is not set
267
268 #
269 # DCCP Configuration (EXPERIMENTAL)
270 #
271 # CONFIG_IP_DCCP is not set
272
273 #
274 # SCTP Configuration (EXPERIMENTAL)
275 #
276 # CONFIG_IP_SCTP is not set
277
278 #
279 # TIPC Configuration (EXPERIMENTAL)
280 #
281 # CONFIG_TIPC is not set
282 # CONFIG_ATM is not set
283 # CONFIG_BRIDGE is not set
284 # CONFIG_VLAN_8021Q is not set
285 # CONFIG_DECNET is not set
286 # CONFIG_LLC2 is not set
287 # CONFIG_IPX is not set
288 # CONFIG_ATALK is not set
289 # CONFIG_X25 is not set
290 # CONFIG_LAPB is not set
291 # CONFIG_ECONET is not set
292 # CONFIG_WAN_ROUTER is not set
293
294 #
295 # QoS and/or fair queueing
296 #
297 # CONFIG_NET_SCHED is not set
298
299 #
300 # Network testing
301 #
302 # CONFIG_NET_PKTGEN is not set
303 # CONFIG_HAMRADIO is not set
304 # CONFIG_IRDA is not set
305 # CONFIG_BT is not set
306 # CONFIG_AF_RXRPC is not set
307
308 #
309 # Wireless
310 #
311 # CONFIG_CFG80211 is not set
312 # CONFIG_WIRELESS_EXT is not set
313 # CONFIG_IEEE80211 is not set
314
315 #
316 # Device Drivers
317 #
318
319 #
320 # Generic Driver Options
321 #
322 CONFIG_STANDALONE=y
323 CONFIG_PREVENT_FIRMWARE_BUILD=y
324 CONFIG_FW_LOADER=y
325 # CONFIG_DEBUG_DRIVER is not set
326 # CONFIG_DEBUG_DEVRES is not set
327 # CONFIG_SYS_HYPERVISOR is not set
328
329 #
330 # Connector - unified userspace <-> kernelspace linker
331 #
332 CONFIG_CONNECTOR=y
333 CONFIG_PROC_EVENTS=y
334 # CONFIG_MTD is not set
335
336 #
337 # Parallel port support
338 #
339 # CONFIG_PARPORT is not set
340
341 #
342 # Plug and Play support
343 #
344 # CONFIG_PNPACPI is not set
345
346 #
347 # Block devices
348 #
349 # CONFIG_BLK_DEV_FD is not set
350 # CONFIG_BLK_CPQ_DA is not set
351 # CONFIG_BLK_CPQ_CISS_DA is not set
352 # CONFIG_BLK_DEV_DAC960 is not set
353 # CONFIG_BLK_DEV_UMEM is not set
354 # CONFIG_BLK_DEV_COW_COMMON is not set
355 # CONFIG_BLK_DEV_LOOP is not set
356 # CONFIG_BLK_DEV_NBD is not set
357 # CONFIG_BLK_DEV_SX8 is not set
358 CONFIG_BLK_DEV_RAM=y
359 CONFIG_BLK_DEV_RAM_COUNT=16
360 CONFIG_BLK_DEV_RAM_SIZE=35000
361 CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
362 # CONFIG_CDROM_PKTCDVD is not set
363 # CONFIG_ATA_OVER_ETH is not set
364
365 #
366 # Misc devices
367 #
368 # CONFIG_SGI_IOC4 is not set
369 # CONFIG_TIFM_CORE is not set
370
371 #
372 # ATA/ATAPI/MFM/RLL support
373 #
374 # CONFIG_IDE is not set
375
376 #
377 # SCSI device support
378 #
379 # CONFIG_RAID_ATTRS is not set
380 # CONFIG_SCSI is not set
381 # CONFIG_SCSI_NETLINK is not set
382
383 #
384 # Serial ATA (prod) and Parallel ATA (experimental) drivers
385 #
386 # CONFIG_ATA is not set
387
388 #
389 # Multi-device support (RAID and LVM)
390 #
391 # CONFIG_MD is not set
392
393 #
394 # Fusion MPT device support
395 #
396 # CONFIG_FUSION is not set
397
398 #
399 # IEEE 1394 (FireWire) support
400 #
401 # CONFIG_IEEE1394 is not set
402
403 #
404 # I2O device support
405 #
406 # CONFIG_I2O is not set
407 # CONFIG_MACINTOSH_DRIVERS is not set
408
409 #
410 # Network device support
411 #
412 CONFIG_NETDEVICES=y
413 # CONFIG_DUMMY is not set
414 # CONFIG_BONDING is not set
415 # CONFIG_EQUALIZER is not set
416 # CONFIG_TUN is not set
417
418 #
419 # ARCnet devices
420 #
421 # CONFIG_ARCNET is not set
422
423 #
424 # PHY device support
425 #
426
427 #
428 # Ethernet (10 or 100Mbit)
429 #
430 # CONFIG_NET_ETHERNET is not set
431 CONFIG_IBM_NEW_EMAC=y
432 CONFIG_IBM_NEW_EMAC_RXB=128
433 CONFIG_IBM_NEW_EMAC_TXB=64
434 CONFIG_IBM_NEW_EMAC_POLL_WEIGHT=32
435 CONFIG_IBM_NEW_EMAC_RX_COPY_THRESHOLD=256
436 CONFIG_IBM_NEW_EMAC_RX_SKB_HEADROOM=0
437 # CONFIG_IBM_NEW_EMAC_DEBUG is not set
438 CONFIG_IBM_NEW_EMAC_ZMII=y
439 # CONFIG_IBM_NEW_EMAC_RGMII is not set
440 # CONFIG_IBM_NEW_EMAC_TAH is not set
441 # CONFIG_IBM_NEW_EMAC_EMAC4 is not set
442
443 #
444 # Ethernet (1000 Mbit)
445 #
446 # CONFIG_ACENIC is not set
447 # CONFIG_DL2K is not set
448 # CONFIG_E1000 is not set
449 # CONFIG_NS83820 is not set
450 # CONFIG_HAMACHI is not set
451 # CONFIG_YELLOWFIN is not set
452 # CONFIG_R8169 is not set
453 # CONFIG_SIS190 is not set
454 # CONFIG_SKGE is not set
455 # CONFIG_SKY2 is not set
456 # CONFIG_SK98LIN is not set
457 # CONFIG_TIGON3 is not set
458 # CONFIG_BNX2 is not set
459 # CONFIG_QLA3XXX is not set
460 # CONFIG_ATL1 is not set
461
462 #
463 # Ethernet (10000 Mbit)
464 #
465 # CONFIG_CHELSIO_T1 is not set
466 # CONFIG_CHELSIO_T3 is not set
467 # CONFIG_IXGB is not set
468 # CONFIG_S2IO is not set
469 # CONFIG_MYRI10GE is not set
470 # CONFIG_NETXEN_NIC is not set
471
472 #
473 # Token Ring devices
474 #
475 # CONFIG_TR is not set
476
477 #
478 # Wireless LAN
479 #
480 # CONFIG_WLAN_PRE80211 is not set
481 # CONFIG_WLAN_80211 is not set
482
483 #
484 # Wan interfaces
485 #
486 # CONFIG_WAN is not set
487 # CONFIG_FDDI is not set
488 # CONFIG_HIPPI is not set
489 # CONFIG_PPP is not set
490 # CONFIG_SLIP is not set
491 # CONFIG_SHAPER is not set
492 # CONFIG_NETCONSOLE is not set
493 # CONFIG_NETPOLL is not set
494 # CONFIG_NET_POLL_CONTROLLER is not set
495
496 #
497 # ISDN subsystem
498 #
499 # CONFIG_ISDN is not set
500
501 #
502 # Telephony Support
503 #
504 # CONFIG_PHONE is not set
505
506 #
507 # Input device support
508 #
509 # CONFIG_INPUT is not set
510
511 #
512 # Hardware I/O ports
513 #
514 # CONFIG_SERIO is not set
515 # CONFIG_GAMEPORT is not set
516
517 #
518 # Character devices
519 #
520 # CONFIG_VT is not set
521 # CONFIG_SERIAL_NONSTANDARD is not set
522
523 #
524 # Serial drivers
525 #
526 CONFIG_SERIAL_8250=y
527 CONFIG_SERIAL_8250_CONSOLE=y
528 # CONFIG_SERIAL_8250_PCI is not set
529 CONFIG_SERIAL_8250_NR_UARTS=4
530 CONFIG_SERIAL_8250_RUNTIME_UARTS=4
531 CONFIG_SERIAL_8250_EXTENDED=y
532 # CONFIG_SERIAL_8250_MANY_PORTS is not set
533 CONFIG_SERIAL_8250_SHARE_IRQ=y
534 # CONFIG_SERIAL_8250_DETECT_IRQ is not set
535 # CONFIG_SERIAL_8250_RSA is not set
536
537 #
538 # Non-8250 serial port support
539 #
540 # CONFIG_SERIAL_UARTLITE is not set
541 CONFIG_SERIAL_CORE=y
542 CONFIG_SERIAL_CORE_CONSOLE=y
543 # CONFIG_SERIAL_JSM is not set
544 CONFIG_SERIAL_OF_PLATFORM=y
545 CONFIG_UNIX98_PTYS=y
546 CONFIG_LEGACY_PTYS=y
547 CONFIG_LEGACY_PTY_COUNT=256
548
549 #
550 # IPMI
551 #
552 # CONFIG_IPMI_HANDLER is not set
553
554 #
555 # Watchdog Cards
556 #
557 # CONFIG_WATCHDOG is not set
558 # CONFIG_HW_RANDOM is not set
559 # CONFIG_NVRAM is not set
560 # CONFIG_GEN_RTC is not set
561 # CONFIG_DTLK is not set
562 # CONFIG_R3964 is not set
563 # CONFIG_APPLICOM is not set
564 # CONFIG_AGP is not set
565 # CONFIG_DRM is not set
566 # CONFIG_RAW_DRIVER is not set
567
568 #
569 # TPM devices
570 #
571 # CONFIG_TCG_TPM is not set
572
573 #
574 # I2C support
575 #
576 # CONFIG_I2C is not set
577
578 #
579 # SPI support
580 #
581 # CONFIG_SPI is not set
582 # CONFIG_SPI_MASTER is not set
583
584 #
585 # Dallas's 1-wire bus
586 #
587 # CONFIG_W1 is not set
588
589 #
590 # Hardware Monitoring support
591 #
592 # CONFIG_HWMON is not set
593 # CONFIG_HWMON_VID is not set
594
595 #
596 # Multifunction device drivers
597 #
598 # CONFIG_MFD_SM501 is not set
599
600 #
601 # Multimedia devices
602 #
603 # CONFIG_VIDEO_DEV is not set
604
605 #
606 # Digital Video Broadcasting Devices
607 #
608 # CONFIG_DVB is not set
609
610 #
611 # Graphics support
612 #
613 # CONFIG_BACKLIGHT_LCD_SUPPORT is not set
614 # CONFIG_FB is not set
615 # CONFIG_FB_IBM_GXT4500 is not set
616
617 #
618 # Sound
619 #
620 # CONFIG_SOUND is not set
621
622 #
623 # USB support
624 #
625 CONFIG_USB_ARCH_HAS_HCD=y
626 CONFIG_USB_ARCH_HAS_OHCI=y
627 CONFIG_USB_ARCH_HAS_EHCI=y
628 # CONFIG_USB is not set
629
630 #
631 # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
632 #
633
634 #
635 # USB Gadget Support
636 #
637 # CONFIG_USB_GADGET is not set
638
639 #
640 # MMC/SD Card support
641 #
642 # CONFIG_MMC is not set
643
644 #
645 # LED devices
646 #
647 # CONFIG_NEW_LEDS is not set
648
649 #
650 # LED drivers
651 #
652
653 #
654 # LED Triggers
655 #
656
657 #
658 # InfiniBand support
659 #
660 # CONFIG_INFINIBAND is not set
661
662 #
663 # EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
664 #
665
666 #
667 # Real Time Clock
668 #
669 # CONFIG_RTC_CLASS is not set
670
671 #
672 # DMA Engine support
673 #
674 # CONFIG_DMA_ENGINE is not set
675
676 #
677 # DMA Clients
678 #
679
680 #
681 # DMA Devices
682 #
683
684 #
685 # Auxiliary Display support
686 #
687
688 #
689 # Virtualization
690 #
691
692 #
693 # File systems
694 #
695 CONFIG_EXT2_FS=y
696 # CONFIG_EXT2_FS_XATTR is not set
697 # CONFIG_EXT2_FS_XIP is not set
698 # CONFIG_EXT3_FS is not set
699 # CONFIG_EXT4DEV_FS is not set
700 # CONFIG_REISERFS_FS is not set
701 # CONFIG_JFS_FS is not set
702 # CONFIG_FS_POSIX_ACL is not set
703 # CONFIG_XFS_FS is not set
704 # CONFIG_GFS2_FS is not set
705 # CONFIG_OCFS2_FS is not set
706 # CONFIG_MINIX_FS is not set
707 # CONFIG_ROMFS_FS is not set
708 CONFIG_INOTIFY=y
709 CONFIG_INOTIFY_USER=y
710 # CONFIG_QUOTA is not set
711 CONFIG_DNOTIFY=y
712 # CONFIG_AUTOFS_FS is not set
713 # CONFIG_AUTOFS4_FS is not set
714 # CONFIG_FUSE_FS is not set
715
716 #
717 # CD-ROM/DVD Filesystems
718 #
719 # CONFIG_ISO9660_FS is not set
720 # CONFIG_UDF_FS is not set
721
722 #
723 # DOS/FAT/NT Filesystems
724 #
725 # CONFIG_MSDOS_FS is not set
726 # CONFIG_VFAT_FS is not set
727 # CONFIG_NTFS_FS is not set
728
729 #
730 # Pseudo filesystems
731 #
732 CONFIG_PROC_FS=y
733 CONFIG_PROC_KCORE=y
734 CONFIG_PROC_SYSCTL=y
735 CONFIG_SYSFS=y
736 CONFIG_TMPFS=y
737 # CONFIG_TMPFS_POSIX_ACL is not set
738 # CONFIG_HUGETLB_PAGE is not set
739 CONFIG_RAMFS=y
740 # CONFIG_CONFIGFS_FS is not set
741
742 #
743 # Miscellaneous filesystems
744 #
745 # CONFIG_ADFS_FS is not set
746 # CONFIG_AFFS_FS is not set
747 # CONFIG_HFS_FS is not set
748 # CONFIG_HFSPLUS_FS is not set
749 # CONFIG_BEFS_FS is not set
750 # CONFIG_BFS_FS is not set
751 # CONFIG_EFS_FS is not set
752 CONFIG_CRAMFS=y
753 # CONFIG_VXFS_FS is not set
754 # CONFIG_HPFS_FS is not set
755 # CONFIG_QNX4FS_FS is not set
756 # CONFIG_SYSV_FS is not set
757 # CONFIG_UFS_FS is not set
758
759 #
760 # Network File Systems
761 #
762 CONFIG_NFS_FS=y
763 CONFIG_NFS_V3=y
764 # CONFIG_NFS_V3_ACL is not set
765 # CONFIG_NFS_V4 is not set
766 # CONFIG_NFS_DIRECTIO is not set
767 # CONFIG_NFSD is not set
768 CONFIG_ROOT_NFS=y
769 CONFIG_LOCKD=y
770 CONFIG_LOCKD_V4=y
771 CONFIG_NFS_COMMON=y
772 CONFIG_SUNRPC=y
773 # CONFIG_RPCSEC_GSS_KRB5 is not set
774 # CONFIG_RPCSEC_GSS_SPKM3 is not set
775 # CONFIG_SMB_FS is not set
776 # CONFIG_CIFS is not set
777 # CONFIG_NCP_FS is not set
778 # CONFIG_CODA_FS is not set
779 # CONFIG_AFS_FS is not set
780 # CONFIG_9P_FS is not set
781
782 #
783 # Partition Types
784 #
785 # CONFIG_PARTITION_ADVANCED is not set
786 CONFIG_MSDOS_PARTITION=y
787
788 #
789 # Native Language Support
790 #
791 # CONFIG_NLS is not set
792
793 #
794 # Distributed Lock Manager
795 #
796 # CONFIG_DLM is not set
797 # CONFIG_UCC_SLOW is not set
798 # CONFIG_UCC_FAST is not set
799
800 #
801 # Library routines
802 #
803 CONFIG_BITREVERSE=y
804 # CONFIG_CRC_CCITT is not set
805 # CONFIG_CRC16 is not set
806 CONFIG_CRC32=y
807 # CONFIG_LIBCRC32C is not set
808 CONFIG_ZLIB_INFLATE=y
809 CONFIG_PLIST=y
810 CONFIG_HAS_IOMEM=y
811 CONFIG_HAS_IOPORT=y
812
813 #
814 # Instrumentation Support
815 #
816 # CONFIG_PROFILING is not set
817
818 #
819 # Kernel hacking
820 #
821 # CONFIG_PRINTK_TIME is not set
822 CONFIG_ENABLE_MUST_CHECK=y
823 CONFIG_MAGIC_SYSRQ=y
824 # CONFIG_UNUSED_SYMBOLS is not set
825 # CONFIG_DEBUG_FS is not set
826 # CONFIG_HEADERS_CHECK is not set
827 CONFIG_DEBUG_KERNEL=y
828 # CONFIG_DEBUG_SHIRQ is not set
829 CONFIG_LOG_BUF_SHIFT=14
830 CONFIG_DETECT_SOFTLOCKUP=y
831 # CONFIG_SCHEDSTATS is not set
832 # CONFIG_TIMER_STATS is not set
833 # CONFIG_DEBUG_SLAB is not set
834 # CONFIG_DEBUG_RT_MUTEXES is not set
835 # CONFIG_RT_MUTEX_TESTER is not set
836 # CONFIG_DEBUG_SPINLOCK is not set
837 # CONFIG_DEBUG_MUTEXES is not set
838 # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
839 # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
840 # CONFIG_DEBUG_KOBJECT is not set
841 CONFIG_DEBUG_BUGVERBOSE=y
842 # CONFIG_DEBUG_INFO is not set
843 # CONFIG_DEBUG_VM is not set
844 # CONFIG_DEBUG_LIST is not set
845 CONFIG_FORCED_INLINING=y
846 # CONFIG_RCU_TORTURE_TEST is not set
847 # CONFIG_FAULT_INJECTION is not set
848 # CONFIG_DEBUG_STACKOVERFLOW is not set
849 # CONFIG_DEBUG_STACK_USAGE is not set
850 # CONFIG_DEBUG_PAGEALLOC is not set
851 # CONFIG_DEBUGGER is not set
852 # CONFIG_BDI_SWITCH is not set
853 # CONFIG_BOOTX_TEXT is not set
854 # CONFIG_SERIAL_TEXT_DEBUG is not set
855 # CONFIG_PPC_EARLY_DEBUG is not set
856
857 #
858 # Security options
859 #
860 # CONFIG_KEYS is not set
861 # CONFIG_SECURITY is not set
862
863 #
864 # Cryptographic options
865 #
866 CONFIG_CRYPTO=y
867 CONFIG_CRYPTO_ALGAPI=y
868 CONFIG_CRYPTO_BLKCIPHER=y
869 CONFIG_CRYPTO_MANAGER=y
870 # CONFIG_CRYPTO_HMAC is not set
871 # CONFIG_CRYPTO_XCBC is not set
872 # CONFIG_CRYPTO_NULL is not set
873 # CONFIG_CRYPTO_MD4 is not set
874 CONFIG_CRYPTO_MD5=y
875 # CONFIG_CRYPTO_SHA1 is not set
876 # CONFIG_CRYPTO_SHA256 is not set
877 # CONFIG_CRYPTO_SHA512 is not set
878 # CONFIG_CRYPTO_WP512 is not set
879 # CONFIG_CRYPTO_TGR192 is not set
880 # CONFIG_CRYPTO_GF128MUL is not set
881 CONFIG_CRYPTO_ECB=y
882 CONFIG_CRYPTO_CBC=y
883 CONFIG_CRYPTO_PCBC=y
884 # CONFIG_CRYPTO_LRW is not set
885 CONFIG_CRYPTO_DES=y
886 # CONFIG_CRYPTO_FCRYPT is not set
887 # CONFIG_CRYPTO_BLOWFISH is not set
888 # CONFIG_CRYPTO_TWOFISH is not set
889 # CONFIG_CRYPTO_SERPENT is not set
890 # CONFIG_CRYPTO_AES is not set
891 # CONFIG_CRYPTO_CAST5 is not set
892 # CONFIG_CRYPTO_CAST6 is not set
893 # CONFIG_CRYPTO_TEA is not set
894 # CONFIG_CRYPTO_ARC4 is not set
895 # CONFIG_CRYPTO_KHAZAD is not set
896 # CONFIG_CRYPTO_ANUBIS is not set
897 # CONFIG_CRYPTO_DEFLATE is not set
898 # CONFIG_CRYPTO_MICHAEL_MIC is not set
899 # CONFIG_CRYPTO_CRC32C is not set
900 # CONFIG_CRYPTO_CAMELLIA is not set
901 # CONFIG_CRYPTO_TEST is not set
902
903 #
904 # Hardware crypto devices
905 #
906
arch/powerpc/platforms/44x/Kconfig
File was created 1 #config BAMBOO
2 # bool "Bamboo"
3 # depends on 44x
4 # default n
5 # select 440EP
6 # help
7 # This option enables support for the IBM PPC440EP evaluation board.
8
9 config EBONY
10 bool "Ebony"
11 depends on 44x
12 default y
13 select 440GP
14 help
15 This option enables support for the IBM PPC440GP evaluation board.
16
17 #config LUAN
18 # bool "Luan"
19 # depends on 44x
20 # default n
21 # select 440SP
22 # help
23 # This option enables support for the IBM PPC440SP evaluation board.
24
25 #config OCOTEA
26 # bool "Ocotea"
27 # depends on 44x
28 # default n
29 # select 440GX
30 # help
31 # This option enables support for the IBM PPC440GX evaluation board.
32
33 # 44x specific CPU modules, selected based on the board above.
34 config 440EP
35 bool
36 select PPC_FPU
37 select IBM440EP_ERR42
38
39 config 440GP
40 bool
41 select IBM_NEW_EMAC_ZMII
42
43 config 440GX
44 bool
45
46 config 440SP
47 bool
48
49 config 440A
50 bool
51 depends on 440GX
52 default y
53
54 # 44x errata/workaround config symbols, selected by the CPU models above
55 config IBM440EP_ERR42
56 bool
57
arch/powerpc/platforms/44x/Makefile
1 obj-$(CONFIG_44x) := misc_44x.o 1 obj-$(CONFIG_44x) := misc_44x.o
2 obj-$(CONFIG_EBONY) += ebony.o
2 3
arch/powerpc/platforms/44x/ebony.c
File was created 1 /*
2 * Ebony board specific routines
3 *
4 * Matt Porter <mporter@kernel.crashing.org>
5 * Copyright 2002-2005 MontaVista Software Inc.
6 *
7 * Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net>
8 * Copyright (c) 2003-2005 Zultys Technologies
9 *
10 * Rewritten and ported to the merged powerpc tree:
11 * Copyright 2007 David Gibson <dwg@au1.ibm.com>, IBM Corporation.
12 *
13 * This program is free software; you can redistribute it and/or modify it
14 * under the terms of the GNU General Public License as published by the
15 * Free Software Foundation; either version 2 of the License, or (at your
16 * option) any later version.
17 */
18
19 #include <linux/init.h>
20 #include <asm/machdep.h>
21 #include <asm/prom.h>
22 #include <asm/udbg.h>
23 #include <asm/time.h>
24 #include <asm/uic.h>
25 #include <asm/of_platform.h>
26
27 #include "44x.h"
28
29 static struct of_device_id ebony_of_bus[] = {
30 { .type = "ibm,plb", },
31 { .type = "ibm,opb", },
32 { .type = "ibm,ebc", },
33 {},
34 };
35
36 static int __init ebony_device_probe(void)
37 {
38 if (!machine_is(ebony))
39 return 0;
40
41 of_platform_bus_probe(NULL, ebony_of_bus, NULL);
42
43 return 0;
44 }
45 device_initcall(ebony_device_probe);
46
47 /*
48 * Called very early, MMU is off, device-tree isn't unflattened
49 */
50 static int __init ebony_probe(void)
51 {
52 unsigned long root = of_get_flat_dt_root();
53
54 if (!of_flat_dt_is_compatible(root, "ibm,ebony"))
55 return 0;
56
57 return 1;
58 }
59
60 static void __init ebony_setup_arch(void)
61 {
62 }
63
64 define_machine(ebony) {
65 .name = "Ebony",
66 .probe = ebony_probe,
67 .setup_arch = ebony_setup_arch,
68 .progress = udbg_progress,
69 .init_IRQ = uic_init_tree,
70 .get_irq = uic_get_irq,
71 .restart = ppc44x_reset_system,
72 .calibrate_decr = generic_calibrate_decr,
73 };
74
arch/powerpc/platforms/Kconfig
1 menu "Platform support" 1 menu "Platform support"
2 2
3 choice 3 choice
4 prompt "Machine type" 4 prompt "Machine type"
5 depends on PPC64 || CLASSIC32 5 depends on PPC64 || CLASSIC32
6 default PPC_MULTIPLATFORM 6 default PPC_MULTIPLATFORM
7 7
8 config PPC_MULTIPLATFORM 8 config PPC_MULTIPLATFORM
9 bool "Generic desktop/server/laptop" 9 bool "Generic desktop/server/laptop"
10 help 10 help
11 Select this option if configuring for an IBM pSeries or 11 Select this option if configuring for an IBM pSeries or
12 RS/6000 machine, an Apple machine, or a PReP, CHRP, 12 RS/6000 machine, an Apple machine, or a PReP, CHRP,
13 Maple or Cell-based machine. 13 Maple or Cell-based machine.
14 14
15 config EMBEDDED6xx 15 config EMBEDDED6xx
16 bool "Embedded 6xx/7xx/7xxx-based board" 16 bool "Embedded 6xx/7xx/7xxx-based board"
17 depends on PPC32 && (BROKEN||BROKEN_ON_SMP) 17 depends on PPC32 && (BROKEN||BROKEN_ON_SMP)
18 18
19 config APUS 19 config APUS
20 bool "Amiga-APUS" 20 bool "Amiga-APUS"
21 depends on PPC32 && BROKEN 21 depends on PPC32 && BROKEN
22 help 22 help
23 Select APUS if configuring for a PowerUP Amiga. 23 Select APUS if configuring for a PowerUP Amiga.
24 More information is available at: 24 More information is available at:
25 <http://linux-apus.sourceforge.net/>. 25 <http://linux-apus.sourceforge.net/>.
26 endchoice 26 endchoice
27 27
28 source "arch/powerpc/platforms/pseries/Kconfig" 28 source "arch/powerpc/platforms/pseries/Kconfig"
29 source "arch/powerpc/platforms/iseries/Kconfig" 29 source "arch/powerpc/platforms/iseries/Kconfig"
30 source "arch/powerpc/platforms/chrp/Kconfig" 30 source "arch/powerpc/platforms/chrp/Kconfig"
31 source "arch/powerpc/platforms/52xx/Kconfig" 31 source "arch/powerpc/platforms/52xx/Kconfig"
32 source "arch/powerpc/platforms/powermac/Kconfig" 32 source "arch/powerpc/platforms/powermac/Kconfig"
33 source "arch/powerpc/platforms/prep/Kconfig" 33 source "arch/powerpc/platforms/prep/Kconfig"
34 source "arch/powerpc/platforms/maple/Kconfig" 34 source "arch/powerpc/platforms/maple/Kconfig"
35 source "arch/powerpc/platforms/pasemi/Kconfig" 35 source "arch/powerpc/platforms/pasemi/Kconfig"
36 source "arch/powerpc/platforms/celleb/Kconfig" 36 source "arch/powerpc/platforms/celleb/Kconfig"
37 source "arch/powerpc/platforms/ps3/Kconfig" 37 source "arch/powerpc/platforms/ps3/Kconfig"
38 source "arch/powerpc/platforms/cell/Kconfig" 38 source "arch/powerpc/platforms/cell/Kconfig"
39 source "arch/powerpc/platforms/8xx/Kconfig" 39 source "arch/powerpc/platforms/8xx/Kconfig"
40 source "arch/powerpc/platforms/82xx/Kconfig" 40 source "arch/powerpc/platforms/82xx/Kconfig"
41 source "arch/powerpc/platforms/83xx/Kconfig" 41 source "arch/powerpc/platforms/83xx/Kconfig"
42 source "arch/powerpc/platforms/85xx/Kconfig" 42 source "arch/powerpc/platforms/85xx/Kconfig"
43 source "arch/powerpc/platforms/86xx/Kconfig" 43 source "arch/powerpc/platforms/86xx/Kconfig"
44 source "arch/powerpc/platforms/embedded6xx/Kconfig" 44 source "arch/powerpc/platforms/embedded6xx/Kconfig"
45 source "arch/powerpc/platforms/44x/Kconfig"
45 #source "arch/powerpc/platforms/4xx/Kconfig 46 #source "arch/powerpc/platforms/4xx/Kconfig
46 47
47 config PPC_NATIVE 48 config PPC_NATIVE
48 bool 49 bool
49 depends on PPC_MULTIPLATFORM 50 depends on PPC_MULTIPLATFORM
50 help 51 help
51 Support for running natively on the hardware, i.e. without 52 Support for running natively on the hardware, i.e. without
52 a hypervisor. This option is not user-selectable but should 53 a hypervisor. This option is not user-selectable but should
53 be selected by all platforms that need it. 54 be selected by all platforms that need it.
54 55
55 config UDBG_RTAS_CONSOLE 56 config UDBG_RTAS_CONSOLE
56 bool "RTAS based debug console" 57 bool "RTAS based debug console"
57 depends on PPC_RTAS 58 depends on PPC_RTAS
58 default n 59 default n
59 60
60 config PPC_UDBG_BEAT 61 config PPC_UDBG_BEAT
61 bool "BEAT based debug console" 62 bool "BEAT based debug console"
62 depends on PPC_CELLEB 63 depends on PPC_CELLEB
63 default n 64 default n
64 65
65 config XICS 66 config XICS
66 depends on PPC_PSERIES 67 depends on PPC_PSERIES
67 bool 68 bool
68 default y 69 default y
69 70
70 config MPIC 71 config MPIC
71 bool 72 bool
72 default n 73 default n
73 74
74 config MPIC_WEIRD 75 config MPIC_WEIRD
75 bool 76 bool
76 default n 77 default n
77 78
78 config PPC_I8259 79 config PPC_I8259
79 bool 80 bool
80 default n 81 default n
81 82
82 config U3_DART 83 config U3_DART
83 bool 84 bool
84 depends on PPC_MULTIPLATFORM && PPC64 85 depends on PPC_MULTIPLATFORM && PPC64
85 default n 86 default n
86 87
87 config PPC_RTAS 88 config PPC_RTAS
88 bool 89 bool
89 default n 90 default n
90 91
91 config RTAS_ERROR_LOGGING 92 config RTAS_ERROR_LOGGING
92 bool 93 bool
93 depends on PPC_RTAS 94 depends on PPC_RTAS
94 default n 95 default n
95 96
96 config RTAS_PROC 97 config RTAS_PROC
97 bool "Proc interface to RTAS" 98 bool "Proc interface to RTAS"
98 depends on PPC_RTAS 99 depends on PPC_RTAS
99 default y 100 default y
100 101
101 config RTAS_FLASH 102 config RTAS_FLASH
102 tristate "Firmware flash interface" 103 tristate "Firmware flash interface"
103 depends on PPC64 && RTAS_PROC 104 depends on PPC64 && RTAS_PROC
104 105
105 config PPC_PMI 106 config PPC_PMI
106 tristate "Support for PMI" 107 tristate "Support for PMI"
107 depends PPC_IBM_CELL_BLADE 108 depends PPC_IBM_CELL_BLADE
108 help 109 help
109 PMI (Platform Management Interrupt) is a way to 110 PMI (Platform Management Interrupt) is a way to
110 communicate with the BMC (Baseboard Mangement Controller). 111 communicate with the BMC (Baseboard Mangement Controller).
111 It is used in some IBM Cell blades. 112 It is used in some IBM Cell blades.
112 default m 113 default m
113 114
114 config MMIO_NVRAM 115 config MMIO_NVRAM
115 bool 116 bool
116 default n 117 default n
117 118
118 config MPIC_U3_HT_IRQS 119 config MPIC_U3_HT_IRQS
119 bool 120 bool
120 depends on PPC_MAPLE 121 depends on PPC_MAPLE
121 default y 122 default y
122 123
123 config IBMVIO 124 config IBMVIO
124 depends on PPC_PSERIES || PPC_ISERIES 125 depends on PPC_PSERIES || PPC_ISERIES
125 bool 126 bool
126 default y 127 default y
127 128
128 config IBMEBUS 129 config IBMEBUS
129 depends on PPC_PSERIES 130 depends on PPC_PSERIES
130 bool "Support for GX bus based adapters" 131 bool "Support for GX bus based adapters"
131 help 132 help
132 Bus device driver for GX bus based adapters. 133 Bus device driver for GX bus based adapters.
133 134
134 config PPC_MPC106 135 config PPC_MPC106
135 bool 136 bool
136 default n 137 default n
137 138
138 config PPC_970_NAP 139 config PPC_970_NAP
139 bool 140 bool
140 default n 141 default n
141 142
142 config PPC_INDIRECT_IO 143 config PPC_INDIRECT_IO
143 bool 144 bool
144 select GENERIC_IOMAP 145 select GENERIC_IOMAP
145 default n 146 default n
146 147
147 config GENERIC_IOMAP 148 config GENERIC_IOMAP
148 bool 149 bool
149 default n 150 default n
150 151
151 source "drivers/cpufreq/Kconfig" 152 source "drivers/cpufreq/Kconfig"
152 153
153 menu "CPU Frequency drivers" 154 menu "CPU Frequency drivers"
154 depends on CPU_FREQ 155 depends on CPU_FREQ
155 156
156 config CPU_FREQ_PMAC 157 config CPU_FREQ_PMAC
157 bool "Support for Apple PowerBooks" 158 bool "Support for Apple PowerBooks"
158 depends on ADB_PMU && PPC32 159 depends on ADB_PMU && PPC32
159 select CPU_FREQ_TABLE 160 select CPU_FREQ_TABLE
160 help 161 help
161 This adds support for frequency switching on Apple PowerBooks, 162 This adds support for frequency switching on Apple PowerBooks,
162 this currently includes some models of iBook & Titanium 163 this currently includes some models of iBook & Titanium
163 PowerBook. 164 PowerBook.
164 165
165 config CPU_FREQ_PMAC64 166 config CPU_FREQ_PMAC64
166 bool "Support for some Apple G5s" 167 bool "Support for some Apple G5s"
167 depends on PPC_PMAC && PPC64 168 depends on PPC_PMAC && PPC64
168 select CPU_FREQ_TABLE 169 select CPU_FREQ_TABLE
169 help 170 help
170 This adds support for frequency switching on Apple iMac G5, 171 This adds support for frequency switching on Apple iMac G5,
171 and some of the more recent desktop G5 machines as well. 172 and some of the more recent desktop G5 machines as well.
172 173
173 config PPC_PASEMI_CPUFREQ 174 config PPC_PASEMI_CPUFREQ
174 bool "Support for PA Semi PWRficient" 175 bool "Support for PA Semi PWRficient"
175 depends on PPC_PASEMI 176 depends on PPC_PASEMI
176 default y 177 default y
177 select CPU_FREQ_TABLE 178 select CPU_FREQ_TABLE
178 help 179 help
179 This adds the support for frequency switching on PA Semi 180 This adds the support for frequency switching on PA Semi
180 PWRficient processors. 181 PWRficient processors.
181 182
182 endmenu 183 endmenu
183 184
184 config PPC601_SYNC_FIX 185 config PPC601_SYNC_FIX
185 bool "Workarounds for PPC601 bugs" 186 bool "Workarounds for PPC601 bugs"
186 depends on 6xx && (PPC_PREP || PPC_PMAC) 187 depends on 6xx && (PPC_PREP || PPC_PMAC)
187 help 188 help
188 Some versions of the PPC601 (the first PowerPC chip) have bugs which 189 Some versions of the PPC601 (the first PowerPC chip) have bugs which
189 mean that extra synchronization instructions are required near 190 mean that extra synchronization instructions are required near
190 certain instructions, typically those that make major changes to the 191 certain instructions, typically those that make major changes to the
191 CPU state. These extra instructions reduce performance slightly. 192 CPU state. These extra instructions reduce performance slightly.
192 If you say N here, these extra instructions will not be included, 193 If you say N here, these extra instructions will not be included,
193 resulting in a kernel which will run faster but may not run at all 194 resulting in a kernel which will run faster but may not run at all
194 on some systems with the PPC601 chip. 195 on some systems with the PPC601 chip.
195 196
196 If in doubt, say Y here. 197 If in doubt, say Y here.
197 198
198 config TAU 199 config TAU
199 bool "On-chip CPU temperature sensor support" 200 bool "On-chip CPU temperature sensor support"
200 depends on CLASSIC32 201 depends on CLASSIC32
201 help 202 help
202 G3 and G4 processors have an on-chip temperature sensor called the 203 G3 and G4 processors have an on-chip temperature sensor called the
203 'Thermal Assist Unit (TAU)', which, in theory, can measure the on-die 204 'Thermal Assist Unit (TAU)', which, in theory, can measure the on-die
204 temperature within 2-4 degrees Celsius. This option shows the current 205 temperature within 2-4 degrees Celsius. This option shows the current
205 on-die temperature in /proc/cpuinfo if the cpu supports it. 206 on-die temperature in /proc/cpuinfo if the cpu supports it.
206 207
207 Unfortunately, on some chip revisions, this sensor is very inaccurate 208 Unfortunately, on some chip revisions, this sensor is very inaccurate
208 and in many cases, does not work at all, so don't assume the cpu 209 and in many cases, does not work at all, so don't assume the cpu
209 temp is actually what /proc/cpuinfo says it is. 210 temp is actually what /proc/cpuinfo says it is.
210 211
211 config TAU_INT 212 config TAU_INT
212 bool "Interrupt driven TAU driver (DANGEROUS)" 213 bool "Interrupt driven TAU driver (DANGEROUS)"
213 depends on TAU 214 depends on TAU
214 ---help--- 215 ---help---
215 The TAU supports an interrupt driven mode which causes an interrupt 216 The TAU supports an interrupt driven mode which causes an interrupt
216 whenever the temperature goes out of range. This is the fastest way 217 whenever the temperature goes out of range. This is the fastest way
217 to get notified the temp has exceeded a range. With this option off, 218 to get notified the temp has exceeded a range. With this option off,
218 a timer is used to re-check the temperature periodically. 219 a timer is used to re-check the temperature periodically.
219 220
220 However, on some cpus it appears that the TAU interrupt hardware 221 However, on some cpus it appears that the TAU interrupt hardware
221 is buggy and can cause a situation which would lead unexplained hard 222 is buggy and can cause a situation which would lead unexplained hard
222 lockups. 223 lockups.
223 224
224 Unless you are extending the TAU driver, or enjoy kernel/hardware 225 Unless you are extending the TAU driver, or enjoy kernel/hardware
225 debugging, leave this option off. 226 debugging, leave this option off.
226 227
227 config TAU_AVERAGE 228 config TAU_AVERAGE
228 bool "Average high and low temp" 229 bool "Average high and low temp"
229 depends on TAU 230 depends on TAU
230 ---help--- 231 ---help---
231 The TAU hardware can compare the temperature to an upper and lower 232 The TAU hardware can compare the temperature to an upper and lower
232 bound. The default behavior is to show both the upper and lower 233 bound. The default behavior is to show both the upper and lower
233 bound in /proc/cpuinfo. If the range is large, the temperature is 234 bound in /proc/cpuinfo. If the range is large, the temperature is
234 either changing a lot, or the TAU hardware is broken (likely on some 235 either changing a lot, or the TAU hardware is broken (likely on some
235 G4's). If the range is small (around 4 degrees), the temperature is 236 G4's). If the range is small (around 4 degrees), the temperature is
236 relatively stable. If you say Y here, a single temperature value, 237 relatively stable. If you say Y here, a single temperature value,
237 halfway between the upper and lower bounds, will be reported in 238 halfway between the upper and lower bounds, will be reported in
238 /proc/cpuinfo. 239 /proc/cpuinfo.
239 240
240 If in doubt, say N here. 241 If in doubt, say N here.
241 242
242 config QUICC_ENGINE 243 config QUICC_ENGINE
243 bool 244 bool
244 help 245 help
245 The QUICC Engine (QE) is a new generation of communications 246 The QUICC Engine (QE) is a new generation of communications
246 coprocessors on Freescale embedded CPUs (akin to CPM in older chips). 247 coprocessors on Freescale embedded CPUs (akin to CPM in older chips).
247 Selecting this option means that you wish to build a kernel 248 Selecting this option means that you wish to build a kernel
248 for a machine with a QE coprocessor. 249 for a machine with a QE coprocessor.
249 250
250 config CPM2 251 config CPM2
251 bool 252 bool
252 default n 253 default n
253 help 254 help
254 The CPM2 (Communications Processor Module) is a coprocessor on 255 The CPM2 (Communications Processor Module) is a coprocessor on
255 embedded CPUs made by Freescale. Selecting this option means that 256 embedded CPUs made by Freescale. Selecting this option means that
256 you wish to build a kernel for a machine with a CPM2 coprocessor 257 you wish to build a kernel for a machine with a CPM2 coprocessor
257 on it (826x, 827x, 8560). 258 on it (826x, 827x, 8560).
258 259
259 endmenu 260 endmenu
260 261