Commit f6dfc80554b27da11dbb36ebae166b23ec3aa9ca
Committed by
Paul Mackerras
1 parent
ea20ff5d03
Exists in
master
and in
7 other branches
[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
- arch/powerpc/boot/44x.c
- arch/powerpc/boot/44x.h
- arch/powerpc/boot/Makefile
- arch/powerpc/boot/cuboot-ebony.c
- arch/powerpc/boot/dcr.h
- arch/powerpc/boot/ebony.c
- arch/powerpc/boot/mktree.c
- arch/powerpc/boot/treeboot-ebony.c
- arch/powerpc/boot/wrapper
- arch/powerpc/configs/ebony_defconfig
- arch/powerpc/platforms/44x/Kconfig
- arch/powerpc/platforms/44x/Makefile
- arch/powerpc/platforms/44x/ebony.c
- arch/powerpc/platforms/Kconfig
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 |