xref: /openbmc/linux/arch/arm/Kconfig (revision 5bd8e16d)
1config ARM
2	bool
3	default y
4	select ARCH_BINFMT_ELF_RANDOMIZE_PIE
5	select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
6	select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
7	select ARCH_HAVE_CUSTOM_GPIO_H
8	select ARCH_WANT_IPC_PARSE_VERSION
9	select BUILDTIME_EXTABLE_SORT if MMU
10	select CLONE_BACKWARDS
11	select CPU_PM if (SUSPEND || CPU_IDLE)
12	select DCACHE_WORD_ACCESS if (CPU_V6 || CPU_V6K || CPU_V7) && !CPU_BIG_ENDIAN && MMU
13	select GENERIC_ATOMIC64 if (CPU_V7M || CPU_V6 || !CPU_32v6K || !AEABI)
14	select GENERIC_CLOCKEVENTS_BROADCAST if SMP
15	select GENERIC_IDLE_POLL_SETUP
16	select GENERIC_IRQ_PROBE
17	select GENERIC_IRQ_SHOW
18	select GENERIC_PCI_IOMAP
19	select GENERIC_SCHED_CLOCK
20	select GENERIC_SMP_IDLE_THREAD
21	select GENERIC_STRNCPY_FROM_USER
22	select GENERIC_STRNLEN_USER
23	select HARDIRQS_SW_RESEND
24	select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL
25	select HAVE_ARCH_KGDB
26	select HAVE_ARCH_SECCOMP_FILTER
27	select HAVE_ARCH_TRACEHOOK
28	select HAVE_BPF_JIT
29	select HAVE_CONTEXT_TRACKING
30	select HAVE_C_RECORDMCOUNT
31	select HAVE_DEBUG_KMEMLEAK
32	select HAVE_DMA_API_DEBUG
33	select HAVE_DMA_ATTRS
34	select HAVE_DMA_CONTIGUOUS if MMU
35	select HAVE_DYNAMIC_FTRACE if (!XIP_KERNEL)
36	select HAVE_FTRACE_MCOUNT_RECORD if (!XIP_KERNEL)
37	select HAVE_FUNCTION_GRAPH_TRACER if (!THUMB2_KERNEL)
38	select HAVE_FUNCTION_TRACER if (!XIP_KERNEL)
39	select HAVE_GENERIC_DMA_COHERENT
40	select HAVE_HW_BREAKPOINT if (PERF_EVENTS && (CPU_V6 || CPU_V6K || CPU_V7))
41	select HAVE_IDE if PCI || ISA || PCMCIA
42	select HAVE_IRQ_TIME_ACCOUNTING
43	select HAVE_KERNEL_GZIP
44	select HAVE_KERNEL_LZ4
45	select HAVE_KERNEL_LZMA
46	select HAVE_KERNEL_LZO
47	select HAVE_KERNEL_XZ
48	select HAVE_KPROBES if !XIP_KERNEL
49	select HAVE_KRETPROBES if (HAVE_KPROBES)
50	select HAVE_MEMBLOCK
51	select HAVE_MOD_ARCH_SPECIFIC if ARM_UNWIND
52	select HAVE_OPROFILE if (HAVE_PERF_EVENTS)
53	select HAVE_PERF_EVENTS
54	select HAVE_REGS_AND_STACK_ACCESS_API
55	select HAVE_SYSCALL_TRACEPOINTS
56	select HAVE_UID16
57	select IRQ_FORCED_THREADING
58	select KTIME_SCALAR
59	select MODULES_USE_ELF_REL
60	select OLD_SIGACTION
61	select OLD_SIGSUSPEND3
62	select PERF_USE_VMALLOC
63	select RTC_LIB
64	select SYS_SUPPORTS_APM_EMULATION
65	# Above selects are sorted alphabetically; please add new ones
66	# according to that.  Thanks.
67	help
68	  The ARM series is a line of low-power-consumption RISC chip designs
69	  licensed by ARM Ltd and targeted at embedded applications and
70	  handhelds such as the Compaq IPAQ.  ARM-based PCs are no longer
71	  manufactured, but legacy ARM-based PC hardware remains popular in
72	  Europe.  There is an ARM Linux project with a web page at
73	  <http://www.arm.linux.org.uk/>.
74
75config ARM_HAS_SG_CHAIN
76	bool
77
78config NEED_SG_DMA_LENGTH
79	bool
80
81config ARM_DMA_USE_IOMMU
82	bool
83	select ARM_HAS_SG_CHAIN
84	select NEED_SG_DMA_LENGTH
85
86if ARM_DMA_USE_IOMMU
87
88config ARM_DMA_IOMMU_ALIGNMENT
89	int "Maximum PAGE_SIZE order of alignment for DMA IOMMU buffers"
90	range 4 9
91	default 8
92	help
93	  DMA mapping framework by default aligns all buffers to the smallest
94	  PAGE_SIZE order which is greater than or equal to the requested buffer
95	  size. This works well for buffers up to a few hundreds kilobytes, but
96	  for larger buffers it just a waste of address space. Drivers which has
97	  relatively small addressing window (like 64Mib) might run out of
98	  virtual space with just a few allocations.
99
100	  With this parameter you can specify the maximum PAGE_SIZE order for
101	  DMA IOMMU buffers. Larger buffers will be aligned only to this
102	  specified order. The order is expressed as a power of two multiplied
103	  by the PAGE_SIZE.
104
105endif
106
107config HAVE_PWM
108	bool
109
110config MIGHT_HAVE_PCI
111	bool
112
113config SYS_SUPPORTS_APM_EMULATION
114	bool
115
116config HAVE_TCM
117	bool
118	select GENERIC_ALLOCATOR
119
120config HAVE_PROC_CPU
121	bool
122
123config NO_IOPORT
124	bool
125
126config EISA
127	bool
128	---help---
129	  The Extended Industry Standard Architecture (EISA) bus was
130	  developed as an open alternative to the IBM MicroChannel bus.
131
132	  The EISA bus provided some of the features of the IBM MicroChannel
133	  bus while maintaining backward compatibility with cards made for
134	  the older ISA bus.  The EISA bus saw limited use between 1988 and
135	  1995 when it was made obsolete by the PCI bus.
136
137	  Say Y here if you are building a kernel for an EISA-based machine.
138
139	  Otherwise, say N.
140
141config SBUS
142	bool
143
144config STACKTRACE_SUPPORT
145	bool
146	default y
147
148config HAVE_LATENCYTOP_SUPPORT
149	bool
150	depends on !SMP
151	default y
152
153config LOCKDEP_SUPPORT
154	bool
155	default y
156
157config TRACE_IRQFLAGS_SUPPORT
158	bool
159	default y
160
161config RWSEM_GENERIC_SPINLOCK
162	bool
163	default y
164
165config RWSEM_XCHGADD_ALGORITHM
166	bool
167
168config ARCH_HAS_ILOG2_U32
169	bool
170
171config ARCH_HAS_ILOG2_U64
172	bool
173
174config ARCH_HAS_CPUFREQ
175	bool
176	help
177	  Internal node to signify that the ARCH has CPUFREQ support
178	  and that the relevant menu configurations are displayed for
179	  it.
180
181config ARCH_HAS_BANDGAP
182	bool
183
184config GENERIC_HWEIGHT
185	bool
186	default y
187
188config GENERIC_CALIBRATE_DELAY
189	bool
190	default y
191
192config ARCH_MAY_HAVE_PC_FDC
193	bool
194
195config ZONE_DMA
196	bool
197
198config NEED_DMA_MAP_STATE
199       def_bool y
200
201config ARCH_HAS_DMA_SET_COHERENT_MASK
202	bool
203
204config GENERIC_ISA_DMA
205	bool
206
207config FIQ
208	bool
209
210config NEED_RET_TO_USER
211	bool
212
213config ARCH_MTD_XIP
214	bool
215
216config VECTORS_BASE
217	hex
218	default 0xffff0000 if MMU || CPU_HIGH_VECTOR
219	default DRAM_BASE if REMAP_VECTORS_TO_RAM
220	default 0x00000000
221	help
222	  The base address of exception vectors.  This must be two pages
223	  in size.
224
225config ARM_PATCH_PHYS_VIRT
226	bool "Patch physical to virtual translations at runtime" if EMBEDDED
227	default y
228	depends on !XIP_KERNEL && MMU
229	depends on !ARCH_REALVIEW || !SPARSEMEM
230	help
231	  Patch phys-to-virt and virt-to-phys translation functions at
232	  boot and module load time according to the position of the
233	  kernel in system memory.
234
235	  This can only be used with non-XIP MMU kernels where the base
236	  of physical memory is at a 16MB boundary.
237
238	  Only disable this option if you know that you do not require
239	  this feature (eg, building a kernel for a single machine) and
240	  you need to shrink the kernel to the minimal size.
241
242config NEED_MACH_GPIO_H
243	bool
244	help
245	  Select this when mach/gpio.h is required to provide special
246	  definitions for this platform. The need for mach/gpio.h should
247	  be avoided when possible.
248
249config NEED_MACH_IO_H
250	bool
251	help
252	  Select this when mach/io.h is required to provide special
253	  definitions for this platform.  The need for mach/io.h should
254	  be avoided when possible.
255
256config NEED_MACH_MEMORY_H
257	bool
258	help
259	  Select this when mach/memory.h is required to provide special
260	  definitions for this platform.  The need for mach/memory.h should
261	  be avoided when possible.
262
263config PHYS_OFFSET
264	hex "Physical address of main memory" if MMU
265	depends on !ARM_PATCH_PHYS_VIRT && !NEED_MACH_MEMORY_H
266	default DRAM_BASE if !MMU
267	help
268	  Please provide the physical address corresponding to the
269	  location of main memory in your system.
270
271config GENERIC_BUG
272	def_bool y
273	depends on BUG
274
275source "init/Kconfig"
276
277source "kernel/Kconfig.freezer"
278
279menu "System Type"
280
281config MMU
282	bool "MMU-based Paged Memory Management Support"
283	default y
284	help
285	  Select if you want MMU-based virtualised addressing space
286	  support by paged memory management. If unsure, say 'Y'.
287
288#
289# The "ARM system type" choice list is ordered alphabetically by option
290# text.  Please add new entries in the option alphabetic order.
291#
292choice
293	prompt "ARM system type"
294	default ARCH_VERSATILE if !MMU
295	default ARCH_MULTIPLATFORM if MMU
296
297config ARCH_MULTIPLATFORM
298	bool "Allow multiple platforms to be selected"
299	depends on MMU
300	select ARM_PATCH_PHYS_VIRT
301	select AUTO_ZRELADDR
302	select COMMON_CLK
303	select MULTI_IRQ_HANDLER
304	select SPARSE_IRQ
305	select USE_OF
306
307config ARCH_INTEGRATOR
308	bool "ARM Ltd. Integrator family"
309	select ARCH_HAS_CPUFREQ
310	select ARM_AMBA
311	select COMMON_CLK
312	select COMMON_CLK_VERSATILE
313	select GENERIC_CLOCKEVENTS
314	select HAVE_TCM
315	select ICST
316	select MULTI_IRQ_HANDLER
317	select NEED_MACH_MEMORY_H
318	select PLAT_VERSATILE
319	select SPARSE_IRQ
320	select VERSATILE_FPGA_IRQ
321	help
322	  Support for ARM's Integrator platform.
323
324config ARCH_REALVIEW
325	bool "ARM Ltd. RealView family"
326	select ARCH_WANT_OPTIONAL_GPIOLIB
327	select ARM_AMBA
328	select ARM_TIMER_SP804
329	select COMMON_CLK
330	select COMMON_CLK_VERSATILE
331	select GENERIC_CLOCKEVENTS
332	select GPIO_PL061 if GPIOLIB
333	select ICST
334	select NEED_MACH_MEMORY_H
335	select PLAT_VERSATILE
336	select PLAT_VERSATILE_CLCD
337	help
338	  This enables support for ARM Ltd RealView boards.
339
340config ARCH_VERSATILE
341	bool "ARM Ltd. Versatile family"
342	select ARCH_WANT_OPTIONAL_GPIOLIB
343	select ARM_AMBA
344	select ARM_TIMER_SP804
345	select ARM_VIC
346	select CLKDEV_LOOKUP
347	select GENERIC_CLOCKEVENTS
348	select HAVE_MACH_CLKDEV
349	select ICST
350	select PLAT_VERSATILE
351	select PLAT_VERSATILE_CLCD
352	select PLAT_VERSATILE_CLOCK
353	select VERSATILE_FPGA_IRQ
354	help
355	  This enables support for ARM Ltd Versatile board.
356
357config ARCH_AT91
358	bool "Atmel AT91"
359	select ARCH_REQUIRE_GPIOLIB
360	select CLKDEV_LOOKUP
361	select IRQ_DOMAIN
362	select NEED_MACH_GPIO_H
363	select NEED_MACH_IO_H if PCCARD
364	select PINCTRL
365	select PINCTRL_AT91 if USE_OF
366	help
367	  This enables support for systems based on Atmel
368	  AT91RM9200 and AT91SAM9* processors.
369
370config ARCH_CLPS711X
371	bool "Cirrus Logic CLPS711x/EP721x/EP731x-based"
372	select ARCH_REQUIRE_GPIOLIB
373	select AUTO_ZRELADDR
374	select CLKSRC_MMIO
375	select COMMON_CLK
376	select CPU_ARM720T
377	select GENERIC_CLOCKEVENTS
378	select MFD_SYSCON
379	select MULTI_IRQ_HANDLER
380	select SPARSE_IRQ
381	help
382	  Support for Cirrus Logic 711x/721x/731x based boards.
383
384config ARCH_GEMINI
385	bool "Cortina Systems Gemini"
386	select ARCH_REQUIRE_GPIOLIB
387	select ARCH_USES_GETTIMEOFFSET
388	select CPU_FA526
389	select NEED_MACH_GPIO_H
390	help
391	  Support for the Cortina Systems Gemini family SoCs
392
393config ARCH_EBSA110
394	bool "EBSA-110"
395	select ARCH_USES_GETTIMEOFFSET
396	select CPU_SA110
397	select ISA
398	select NEED_MACH_IO_H
399	select NEED_MACH_MEMORY_H
400	select NO_IOPORT
401	help
402	  This is an evaluation board for the StrongARM processor available
403	  from Digital. It has limited hardware on-board, including an
404	  Ethernet interface, two PCMCIA sockets, two serial ports and a
405	  parallel port.
406
407config ARCH_EP93XX
408	bool "EP93xx-based"
409	select ARCH_HAS_HOLES_MEMORYMODEL
410	select ARCH_REQUIRE_GPIOLIB
411	select ARCH_USES_GETTIMEOFFSET
412	select ARM_AMBA
413	select ARM_VIC
414	select CLKDEV_LOOKUP
415	select CPU_ARM920T
416	select NEED_MACH_MEMORY_H
417	help
418	  This enables support for the Cirrus EP93xx series of CPUs.
419
420config ARCH_FOOTBRIDGE
421	bool "FootBridge"
422	select CPU_SA110
423	select FOOTBRIDGE
424	select GENERIC_CLOCKEVENTS
425	select HAVE_IDE
426	select NEED_MACH_IO_H if !MMU
427	select NEED_MACH_MEMORY_H
428	help
429	  Support for systems based on the DC21285 companion chip
430	  ("FootBridge"), such as the Simtec CATS and the Rebel NetWinder.
431
432config ARCH_NETX
433	bool "Hilscher NetX based"
434	select ARM_VIC
435	select CLKSRC_MMIO
436	select CPU_ARM926T
437	select GENERIC_CLOCKEVENTS
438	help
439	  This enables support for systems based on the Hilscher NetX Soc
440
441config ARCH_IOP13XX
442	bool "IOP13xx-based"
443	depends on MMU
444	select CPU_XSC3
445	select NEED_MACH_MEMORY_H
446	select NEED_RET_TO_USER
447	select PCI
448	select PLAT_IOP
449	select VMSPLIT_1G
450	help
451	  Support for Intel's IOP13XX (XScale) family of processors.
452
453config ARCH_IOP32X
454	bool "IOP32x-based"
455	depends on MMU
456	select ARCH_REQUIRE_GPIOLIB
457	select CPU_XSCALE
458	select NEED_MACH_GPIO_H
459	select NEED_RET_TO_USER
460	select PCI
461	select PLAT_IOP
462	help
463	  Support for Intel's 80219 and IOP32X (XScale) family of
464	  processors.
465
466config ARCH_IOP33X
467	bool "IOP33x-based"
468	depends on MMU
469	select ARCH_REQUIRE_GPIOLIB
470	select CPU_XSCALE
471	select NEED_MACH_GPIO_H
472	select NEED_RET_TO_USER
473	select PCI
474	select PLAT_IOP
475	help
476	  Support for Intel's IOP33X (XScale) family of processors.
477
478config ARCH_IXP4XX
479	bool "IXP4xx-based"
480	depends on MMU
481	select ARCH_HAS_DMA_SET_COHERENT_MASK
482	select ARCH_REQUIRE_GPIOLIB
483	select CLKSRC_MMIO
484	select CPU_XSCALE
485	select DMABOUNCE if PCI
486	select GENERIC_CLOCKEVENTS
487	select MIGHT_HAVE_PCI
488	select NEED_MACH_IO_H
489	select USB_EHCI_BIG_ENDIAN_DESC
490	select USB_EHCI_BIG_ENDIAN_MMIO
491	help
492	  Support for Intel's IXP4XX (XScale) family of processors.
493
494config ARCH_DOVE
495	bool "Marvell Dove"
496	select ARCH_REQUIRE_GPIOLIB
497	select CPU_PJ4
498	select GENERIC_CLOCKEVENTS
499	select MIGHT_HAVE_PCI
500	select MVEBU_MBUS
501	select PINCTRL
502	select PINCTRL_DOVE
503	select PLAT_ORION_LEGACY
504	select USB_ARCH_HAS_EHCI
505	help
506	  Support for the Marvell Dove SoC 88AP510
507
508config ARCH_KIRKWOOD
509	bool "Marvell Kirkwood"
510	select ARCH_HAS_CPUFREQ
511	select ARCH_REQUIRE_GPIOLIB
512	select CPU_FEROCEON
513	select GENERIC_CLOCKEVENTS
514	select MVEBU_MBUS
515	select PCI
516	select PCI_QUIRKS
517	select PINCTRL
518	select PINCTRL_KIRKWOOD
519	select PLAT_ORION_LEGACY
520	help
521	  Support for the following Marvell Kirkwood series SoCs:
522	  88F6180, 88F6192 and 88F6281.
523
524config ARCH_MV78XX0
525	bool "Marvell MV78xx0"
526	select ARCH_REQUIRE_GPIOLIB
527	select CPU_FEROCEON
528	select GENERIC_CLOCKEVENTS
529	select MVEBU_MBUS
530	select PCI
531	select PLAT_ORION_LEGACY
532	help
533	  Support for the following Marvell MV78xx0 series SoCs:
534	  MV781x0, MV782x0.
535
536config ARCH_ORION5X
537	bool "Marvell Orion"
538	depends on MMU
539	select ARCH_REQUIRE_GPIOLIB
540	select CPU_FEROCEON
541	select GENERIC_CLOCKEVENTS
542	select MVEBU_MBUS
543	select PCI
544	select PLAT_ORION_LEGACY
545	help
546	  Support for the following Marvell Orion 5x series SoCs:
547	  Orion-1 (5181), Orion-VoIP (5181L), Orion-NAS (5182),
548	  Orion-2 (5281), Orion-1-90 (6183).
549
550config ARCH_MMP
551	bool "Marvell PXA168/910/MMP2"
552	depends on MMU
553	select ARCH_REQUIRE_GPIOLIB
554	select CLKDEV_LOOKUP
555	select GENERIC_ALLOCATOR
556	select GENERIC_CLOCKEVENTS
557	select GPIO_PXA
558	select IRQ_DOMAIN
559	select MULTI_IRQ_HANDLER
560	select NEED_MACH_GPIO_H
561	select PINCTRL
562	select PLAT_PXA
563	select SPARSE_IRQ
564	help
565	  Support for Marvell's PXA168/PXA910(MMP) and MMP2 processor line.
566
567config ARCH_KS8695
568	bool "Micrel/Kendin KS8695"
569	select ARCH_REQUIRE_GPIOLIB
570	select CLKSRC_MMIO
571	select CPU_ARM922T
572	select GENERIC_CLOCKEVENTS
573	select NEED_MACH_MEMORY_H
574	help
575	  Support for Micrel/Kendin KS8695 "Centaur" (ARM922T) based
576	  System-on-Chip devices.
577
578config ARCH_W90X900
579	bool "Nuvoton W90X900 CPU"
580	select ARCH_REQUIRE_GPIOLIB
581	select CLKDEV_LOOKUP
582	select CLKSRC_MMIO
583	select CPU_ARM926T
584	select GENERIC_CLOCKEVENTS
585	help
586	  Support for Nuvoton (Winbond logic dept.) ARM9 processor,
587	  At present, the w90x900 has been renamed nuc900, regarding
588	  the ARM series product line, you can login the following
589	  link address to know more.
590
591	  <http://www.nuvoton.com/hq/enu/ProductAndSales/ProductLines/
592		ConsumerElectronicsIC/ARMMicrocontroller/ARMMicrocontroller>
593
594config ARCH_LPC32XX
595	bool "NXP LPC32XX"
596	select ARCH_REQUIRE_GPIOLIB
597	select ARM_AMBA
598	select CLKDEV_LOOKUP
599	select CLKSRC_MMIO
600	select CPU_ARM926T
601	select GENERIC_CLOCKEVENTS
602	select HAVE_IDE
603	select HAVE_PWM
604	select USB_ARCH_HAS_OHCI
605	select USE_OF
606	help
607	  Support for the NXP LPC32XX family of processors
608
609config ARCH_PXA
610	bool "PXA2xx/PXA3xx-based"
611	depends on MMU
612	select ARCH_HAS_CPUFREQ
613	select ARCH_MTD_XIP
614	select ARCH_REQUIRE_GPIOLIB
615	select ARM_CPU_SUSPEND if PM
616	select AUTO_ZRELADDR
617	select CLKDEV_LOOKUP
618	select CLKSRC_MMIO
619	select GENERIC_CLOCKEVENTS
620	select GPIO_PXA
621	select HAVE_IDE
622	select MULTI_IRQ_HANDLER
623	select NEED_MACH_GPIO_H
624	select PLAT_PXA
625	select SPARSE_IRQ
626	help
627	  Support for Intel/Marvell's PXA2xx/PXA3xx processor line.
628
629config ARCH_MSM
630	bool "Qualcomm MSM"
631	select ARCH_REQUIRE_GPIOLIB
632	select CLKSRC_OF if OF
633	select COMMON_CLK
634	select GENERIC_CLOCKEVENTS
635	help
636	  Support for Qualcomm MSM/QSD based systems.  This runs on the
637	  apps processor of the MSM/QSD and depends on a shared memory
638	  interface to the modem processor which runs the baseband
639	  stack and controls some vital subsystems
640	  (clock and power control, etc).
641
642config ARCH_SHMOBILE
643	bool "Renesas SH-Mobile / R-Mobile"
644	select ARM_PATCH_PHYS_VIRT
645	select CLKDEV_LOOKUP
646	select GENERIC_CLOCKEVENTS
647	select HAVE_ARM_SCU if SMP
648	select HAVE_ARM_TWD if SMP
649	select HAVE_MACH_CLKDEV
650	select HAVE_SMP
651	select MIGHT_HAVE_CACHE_L2X0
652	select MULTI_IRQ_HANDLER
653	select NO_IOPORT
654	select PINCTRL
655	select PM_GENERIC_DOMAINS if PM
656	select SPARSE_IRQ
657	help
658	  Support for Renesas's SH-Mobile and R-Mobile ARM platforms.
659
660config ARCH_RPC
661	bool "RiscPC"
662	select ARCH_ACORN
663	select ARCH_MAY_HAVE_PC_FDC
664	select ARCH_SPARSEMEM_ENABLE
665	select ARCH_USES_GETTIMEOFFSET
666	select FIQ
667	select HAVE_IDE
668	select HAVE_PATA_PLATFORM
669	select ISA_DMA_API
670	select NEED_MACH_IO_H
671	select NEED_MACH_MEMORY_H
672	select NO_IOPORT
673	select VIRT_TO_BUS
674	help
675	  On the Acorn Risc-PC, Linux can support the internal IDE disk and
676	  CD-ROM interface, serial and parallel port, and the floppy drive.
677
678config ARCH_SA1100
679	bool "SA1100-based"
680	select ARCH_HAS_CPUFREQ
681	select ARCH_MTD_XIP
682	select ARCH_REQUIRE_GPIOLIB
683	select ARCH_SPARSEMEM_ENABLE
684	select CLKDEV_LOOKUP
685	select CLKSRC_MMIO
686	select CPU_FREQ
687	select CPU_SA1100
688	select GENERIC_CLOCKEVENTS
689	select HAVE_IDE
690	select ISA
691	select NEED_MACH_GPIO_H
692	select NEED_MACH_MEMORY_H
693	select SPARSE_IRQ
694	help
695	  Support for StrongARM 11x0 based boards.
696
697config ARCH_S3C24XX
698	bool "Samsung S3C24XX SoCs"
699	select ARCH_HAS_CPUFREQ
700	select ARCH_REQUIRE_GPIOLIB
701	select CLKDEV_LOOKUP
702	select CLKSRC_SAMSUNG_PWM
703	select GENERIC_CLOCKEVENTS
704	select GPIO_SAMSUNG
705	select HAVE_S3C2410_I2C if I2C
706	select HAVE_S3C2410_WATCHDOG if WATCHDOG
707	select HAVE_S3C_RTC if RTC_CLASS
708	select MULTI_IRQ_HANDLER
709	select NEED_MACH_GPIO_H
710	select NEED_MACH_IO_H
711	select SAMSUNG_ATAGS
712	help
713	  Samsung S3C2410, S3C2412, S3C2413, S3C2416, S3C2440, S3C2442, S3C2443
714	  and S3C2450 SoCs based systems, such as the Simtec Electronics BAST
715	  (<http://www.simtec.co.uk/products/EB110ITX/>), the IPAQ 1940 or the
716	  Samsung SMDK2410 development board (and derivatives).
717
718config ARCH_S3C64XX
719	bool "Samsung S3C64XX"
720	select ARCH_HAS_CPUFREQ
721	select ARCH_REQUIRE_GPIOLIB
722	select ARM_VIC
723	select CLKDEV_LOOKUP
724	select CLKSRC_SAMSUNG_PWM
725	select CPU_V6
726	select GENERIC_CLOCKEVENTS
727	select GPIO_SAMSUNG
728	select HAVE_S3C2410_I2C if I2C
729	select HAVE_S3C2410_WATCHDOG if WATCHDOG
730	select HAVE_TCM
731	select NEED_MACH_GPIO_H
732	select NO_IOPORT
733	select PLAT_SAMSUNG
734	select S3C_DEV_NAND
735	select S3C_GPIO_TRACK
736	select SAMSUNG_ATAGS
737	select SAMSUNG_CLKSRC
738	select SAMSUNG_GPIOLIB_4BIT
739	select SAMSUNG_WDT_RESET
740	select USB_ARCH_HAS_OHCI
741	help
742	  Samsung S3C64XX series based systems
743
744config ARCH_S5P64X0
745	bool "Samsung S5P6440 S5P6450"
746	select CLKDEV_LOOKUP
747	select CLKSRC_SAMSUNG_PWM
748	select CPU_V6
749	select GENERIC_CLOCKEVENTS
750	select GPIO_SAMSUNG
751	select HAVE_S3C2410_I2C if I2C
752	select HAVE_S3C2410_WATCHDOG if WATCHDOG
753	select HAVE_S3C_RTC if RTC_CLASS
754	select NEED_MACH_GPIO_H
755	select SAMSUNG_ATAGS
756	select SAMSUNG_WDT_RESET
757	help
758	  Samsung S5P64X0 CPU based systems, such as the Samsung SMDK6440,
759	  SMDK6450.
760
761config ARCH_S5PC100
762	bool "Samsung S5PC100"
763	select ARCH_REQUIRE_GPIOLIB
764	select CLKDEV_LOOKUP
765	select CLKSRC_SAMSUNG_PWM
766	select CPU_V7
767	select GENERIC_CLOCKEVENTS
768	select GPIO_SAMSUNG
769	select HAVE_S3C2410_I2C if I2C
770	select HAVE_S3C2410_WATCHDOG if WATCHDOG
771	select HAVE_S3C_RTC if RTC_CLASS
772	select NEED_MACH_GPIO_H
773	select SAMSUNG_ATAGS
774	select SAMSUNG_WDT_RESET
775	help
776	  Samsung S5PC100 series based systems
777
778config ARCH_S5PV210
779	bool "Samsung S5PV210/S5PC110"
780	select ARCH_HAS_CPUFREQ
781	select ARCH_HAS_HOLES_MEMORYMODEL
782	select ARCH_SPARSEMEM_ENABLE
783	select CLKDEV_LOOKUP
784	select CLKSRC_SAMSUNG_PWM
785	select CPU_V7
786	select GENERIC_CLOCKEVENTS
787	select GPIO_SAMSUNG
788	select HAVE_S3C2410_I2C if I2C
789	select HAVE_S3C2410_WATCHDOG if WATCHDOG
790	select HAVE_S3C_RTC if RTC_CLASS
791	select NEED_MACH_GPIO_H
792	select NEED_MACH_MEMORY_H
793	select SAMSUNG_ATAGS
794	help
795	  Samsung S5PV210/S5PC110 series based systems
796
797config ARCH_EXYNOS
798	bool "Samsung EXYNOS"
799	select ARCH_HAS_CPUFREQ
800	select ARCH_HAS_HOLES_MEMORYMODEL
801	select ARCH_REQUIRE_GPIOLIB
802	select ARCH_SPARSEMEM_ENABLE
803	select ARM_GIC
804	select COMMON_CLK
805	select CPU_V7
806	select GENERIC_CLOCKEVENTS
807	select HAVE_S3C2410_I2C if I2C
808	select HAVE_S3C2410_WATCHDOG if WATCHDOG
809	select HAVE_S3C_RTC if RTC_CLASS
810	select NEED_MACH_MEMORY_H
811	select SPARSE_IRQ
812	select USE_OF
813	help
814	  Support for SAMSUNG's EXYNOS SoCs (EXYNOS4/5)
815
816config ARCH_DAVINCI
817	bool "TI DaVinci"
818	select ARCH_HAS_HOLES_MEMORYMODEL
819	select ARCH_REQUIRE_GPIOLIB
820	select CLKDEV_LOOKUP
821	select GENERIC_ALLOCATOR
822	select GENERIC_CLOCKEVENTS
823	select GENERIC_IRQ_CHIP
824	select HAVE_IDE
825	select NEED_MACH_GPIO_H
826	select TI_PRIV_EDMA
827	select USE_OF
828	select ZONE_DMA
829	help
830	  Support for TI's DaVinci platform.
831
832config ARCH_OMAP1
833	bool "TI OMAP1"
834	depends on MMU
835	select ARCH_HAS_CPUFREQ
836	select ARCH_HAS_HOLES_MEMORYMODEL
837	select ARCH_OMAP
838	select ARCH_REQUIRE_GPIOLIB
839	select CLKDEV_LOOKUP
840	select CLKSRC_MMIO
841	select GENERIC_CLOCKEVENTS
842	select GENERIC_IRQ_CHIP
843	select HAVE_IDE
844	select IRQ_DOMAIN
845	select NEED_MACH_IO_H if PCCARD
846	select NEED_MACH_MEMORY_H
847	help
848	  Support for older TI OMAP1 (omap7xx, omap15xx or omap16xx)
849
850endchoice
851
852menu "Multiple platform selection"
853	depends on ARCH_MULTIPLATFORM
854
855comment "CPU Core family selection"
856
857config ARCH_MULTI_V4T
858	bool "ARMv4T based platforms (ARM720T, ARM920T, ...)"
859	depends on !ARCH_MULTI_V6_V7
860	select ARCH_MULTI_V4_V5
861	select CPU_ARM920T if !(CPU_ARM7TDMI || CPU_ARM720T || \
862		CPU_ARM740T || CPU_ARM9TDMI || CPU_ARM922T || \
863		CPU_ARM925T || CPU_ARM940T)
864
865config ARCH_MULTI_V5
866	bool "ARMv5 based platforms (ARM926T, XSCALE, PJ1, ...)"
867	depends on !ARCH_MULTI_V6_V7
868	select ARCH_MULTI_V4_V5
869	select CPU_ARM926T if (!CPU_ARM946E || CPU_ARM1020 || \
870		CPU_ARM1020E || CPU_ARM1022 || CPU_ARM1026 || \
871		CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_FEROCEON)
872
873config ARCH_MULTI_V4_V5
874	bool
875
876config ARCH_MULTI_V6
877	bool "ARMv6 based platforms (ARM11)"
878	select ARCH_MULTI_V6_V7
879	select CPU_V6
880
881config ARCH_MULTI_V7
882	bool "ARMv7 based platforms (Cortex-A, PJ4, Scorpion, Krait)"
883	default y
884	select ARCH_MULTI_V6_V7
885	select CPU_V7
886
887config ARCH_MULTI_V6_V7
888	bool
889
890config ARCH_MULTI_CPU_AUTO
891	def_bool !(ARCH_MULTI_V4 || ARCH_MULTI_V4T || ARCH_MULTI_V6_V7)
892	select ARCH_MULTI_V5
893
894endmenu
895
896#
897# This is sorted alphabetically by mach-* pathname.  However, plat-*
898# Kconfigs may be included either alphabetically (according to the
899# plat- suffix) or along side the corresponding mach-* source.
900#
901source "arch/arm/mach-mvebu/Kconfig"
902
903source "arch/arm/mach-at91/Kconfig"
904
905source "arch/arm/mach-bcm/Kconfig"
906
907source "arch/arm/mach-bcm2835/Kconfig"
908
909source "arch/arm/mach-clps711x/Kconfig"
910
911source "arch/arm/mach-cns3xxx/Kconfig"
912
913source "arch/arm/mach-davinci/Kconfig"
914
915source "arch/arm/mach-dove/Kconfig"
916
917source "arch/arm/mach-ep93xx/Kconfig"
918
919source "arch/arm/mach-footbridge/Kconfig"
920
921source "arch/arm/mach-gemini/Kconfig"
922
923source "arch/arm/mach-highbank/Kconfig"
924
925source "arch/arm/mach-integrator/Kconfig"
926
927source "arch/arm/mach-iop32x/Kconfig"
928
929source "arch/arm/mach-iop33x/Kconfig"
930
931source "arch/arm/mach-iop13xx/Kconfig"
932
933source "arch/arm/mach-ixp4xx/Kconfig"
934
935source "arch/arm/mach-keystone/Kconfig"
936
937source "arch/arm/mach-kirkwood/Kconfig"
938
939source "arch/arm/mach-ks8695/Kconfig"
940
941source "arch/arm/mach-msm/Kconfig"
942
943source "arch/arm/mach-mv78xx0/Kconfig"
944
945source "arch/arm/mach-imx/Kconfig"
946
947source "arch/arm/mach-mxs/Kconfig"
948
949source "arch/arm/mach-netx/Kconfig"
950
951source "arch/arm/mach-nomadik/Kconfig"
952
953source "arch/arm/mach-nspire/Kconfig"
954
955source "arch/arm/plat-omap/Kconfig"
956
957source "arch/arm/mach-omap1/Kconfig"
958
959source "arch/arm/mach-omap2/Kconfig"
960
961source "arch/arm/mach-orion5x/Kconfig"
962
963source "arch/arm/mach-picoxcell/Kconfig"
964
965source "arch/arm/mach-pxa/Kconfig"
966source "arch/arm/plat-pxa/Kconfig"
967
968source "arch/arm/mach-mmp/Kconfig"
969
970source "arch/arm/mach-realview/Kconfig"
971
972source "arch/arm/mach-rockchip/Kconfig"
973
974source "arch/arm/mach-sa1100/Kconfig"
975
976source "arch/arm/plat-samsung/Kconfig"
977
978source "arch/arm/mach-socfpga/Kconfig"
979
980source "arch/arm/mach-spear/Kconfig"
981
982source "arch/arm/mach-sti/Kconfig"
983
984source "arch/arm/mach-s3c24xx/Kconfig"
985
986if ARCH_S3C64XX
987source "arch/arm/mach-s3c64xx/Kconfig"
988endif
989
990source "arch/arm/mach-s5p64x0/Kconfig"
991
992source "arch/arm/mach-s5pc100/Kconfig"
993
994source "arch/arm/mach-s5pv210/Kconfig"
995
996source "arch/arm/mach-exynos/Kconfig"
997
998source "arch/arm/mach-shmobile/Kconfig"
999
1000source "arch/arm/mach-sunxi/Kconfig"
1001
1002source "arch/arm/mach-prima2/Kconfig"
1003
1004source "arch/arm/mach-tegra/Kconfig"
1005
1006source "arch/arm/mach-u300/Kconfig"
1007
1008source "arch/arm/mach-ux500/Kconfig"
1009
1010source "arch/arm/mach-versatile/Kconfig"
1011
1012source "arch/arm/mach-vexpress/Kconfig"
1013source "arch/arm/plat-versatile/Kconfig"
1014
1015source "arch/arm/mach-virt/Kconfig"
1016
1017source "arch/arm/mach-vt8500/Kconfig"
1018
1019source "arch/arm/mach-w90x900/Kconfig"
1020
1021source "arch/arm/mach-zynq/Kconfig"
1022
1023# Definitions to make life easier
1024config ARCH_ACORN
1025	bool
1026
1027config PLAT_IOP
1028	bool
1029	select GENERIC_CLOCKEVENTS
1030
1031config PLAT_ORION
1032	bool
1033	select CLKSRC_MMIO
1034	select COMMON_CLK
1035	select GENERIC_IRQ_CHIP
1036	select IRQ_DOMAIN
1037
1038config PLAT_ORION_LEGACY
1039	bool
1040	select PLAT_ORION
1041
1042config PLAT_PXA
1043	bool
1044
1045config PLAT_VERSATILE
1046	bool
1047
1048config ARM_TIMER_SP804
1049	bool
1050	select CLKSRC_MMIO
1051	select CLKSRC_OF if OF
1052
1053source arch/arm/mm/Kconfig
1054
1055config ARM_NR_BANKS
1056	int
1057	default 16 if ARCH_EP93XX
1058	default 8
1059
1060config IWMMXT
1061	bool "Enable iWMMXt support" if !CPU_PJ4
1062	depends on CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_PJ4
1063	default y if PXA27x || PXA3xx || ARCH_MMP || CPU_PJ4
1064	help
1065	  Enable support for iWMMXt context switching at run time if
1066	  running on a CPU that supports it.
1067
1068config XSCALE_PMU
1069	bool
1070	depends on CPU_XSCALE
1071	default y
1072
1073config MULTI_IRQ_HANDLER
1074	bool
1075	help
1076	  Allow each machine to specify it's own IRQ handler at run time.
1077
1078if !MMU
1079source "arch/arm/Kconfig-nommu"
1080endif
1081
1082config PJ4B_ERRATA_4742
1083	bool "PJ4B Errata 4742: IDLE Wake Up Commands can Cause the CPU Core to Cease Operation"
1084	depends on CPU_PJ4B && MACH_ARMADA_370
1085	default y
1086	help
1087	  When coming out of either a Wait for Interrupt (WFI) or a Wait for
1088	  Event (WFE) IDLE states, a specific timing sensitivity exists between
1089	  the retiring WFI/WFE instructions and the newly issued subsequent
1090	  instructions.  This sensitivity can result in a CPU hang scenario.
1091	  Workaround:
1092	  The software must insert either a Data Synchronization Barrier (DSB)
1093	  or Data Memory Barrier (DMB) command immediately after the WFI/WFE
1094	  instruction
1095
1096config ARM_ERRATA_326103
1097	bool "ARM errata: FSR write bit incorrect on a SWP to read-only memory"
1098	depends on CPU_V6
1099	help
1100	  Executing a SWP instruction to read-only memory does not set bit 11
1101	  of the FSR on the ARM 1136 prior to r1p0. This causes the kernel to
1102	  treat the access as a read, preventing a COW from occurring and
1103	  causing the faulting task to livelock.
1104
1105config ARM_ERRATA_411920
1106	bool "ARM errata: Invalidation of the Instruction Cache operation can fail"
1107	depends on CPU_V6 || CPU_V6K
1108	help
1109	  Invalidation of the Instruction Cache operation can
1110	  fail. This erratum is present in 1136 (before r1p4), 1156 and 1176.
1111	  It does not affect the MPCore. This option enables the ARM Ltd.
1112	  recommended workaround.
1113
1114config ARM_ERRATA_430973
1115	bool "ARM errata: Stale prediction on replaced interworking branch"
1116	depends on CPU_V7
1117	help
1118	  This option enables the workaround for the 430973 Cortex-A8
1119	  (r1p0..r1p2) erratum. If a code sequence containing an ARM/Thumb
1120	  interworking branch is replaced with another code sequence at the
1121	  same virtual address, whether due to self-modifying code or virtual
1122	  to physical address re-mapping, Cortex-A8 does not recover from the
1123	  stale interworking branch prediction. This results in Cortex-A8
1124	  executing the new code sequence in the incorrect ARM or Thumb state.
1125	  The workaround enables the BTB/BTAC operations by setting ACTLR.IBE
1126	  and also flushes the branch target cache at every context switch.
1127	  Note that setting specific bits in the ACTLR register may not be
1128	  available in non-secure mode.
1129
1130config ARM_ERRATA_458693
1131	bool "ARM errata: Processor deadlock when a false hazard is created"
1132	depends on CPU_V7
1133	depends on !ARCH_MULTIPLATFORM
1134	help
1135	  This option enables the workaround for the 458693 Cortex-A8 (r2p0)
1136	  erratum. For very specific sequences of memory operations, it is
1137	  possible for a hazard condition intended for a cache line to instead
1138	  be incorrectly associated with a different cache line. This false
1139	  hazard might then cause a processor deadlock. The workaround enables
1140	  the L1 caching of the NEON accesses and disables the PLD instruction
1141	  in the ACTLR register. Note that setting specific bits in the ACTLR
1142	  register may not be available in non-secure mode.
1143
1144config ARM_ERRATA_460075
1145	bool "ARM errata: Data written to the L2 cache can be overwritten with stale data"
1146	depends on CPU_V7
1147	depends on !ARCH_MULTIPLATFORM
1148	help
1149	  This option enables the workaround for the 460075 Cortex-A8 (r2p0)
1150	  erratum. Any asynchronous access to the L2 cache may encounter a
1151	  situation in which recent store transactions to the L2 cache are lost
1152	  and overwritten with stale memory contents from external memory. The
1153	  workaround disables the write-allocate mode for the L2 cache via the
1154	  ACTLR register. Note that setting specific bits in the ACTLR register
1155	  may not be available in non-secure mode.
1156
1157config ARM_ERRATA_742230
1158	bool "ARM errata: DMB operation may be faulty"
1159	depends on CPU_V7 && SMP
1160	depends on !ARCH_MULTIPLATFORM
1161	help
1162	  This option enables the workaround for the 742230 Cortex-A9
1163	  (r1p0..r2p2) erratum. Under rare circumstances, a DMB instruction
1164	  between two write operations may not ensure the correct visibility
1165	  ordering of the two writes. This workaround sets a specific bit in
1166	  the diagnostic register of the Cortex-A9 which causes the DMB
1167	  instruction to behave as a DSB, ensuring the correct behaviour of
1168	  the two writes.
1169
1170config ARM_ERRATA_742231
1171	bool "ARM errata: Incorrect hazard handling in the SCU may lead to data corruption"
1172	depends on CPU_V7 && SMP
1173	depends on !ARCH_MULTIPLATFORM
1174	help
1175	  This option enables the workaround for the 742231 Cortex-A9
1176	  (r2p0..r2p2) erratum. Under certain conditions, specific to the
1177	  Cortex-A9 MPCore micro-architecture, two CPUs working in SMP mode,
1178	  accessing some data located in the same cache line, may get corrupted
1179	  data due to bad handling of the address hazard when the line gets
1180	  replaced from one of the CPUs at the same time as another CPU is
1181	  accessing it. This workaround sets specific bits in the diagnostic
1182	  register of the Cortex-A9 which reduces the linefill issuing
1183	  capabilities of the processor.
1184
1185config PL310_ERRATA_588369
1186	bool "PL310 errata: Clean & Invalidate maintenance operations do not invalidate clean lines"
1187	depends on CACHE_L2X0
1188	help
1189	   The PL310 L2 cache controller implements three types of Clean &
1190	   Invalidate maintenance operations: by Physical Address
1191	   (offset 0x7F0), by Index/Way (0x7F8) and by Way (0x7FC).
1192	   They are architecturally defined to behave as the execution of a
1193	   clean operation followed immediately by an invalidate operation,
1194	   both performing to the same memory location. This functionality
1195	   is not correctly implemented in PL310 as clean lines are not
1196	   invalidated as a result of these operations.
1197
1198config ARM_ERRATA_643719
1199	bool "ARM errata: LoUIS bit field in CLIDR register is incorrect"
1200	depends on CPU_V7 && SMP
1201	help
1202	  This option enables the workaround for the 643719 Cortex-A9 (prior to
1203	  r1p0) erratum. On affected cores the LoUIS bit field of the CLIDR
1204	  register returns zero when it should return one. The workaround
1205	  corrects this value, ensuring cache maintenance operations which use
1206	  it behave as intended and avoiding data corruption.
1207
1208config ARM_ERRATA_720789
1209	bool "ARM errata: TLBIASIDIS and TLBIMVAIS operations can broadcast a faulty ASID"
1210	depends on CPU_V7
1211	help
1212	  This option enables the workaround for the 720789 Cortex-A9 (prior to
1213	  r2p0) erratum. A faulty ASID can be sent to the other CPUs for the
1214	  broadcasted CP15 TLB maintenance operations TLBIASIDIS and TLBIMVAIS.
1215	  As a consequence of this erratum, some TLB entries which should be
1216	  invalidated are not, resulting in an incoherency in the system page
1217	  tables. The workaround changes the TLB flushing routines to invalidate
1218	  entries regardless of the ASID.
1219
1220config PL310_ERRATA_727915
1221	bool "PL310 errata: Background Clean & Invalidate by Way operation can cause data corruption"
1222	depends on CACHE_L2X0
1223	help
1224	  PL310 implements the Clean & Invalidate by Way L2 cache maintenance
1225	  operation (offset 0x7FC). This operation runs in background so that
1226	  PL310 can handle normal accesses while it is in progress. Under very
1227	  rare circumstances, due to this erratum, write data can be lost when
1228	  PL310 treats a cacheable write transaction during a Clean &
1229	  Invalidate by Way operation.
1230
1231config ARM_ERRATA_743622
1232	bool "ARM errata: Faulty hazard checking in the Store Buffer may lead to data corruption"
1233	depends on CPU_V7
1234	depends on !ARCH_MULTIPLATFORM
1235	help
1236	  This option enables the workaround for the 743622 Cortex-A9
1237	  (r2p*) erratum. Under very rare conditions, a faulty
1238	  optimisation in the Cortex-A9 Store Buffer may lead to data
1239	  corruption. This workaround sets a specific bit in the diagnostic
1240	  register of the Cortex-A9 which disables the Store Buffer
1241	  optimisation, preventing the defect from occurring. This has no
1242	  visible impact on the overall performance or power consumption of the
1243	  processor.
1244
1245config ARM_ERRATA_751472
1246	bool "ARM errata: Interrupted ICIALLUIS may prevent completion of broadcasted operation"
1247	depends on CPU_V7
1248	depends on !ARCH_MULTIPLATFORM
1249	help
1250	  This option enables the workaround for the 751472 Cortex-A9 (prior
1251	  to r3p0) erratum. An interrupted ICIALLUIS operation may prevent the
1252	  completion of a following broadcasted operation if the second
1253	  operation is received by a CPU before the ICIALLUIS has completed,
1254	  potentially leading to corrupted entries in the cache or TLB.
1255
1256config PL310_ERRATA_753970
1257	bool "PL310 errata: cache sync operation may be faulty"
1258	depends on CACHE_PL310
1259	help
1260	  This option enables the workaround for the 753970 PL310 (r3p0) erratum.
1261
1262	  Under some condition the effect of cache sync operation on
1263	  the store buffer still remains when the operation completes.
1264	  This means that the store buffer is always asked to drain and
1265	  this prevents it from merging any further writes. The workaround
1266	  is to replace the normal offset of cache sync operation (0x730)
1267	  by another offset targeting an unmapped PL310 register 0x740.
1268	  This has the same effect as the cache sync operation: store buffer
1269	  drain and waiting for all buffers empty.
1270
1271config ARM_ERRATA_754322
1272	bool "ARM errata: possible faulty MMU translations following an ASID switch"
1273	depends on CPU_V7
1274	help
1275	  This option enables the workaround for the 754322 Cortex-A9 (r2p*,
1276	  r3p*) erratum. A speculative memory access may cause a page table walk
1277	  which starts prior to an ASID switch but completes afterwards. This
1278	  can populate the micro-TLB with a stale entry which may be hit with
1279	  the new ASID. This workaround places two dsb instructions in the mm
1280	  switching code so that no page table walks can cross the ASID switch.
1281
1282config ARM_ERRATA_754327
1283	bool "ARM errata: no automatic Store Buffer drain"
1284	depends on CPU_V7 && SMP
1285	help
1286	  This option enables the workaround for the 754327 Cortex-A9 (prior to
1287	  r2p0) erratum. The Store Buffer does not have any automatic draining
1288	  mechanism and therefore a livelock may occur if an external agent
1289	  continuously polls a memory location waiting to observe an update.
1290	  This workaround defines cpu_relax() as smp_mb(), preventing correctly
1291	  written polling loops from denying visibility of updates to memory.
1292
1293config ARM_ERRATA_364296
1294	bool "ARM errata: Possible cache data corruption with hit-under-miss enabled"
1295	depends on CPU_V6
1296	help
1297	  This options enables the workaround for the 364296 ARM1136
1298	  r0p2 erratum (possible cache data corruption with
1299	  hit-under-miss enabled). It sets the undocumented bit 31 in
1300	  the auxiliary control register and the FI bit in the control
1301	  register, thus disabling hit-under-miss without putting the
1302	  processor into full low interrupt latency mode. ARM11MPCore
1303	  is not affected.
1304
1305config ARM_ERRATA_764369
1306	bool "ARM errata: Data cache line maintenance operation by MVA may not succeed"
1307	depends on CPU_V7 && SMP
1308	help
1309	  This option enables the workaround for erratum 764369
1310	  affecting Cortex-A9 MPCore with two or more processors (all
1311	  current revisions). Under certain timing circumstances, a data
1312	  cache line maintenance operation by MVA targeting an Inner
1313	  Shareable memory region may fail to proceed up to either the
1314	  Point of Coherency or to the Point of Unification of the
1315	  system. This workaround adds a DSB instruction before the
1316	  relevant cache maintenance functions and sets a specific bit
1317	  in the diagnostic control register of the SCU.
1318
1319config PL310_ERRATA_769419
1320	bool "PL310 errata: no automatic Store Buffer drain"
1321	depends on CACHE_L2X0
1322	help
1323	  On revisions of the PL310 prior to r3p2, the Store Buffer does
1324	  not automatically drain. This can cause normal, non-cacheable
1325	  writes to be retained when the memory system is idle, leading
1326	  to suboptimal I/O performance for drivers using coherent DMA.
1327	  This option adds a write barrier to the cpu_idle loop so that,
1328	  on systems with an outer cache, the store buffer is drained
1329	  explicitly.
1330
1331config ARM_ERRATA_775420
1332       bool "ARM errata: A data cache maintenance operation which aborts, might lead to deadlock"
1333       depends on CPU_V7
1334       help
1335	 This option enables the workaround for the 775420 Cortex-A9 (r2p2,
1336	 r2p6,r2p8,r2p10,r3p0) erratum. In case a date cache maintenance
1337	 operation aborts with MMU exception, it might cause the processor
1338	 to deadlock. This workaround puts DSB before executing ISB if
1339	 an abort may occur on cache maintenance.
1340
1341config ARM_ERRATA_798181
1342	bool "ARM errata: TLBI/DSB failure on Cortex-A15"
1343	depends on CPU_V7 && SMP
1344	help
1345	  On Cortex-A15 (r0p0..r3p2) the TLBI*IS/DSB operations are not
1346	  adequately shooting down all use of the old entries. This
1347	  option enables the Linux kernel workaround for this erratum
1348	  which sends an IPI to the CPUs that are running the same ASID
1349	  as the one being invalidated.
1350
1351config ARM_ERRATA_773022
1352	bool "ARM errata: incorrect instructions may be executed from loop buffer"
1353	depends on CPU_V7
1354	help
1355	  This option enables the workaround for the 773022 Cortex-A15
1356	  (up to r0p4) erratum. In certain rare sequences of code, the
1357	  loop buffer may deliver incorrect instructions. This
1358	  workaround disables the loop buffer to avoid the erratum.
1359
1360endmenu
1361
1362source "arch/arm/common/Kconfig"
1363
1364menu "Bus support"
1365
1366config ARM_AMBA
1367	bool
1368
1369config ISA
1370	bool
1371	help
1372	  Find out whether you have ISA slots on your motherboard.  ISA is the
1373	  name of a bus system, i.e. the way the CPU talks to the other stuff
1374	  inside your box.  Other bus systems are PCI, EISA, MicroChannel
1375	  (MCA) or VESA.  ISA is an older system, now being displaced by PCI;
1376	  newer boards don't support it.  If you have ISA, say Y, otherwise N.
1377
1378# Select ISA DMA controller support
1379config ISA_DMA
1380	bool
1381	select ISA_DMA_API
1382
1383# Select ISA DMA interface
1384config ISA_DMA_API
1385	bool
1386
1387config PCI
1388	bool "PCI support" if MIGHT_HAVE_PCI
1389	help
1390	  Find out whether you have a PCI motherboard. PCI is the name of a
1391	  bus system, i.e. the way the CPU talks to the other stuff inside
1392	  your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
1393	  VESA. If you have PCI, say Y, otherwise N.
1394
1395config PCI_DOMAINS
1396	bool
1397	depends on PCI
1398
1399config PCI_NANOENGINE
1400	bool "BSE nanoEngine PCI support"
1401	depends on SA1100_NANOENGINE
1402	help
1403	  Enable PCI on the BSE nanoEngine board.
1404
1405config PCI_SYSCALL
1406	def_bool PCI
1407
1408config PCI_HOST_ITE8152
1409	bool
1410	depends on PCI && MACH_ARMCORE
1411	default y
1412	select DMABOUNCE
1413
1414source "drivers/pci/Kconfig"
1415source "drivers/pci/pcie/Kconfig"
1416
1417source "drivers/pcmcia/Kconfig"
1418
1419endmenu
1420
1421menu "Kernel Features"
1422
1423config HAVE_SMP
1424	bool
1425	help
1426	  This option should be selected by machines which have an SMP-
1427	  capable CPU.
1428
1429	  The only effect of this option is to make the SMP-related
1430	  options available to the user for configuration.
1431
1432config SMP
1433	bool "Symmetric Multi-Processing"
1434	depends on CPU_V6K || CPU_V7
1435	depends on GENERIC_CLOCKEVENTS
1436	depends on HAVE_SMP
1437	depends on MMU || ARM_MPU
1438	select USE_GENERIC_SMP_HELPERS
1439	help
1440	  This enables support for systems with more than one CPU. If you have
1441	  a system with only one CPU, like most personal computers, say N. If
1442	  you have a system with more than one CPU, say Y.
1443
1444	  If you say N here, the kernel will run on single and multiprocessor
1445	  machines, but will use only one CPU of a multiprocessor machine. If
1446	  you say Y here, the kernel will run on many, but not all, single
1447	  processor machines. On a single processor machine, the kernel will
1448	  run faster if you say N here.
1449
1450	  See also <file:Documentation/x86/i386/IO-APIC.txt>,
1451	  <file:Documentation/nmi_watchdog.txt> and the SMP-HOWTO available at
1452	  <http://tldp.org/HOWTO/SMP-HOWTO.html>.
1453
1454	  If you don't know what to do here, say N.
1455
1456config SMP_ON_UP
1457	bool "Allow booting SMP kernel on uniprocessor systems (EXPERIMENTAL)"
1458	depends on SMP && !XIP_KERNEL && MMU
1459	default y
1460	help
1461	  SMP kernels contain instructions which fail on non-SMP processors.
1462	  Enabling this option allows the kernel to modify itself to make
1463	  these instructions safe.  Disabling it allows about 1K of space
1464	  savings.
1465
1466	  If you don't know what to do here, say Y.
1467
1468config ARM_CPU_TOPOLOGY
1469	bool "Support cpu topology definition"
1470	depends on SMP && CPU_V7
1471	default y
1472	help
1473	  Support ARM cpu topology definition. The MPIDR register defines
1474	  affinity between processors which is then used to describe the cpu
1475	  topology of an ARM System.
1476
1477config SCHED_MC
1478	bool "Multi-core scheduler support"
1479	depends on ARM_CPU_TOPOLOGY
1480	help
1481	  Multi-core scheduler support improves the CPU scheduler's decision
1482	  making when dealing with multi-core CPU chips at a cost of slightly
1483	  increased overhead in some places. If unsure say N here.
1484
1485config SCHED_SMT
1486	bool "SMT scheduler support"
1487	depends on ARM_CPU_TOPOLOGY
1488	help
1489	  Improves the CPU scheduler's decision making when dealing with
1490	  MultiThreading at a cost of slightly increased overhead in some
1491	  places. If unsure say N here.
1492
1493config HAVE_ARM_SCU
1494	bool
1495	help
1496	  This option enables support for the ARM system coherency unit
1497
1498config HAVE_ARM_ARCH_TIMER
1499	bool "Architected timer support"
1500	depends on CPU_V7
1501	select ARM_ARCH_TIMER
1502	help
1503	  This option enables support for the ARM architected timer
1504
1505config HAVE_ARM_TWD
1506	bool
1507	depends on SMP
1508	select CLKSRC_OF if OF
1509	help
1510	  This options enables support for the ARM timer and watchdog unit
1511
1512config MCPM
1513	bool "Multi-Cluster Power Management"
1514	depends on CPU_V7 && SMP
1515	help
1516	  This option provides the common power management infrastructure
1517	  for (multi-)cluster based systems, such as big.LITTLE based
1518	  systems.
1519
1520choice
1521	prompt "Memory split"
1522	default VMSPLIT_3G
1523	help
1524	  Select the desired split between kernel and user memory.
1525
1526	  If you are not absolutely sure what you are doing, leave this
1527	  option alone!
1528
1529	config VMSPLIT_3G
1530		bool "3G/1G user/kernel split"
1531	config VMSPLIT_2G
1532		bool "2G/2G user/kernel split"
1533	config VMSPLIT_1G
1534		bool "1G/3G user/kernel split"
1535endchoice
1536
1537config PAGE_OFFSET
1538	hex
1539	default 0x40000000 if VMSPLIT_1G
1540	default 0x80000000 if VMSPLIT_2G
1541	default 0xC0000000
1542
1543config NR_CPUS
1544	int "Maximum number of CPUs (2-32)"
1545	range 2 32
1546	depends on SMP
1547	default "4"
1548
1549config HOTPLUG_CPU
1550	bool "Support for hot-pluggable CPUs"
1551	depends on SMP
1552	help
1553	  Say Y here to experiment with turning CPUs off and on.  CPUs
1554	  can be controlled through /sys/devices/system/cpu.
1555
1556config ARM_PSCI
1557	bool "Support for the ARM Power State Coordination Interface (PSCI)"
1558	depends on CPU_V7
1559	help
1560	  Say Y here if you want Linux to communicate with system firmware
1561	  implementing the PSCI specification for CPU-centric power
1562	  management operations described in ARM document number ARM DEN
1563	  0022A ("Power State Coordination Interface System Software on
1564	  ARM processors").
1565
1566# The GPIO number here must be sorted by descending number. In case of
1567# a multiplatform kernel, we just want the highest value required by the
1568# selected platforms.
1569config ARCH_NR_GPIO
1570	int
1571	default 1024 if ARCH_SHMOBILE || ARCH_TEGRA
1572	default 512 if ARCH_EXYNOS || ARCH_KEYSTONE || SOC_OMAP5 || SOC_DRA7XX
1573	default 392 if ARCH_U8500
1574	default 352 if ARCH_VT8500
1575	default 288 if ARCH_SUNXI
1576	default 264 if MACH_H4700
1577	default 0
1578	help
1579	  Maximum number of GPIOs in the system.
1580
1581	  If unsure, leave the default value.
1582
1583source kernel/Kconfig.preempt
1584
1585config HZ_FIXED
1586	int
1587	default 200 if ARCH_EBSA110 || ARCH_S3C24XX || ARCH_S5P64X0 || \
1588		ARCH_S5PV210 || ARCH_EXYNOS4
1589	default AT91_TIMER_HZ if ARCH_AT91
1590	default SHMOBILE_TIMER_HZ if ARCH_SHMOBILE
1591	default 0
1592
1593choice
1594	depends on HZ_FIXED = 0
1595	prompt "Timer frequency"
1596
1597config HZ_100
1598	bool "100 Hz"
1599
1600config HZ_200
1601	bool "200 Hz"
1602
1603config HZ_250
1604	bool "250 Hz"
1605
1606config HZ_300
1607	bool "300 Hz"
1608
1609config HZ_500
1610	bool "500 Hz"
1611
1612config HZ_1000
1613	bool "1000 Hz"
1614
1615endchoice
1616
1617config HZ
1618	int
1619	default HZ_FIXED if HZ_FIXED != 0
1620	default 100 if HZ_100
1621	default 200 if HZ_200
1622	default 250 if HZ_250
1623	default 300 if HZ_300
1624	default 500 if HZ_500
1625	default 1000
1626
1627config SCHED_HRTICK
1628	def_bool HIGH_RES_TIMERS
1629
1630config SCHED_HRTICK
1631	def_bool HIGH_RES_TIMERS
1632
1633config THUMB2_KERNEL
1634	bool "Compile the kernel in Thumb-2 mode" if !CPU_THUMBONLY
1635	depends on (CPU_V7 || CPU_V7M) && !CPU_V6 && !CPU_V6K
1636	default y if CPU_THUMBONLY
1637	select AEABI
1638	select ARM_ASM_UNIFIED
1639	select ARM_UNWIND
1640	help
1641	  By enabling this option, the kernel will be compiled in
1642	  Thumb-2 mode. A compiler/assembler that understand the unified
1643	  ARM-Thumb syntax is needed.
1644
1645	  If unsure, say N.
1646
1647config THUMB2_AVOID_R_ARM_THM_JUMP11
1648	bool "Work around buggy Thumb-2 short branch relocations in gas"
1649	depends on THUMB2_KERNEL && MODULES
1650	default y
1651	help
1652	  Various binutils versions can resolve Thumb-2 branches to
1653	  locally-defined, preemptible global symbols as short-range "b.n"
1654	  branch instructions.
1655
1656	  This is a problem, because there's no guarantee the final
1657	  destination of the symbol, or any candidate locations for a
1658	  trampoline, are within range of the branch.  For this reason, the
1659	  kernel does not support fixing up the R_ARM_THM_JUMP11 (102)
1660	  relocation in modules at all, and it makes little sense to add
1661	  support.
1662
1663	  The symptom is that the kernel fails with an "unsupported
1664	  relocation" error when loading some modules.
1665
1666	  Until fixed tools are available, passing
1667	  -fno-optimize-sibling-calls to gcc should prevent gcc generating
1668	  code which hits this problem, at the cost of a bit of extra runtime
1669	  stack usage in some cases.
1670
1671	  The problem is described in more detail at:
1672	      https://bugs.launchpad.net/binutils-linaro/+bug/725126
1673
1674	  Only Thumb-2 kernels are affected.
1675
1676	  Unless you are sure your tools don't have this problem, say Y.
1677
1678config ARM_ASM_UNIFIED
1679	bool
1680
1681config AEABI
1682	bool "Use the ARM EABI to compile the kernel"
1683	help
1684	  This option allows for the kernel to be compiled using the latest
1685	  ARM ABI (aka EABI).  This is only useful if you are using a user
1686	  space environment that is also compiled with EABI.
1687
1688	  Since there are major incompatibilities between the legacy ABI and
1689	  EABI, especially with regard to structure member alignment, this
1690	  option also changes the kernel syscall calling convention to
1691	  disambiguate both ABIs and allow for backward compatibility support
1692	  (selected with CONFIG_OABI_COMPAT).
1693
1694	  To use this you need GCC version 4.0.0 or later.
1695
1696config OABI_COMPAT
1697	bool "Allow old ABI binaries to run with this kernel (EXPERIMENTAL)"
1698	depends on AEABI && !THUMB2_KERNEL
1699	default y
1700	help
1701	  This option preserves the old syscall interface along with the
1702	  new (ARM EABI) one. It also provides a compatibility layer to
1703	  intercept syscalls that have structure arguments which layout
1704	  in memory differs between the legacy ABI and the new ARM EABI
1705	  (only for non "thumb" binaries). This option adds a tiny
1706	  overhead to all syscalls and produces a slightly larger kernel.
1707	  If you know you'll be using only pure EABI user space then you
1708	  can say N here. If this option is not selected and you attempt
1709	  to execute a legacy ABI binary then the result will be
1710	  UNPREDICTABLE (in fact it can be predicted that it won't work
1711	  at all). If in doubt say Y.
1712
1713config ARCH_HAS_HOLES_MEMORYMODEL
1714	bool
1715
1716config ARCH_SPARSEMEM_ENABLE
1717	bool
1718
1719config ARCH_SPARSEMEM_DEFAULT
1720	def_bool ARCH_SPARSEMEM_ENABLE
1721
1722config ARCH_SELECT_MEMORY_MODEL
1723	def_bool ARCH_SPARSEMEM_ENABLE
1724
1725config HAVE_ARCH_PFN_VALID
1726	def_bool ARCH_HAS_HOLES_MEMORYMODEL || !SPARSEMEM
1727
1728config HIGHMEM
1729	bool "High Memory Support"
1730	depends on MMU
1731	help
1732	  The address space of ARM processors is only 4 Gigabytes large
1733	  and it has to accommodate user address space, kernel address
1734	  space as well as some memory mapped IO. That means that, if you
1735	  have a large amount of physical memory and/or IO, not all of the
1736	  memory can be "permanently mapped" by the kernel. The physical
1737	  memory that is not permanently mapped is called "high memory".
1738
1739	  Depending on the selected kernel/user memory split, minimum
1740	  vmalloc space and actual amount of RAM, you may not need this
1741	  option which should result in a slightly faster kernel.
1742
1743	  If unsure, say n.
1744
1745config HIGHPTE
1746	bool "Allocate 2nd-level pagetables from highmem"
1747	depends on HIGHMEM
1748
1749config HW_PERF_EVENTS
1750	bool "Enable hardware performance counter support for perf events"
1751	depends on PERF_EVENTS
1752	default y
1753	help
1754	  Enable hardware performance counter support for perf events. If
1755	  disabled, perf events will use software events only.
1756
1757config SYS_SUPPORTS_HUGETLBFS
1758       def_bool y
1759       depends on ARM_LPAE
1760
1761config HAVE_ARCH_TRANSPARENT_HUGEPAGE
1762       def_bool y
1763       depends on ARM_LPAE
1764
1765config ARCH_WANT_GENERAL_HUGETLB
1766	def_bool y
1767
1768source "mm/Kconfig"
1769
1770config FORCE_MAX_ZONEORDER
1771	int "Maximum zone order" if ARCH_SHMOBILE
1772	range 11 64 if ARCH_SHMOBILE
1773	default "12" if SOC_AM33XX
1774	default "9" if SA1111
1775	default "11"
1776	help
1777	  The kernel memory allocator divides physically contiguous memory
1778	  blocks into "zones", where each zone is a power of two number of
1779	  pages.  This option selects the largest power of two that the kernel
1780	  keeps in the memory allocator.  If you need to allocate very large
1781	  blocks of physically contiguous memory, then you may need to
1782	  increase this value.
1783
1784	  This config option is actually maximum order plus one. For example,
1785	  a value of 11 means that the largest free memory block is 2^10 pages.
1786
1787config ALIGNMENT_TRAP
1788	bool
1789	depends on CPU_CP15_MMU
1790	default y if !ARCH_EBSA110
1791	select HAVE_PROC_CPU if PROC_FS
1792	help
1793	  ARM processors cannot fetch/store information which is not
1794	  naturally aligned on the bus, i.e., a 4 byte fetch must start at an
1795	  address divisible by 4. On 32-bit ARM processors, these non-aligned
1796	  fetch/store instructions will be emulated in software if you say
1797	  here, which has a severe performance impact. This is necessary for
1798	  correct operation of some network protocols. With an IP-only
1799	  configuration it is safe to say N, otherwise say Y.
1800
1801config UACCESS_WITH_MEMCPY
1802	bool "Use kernel mem{cpy,set}() for {copy_to,clear}_user()"
1803	depends on MMU
1804	default y if CPU_FEROCEON
1805	help
1806	  Implement faster copy_to_user and clear_user methods for CPU
1807	  cores where a 8-word STM instruction give significantly higher
1808	  memory write throughput than a sequence of individual 32bit stores.
1809
1810	  A possible side effect is a slight increase in scheduling latency
1811	  between threads sharing the same address space if they invoke
1812	  such copy operations with large buffers.
1813
1814	  However, if the CPU data cache is using a write-allocate mode,
1815	  this option is unlikely to provide any performance gain.
1816
1817config SECCOMP
1818	bool
1819	prompt "Enable seccomp to safely compute untrusted bytecode"
1820	---help---
1821	  This kernel feature is useful for number crunching applications
1822	  that may need to compute untrusted bytecode during their
1823	  execution. By using pipes or other transports made available to
1824	  the process as file descriptors supporting the read/write
1825	  syscalls, it's possible to isolate those applications in
1826	  their own address space using seccomp. Once seccomp is
1827	  enabled via prctl(PR_SET_SECCOMP), it cannot be disabled
1828	  and the task is only allowed to execute a few safe syscalls
1829	  defined by each seccomp mode.
1830
1831config CC_STACKPROTECTOR
1832	bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)"
1833	help
1834	  This option turns on the -fstack-protector GCC feature. This
1835	  feature puts, at the beginning of functions, a canary value on
1836	  the stack just before the return address, and validates
1837	  the value just before actually returning.  Stack based buffer
1838	  overflows (that need to overwrite this return address) now also
1839	  overwrite the canary, which gets detected and the attack is then
1840	  neutralized via a kernel panic.
1841	  This feature requires gcc version 4.2 or above.
1842
1843config XEN_DOM0
1844	def_bool y
1845	depends on XEN
1846
1847config XEN
1848	bool "Xen guest support on ARM (EXPERIMENTAL)"
1849	depends on ARM && AEABI && OF
1850	depends on CPU_V7 && !CPU_V6
1851	depends on !GENERIC_ATOMIC64
1852	select ARM_PSCI
1853	help
1854	  Say Y if you want to run Linux in a Virtual Machine on Xen on ARM.
1855
1856endmenu
1857
1858menu "Boot options"
1859
1860config USE_OF
1861	bool "Flattened Device Tree support"
1862	select IRQ_DOMAIN
1863	select OF
1864	select OF_EARLY_FLATTREE
1865	help
1866	  Include support for flattened device tree machine descriptions.
1867
1868config ATAGS
1869	bool "Support for the traditional ATAGS boot data passing" if USE_OF
1870	default y
1871	help
1872	  This is the traditional way of passing data to the kernel at boot
1873	  time. If you are solely relying on the flattened device tree (or
1874	  the ARM_ATAG_DTB_COMPAT option) then you may unselect this option
1875	  to remove ATAGS support from your kernel binary.  If unsure,
1876	  leave this to y.
1877
1878config DEPRECATED_PARAM_STRUCT
1879	bool "Provide old way to pass kernel parameters"
1880	depends on ATAGS
1881	help
1882	  This was deprecated in 2001 and announced to live on for 5 years.
1883	  Some old boot loaders still use this way.
1884
1885# Compressed boot loader in ROM.  Yes, we really want to ask about
1886# TEXT and BSS so we preserve their values in the config files.
1887config ZBOOT_ROM_TEXT
1888	hex "Compressed ROM boot loader base address"
1889	default "0"
1890	help
1891	  The physical address at which the ROM-able zImage is to be
1892	  placed in the target.  Platforms which normally make use of
1893	  ROM-able zImage formats normally set this to a suitable
1894	  value in their defconfig file.
1895
1896	  If ZBOOT_ROM is not enabled, this has no effect.
1897
1898config ZBOOT_ROM_BSS
1899	hex "Compressed ROM boot loader BSS address"
1900	default "0"
1901	help
1902	  The base address of an area of read/write memory in the target
1903	  for the ROM-able zImage which must be available while the
1904	  decompressor is running. It must be large enough to hold the
1905	  entire decompressed kernel plus an additional 128 KiB.
1906	  Platforms which normally make use of ROM-able zImage formats
1907	  normally set this to a suitable value in their defconfig file.
1908
1909	  If ZBOOT_ROM is not enabled, this has no effect.
1910
1911config ZBOOT_ROM
1912	bool "Compressed boot loader in ROM/flash"
1913	depends on ZBOOT_ROM_TEXT != ZBOOT_ROM_BSS
1914	help
1915	  Say Y here if you intend to execute your compressed kernel image
1916	  (zImage) directly from ROM or flash.  If unsure, say N.
1917
1918choice
1919	prompt "Include SD/MMC loader in zImage (EXPERIMENTAL)"
1920	depends on ZBOOT_ROM && ARCH_SH7372
1921	default ZBOOT_ROM_NONE
1922	help
1923	  Include experimental SD/MMC loading code in the ROM-able zImage.
1924	  With this enabled it is possible to write the ROM-able zImage
1925	  kernel image to an MMC or SD card and boot the kernel straight
1926	  from the reset vector. At reset the processor Mask ROM will load
1927	  the first part of the ROM-able zImage which in turn loads the
1928	  rest the kernel image to RAM.
1929
1930config ZBOOT_ROM_NONE
1931	bool "No SD/MMC loader in zImage (EXPERIMENTAL)"
1932	help
1933	  Do not load image from SD or MMC
1934
1935config ZBOOT_ROM_MMCIF
1936	bool "Include MMCIF loader in zImage (EXPERIMENTAL)"
1937	help
1938	  Load image from MMCIF hardware block.
1939
1940config ZBOOT_ROM_SH_MOBILE_SDHI
1941	bool "Include SuperH Mobile SDHI loader in zImage (EXPERIMENTAL)"
1942	help
1943	  Load image from SDHI hardware block
1944
1945endchoice
1946
1947config ARM_APPENDED_DTB
1948	bool "Use appended device tree blob to zImage (EXPERIMENTAL)"
1949	depends on OF && !ZBOOT_ROM
1950	help
1951	  With this option, the boot code will look for a device tree binary
1952	  (DTB) appended to zImage
1953	  (e.g. cat zImage <filename>.dtb > zImage_w_dtb).
1954
1955	  This is meant as a backward compatibility convenience for those
1956	  systems with a bootloader that can't be upgraded to accommodate
1957	  the documented boot protocol using a device tree.
1958
1959	  Beware that there is very little in terms of protection against
1960	  this option being confused by leftover garbage in memory that might
1961	  look like a DTB header after a reboot if no actual DTB is appended
1962	  to zImage.  Do not leave this option active in a production kernel
1963	  if you don't intend to always append a DTB.  Proper passing of the
1964	  location into r2 of a bootloader provided DTB is always preferable
1965	  to this option.
1966
1967config ARM_ATAG_DTB_COMPAT
1968	bool "Supplement the appended DTB with traditional ATAG information"
1969	depends on ARM_APPENDED_DTB
1970	help
1971	  Some old bootloaders can't be updated to a DTB capable one, yet
1972	  they provide ATAGs with memory configuration, the ramdisk address,
1973	  the kernel cmdline string, etc.  Such information is dynamically
1974	  provided by the bootloader and can't always be stored in a static
1975	  DTB.  To allow a device tree enabled kernel to be used with such
1976	  bootloaders, this option allows zImage to extract the information
1977	  from the ATAG list and store it at run time into the appended DTB.
1978
1979choice
1980	prompt "Kernel command line type" if ARM_ATAG_DTB_COMPAT
1981	default ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER
1982
1983config ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER
1984	bool "Use bootloader kernel arguments if available"
1985	help
1986	  Uses the command-line options passed by the boot loader instead of
1987	  the device tree bootargs property. If the boot loader doesn't provide
1988	  any, the device tree bootargs property will be used.
1989
1990config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND
1991	bool "Extend with bootloader kernel arguments"
1992	help
1993	  The command-line arguments provided by the boot loader will be
1994	  appended to the the device tree bootargs property.
1995
1996endchoice
1997
1998config CMDLINE
1999	string "Default kernel command string"
2000	default ""
2001	help
2002	  On some architectures (EBSA110 and CATS), there is currently no way
2003	  for the boot loader to pass arguments to the kernel. For these
2004	  architectures, you should supply some command-line options at build
2005	  time by entering them here. As a minimum, you should specify the
2006	  memory size and the root device (e.g., mem=64M root=/dev/nfs).
2007
2008choice
2009	prompt "Kernel command line type" if CMDLINE != ""
2010	default CMDLINE_FROM_BOOTLOADER
2011	depends on ATAGS
2012
2013config CMDLINE_FROM_BOOTLOADER
2014	bool "Use bootloader kernel arguments if available"
2015	help
2016	  Uses the command-line options passed by the boot loader. If
2017	  the boot loader doesn't provide any, the default kernel command
2018	  string provided in CMDLINE will be used.
2019
2020config CMDLINE_EXTEND
2021	bool "Extend bootloader kernel arguments"
2022	help
2023	  The command-line arguments provided by the boot loader will be
2024	  appended to the default kernel command string.
2025
2026config CMDLINE_FORCE
2027	bool "Always use the default kernel command string"
2028	help
2029	  Always use the default kernel command string, even if the boot
2030	  loader passes other arguments to the kernel.
2031	  This is useful if you cannot or don't want to change the
2032	  command-line options your boot loader passes to the kernel.
2033endchoice
2034
2035config XIP_KERNEL
2036	bool "Kernel Execute-In-Place from ROM"
2037	depends on !ZBOOT_ROM && !ARM_LPAE && !ARCH_MULTIPLATFORM
2038	help
2039	  Execute-In-Place allows the kernel to run from non-volatile storage
2040	  directly addressable by the CPU, such as NOR flash. This saves RAM
2041	  space since the text section of the kernel is not loaded from flash
2042	  to RAM.  Read-write sections, such as the data section and stack,
2043	  are still copied to RAM.  The XIP kernel is not compressed since
2044	  it has to run directly from flash, so it will take more space to
2045	  store it.  The flash address used to link the kernel object files,
2046	  and for storing it, is configuration dependent. Therefore, if you
2047	  say Y here, you must know the proper physical address where to
2048	  store the kernel image depending on your own flash memory usage.
2049
2050	  Also note that the make target becomes "make xipImage" rather than
2051	  "make zImage" or "make Image".  The final kernel binary to put in
2052	  ROM memory will be arch/arm/boot/xipImage.
2053
2054	  If unsure, say N.
2055
2056config XIP_PHYS_ADDR
2057	hex "XIP Kernel Physical Location"
2058	depends on XIP_KERNEL
2059	default "0x00080000"
2060	help
2061	  This is the physical address in your flash memory the kernel will
2062	  be linked for and stored to.  This address is dependent on your
2063	  own flash usage.
2064
2065config KEXEC
2066	bool "Kexec system call (EXPERIMENTAL)"
2067	depends on (!SMP || PM_SLEEP_SMP)
2068	help
2069	  kexec is a system call that implements the ability to shutdown your
2070	  current kernel, and to start another kernel.  It is like a reboot
2071	  but it is independent of the system firmware.   And like a reboot
2072	  you can start any kernel with it, not just Linux.
2073
2074	  It is an ongoing process to be certain the hardware in a machine
2075	  is properly shutdown, so do not be surprised if this code does not
2076	  initially work for you.
2077
2078config ATAGS_PROC
2079	bool "Export atags in procfs"
2080	depends on ATAGS && KEXEC
2081	default y
2082	help
2083	  Should the atags used to boot the kernel be exported in an "atags"
2084	  file in procfs. Useful with kexec.
2085
2086config CRASH_DUMP
2087	bool "Build kdump crash kernel (EXPERIMENTAL)"
2088	help
2089	  Generate crash dump after being started by kexec. This should
2090	  be normally only set in special crash dump kernels which are
2091	  loaded in the main kernel with kexec-tools into a specially
2092	  reserved region and then later executed after a crash by
2093	  kdump/kexec. The crash dump kernel must be compiled to a
2094	  memory address not used by the main kernel
2095
2096	  For more details see Documentation/kdump/kdump.txt
2097
2098config AUTO_ZRELADDR
2099	bool "Auto calculation of the decompressed kernel image address"
2100	depends on !ZBOOT_ROM
2101	help
2102	  ZRELADDR is the physical address where the decompressed kernel
2103	  image will be placed. If AUTO_ZRELADDR is selected, the address
2104	  will be determined at run-time by masking the current IP with
2105	  0xf8000000. This assumes the zImage being placed in the first 128MB
2106	  from start of memory.
2107
2108endmenu
2109
2110menu "CPU Power Management"
2111
2112if ARCH_HAS_CPUFREQ
2113source "drivers/cpufreq/Kconfig"
2114endif
2115
2116source "drivers/cpuidle/Kconfig"
2117
2118endmenu
2119
2120menu "Floating point emulation"
2121
2122comment "At least one emulation must be selected"
2123
2124config FPE_NWFPE
2125	bool "NWFPE math emulation"
2126	depends on (!AEABI || OABI_COMPAT) && !THUMB2_KERNEL
2127	---help---
2128	  Say Y to include the NWFPE floating point emulator in the kernel.
2129	  This is necessary to run most binaries. Linux does not currently
2130	  support floating point hardware so you need to say Y here even if
2131	  your machine has an FPA or floating point co-processor podule.
2132
2133	  You may say N here if you are going to load the Acorn FPEmulator
2134	  early in the bootup.
2135
2136config FPE_NWFPE_XP
2137	bool "Support extended precision"
2138	depends on FPE_NWFPE
2139	help
2140	  Say Y to include 80-bit support in the kernel floating-point
2141	  emulator.  Otherwise, only 32 and 64-bit support is compiled in.
2142	  Note that gcc does not generate 80-bit operations by default,
2143	  so in most cases this option only enlarges the size of the
2144	  floating point emulator without any good reason.
2145
2146	  You almost surely want to say N here.
2147
2148config FPE_FASTFPE
2149	bool "FastFPE math emulation (EXPERIMENTAL)"
2150	depends on (!AEABI || OABI_COMPAT) && !CPU_32v3
2151	---help---
2152	  Say Y here to include the FAST floating point emulator in the kernel.
2153	  This is an experimental much faster emulator which now also has full
2154	  precision for the mantissa.  It does not support any exceptions.
2155	  It is very simple, and approximately 3-6 times faster than NWFPE.
2156
2157	  It should be sufficient for most programs.  It may be not suitable
2158	  for scientific calculations, but you have to check this for yourself.
2159	  If you do not feel you need a faster FP emulation you should better
2160	  choose NWFPE.
2161
2162config VFP
2163	bool "VFP-format floating point maths"
2164	depends on CPU_V6 || CPU_V6K || CPU_ARM926T || CPU_V7 || CPU_FEROCEON
2165	help
2166	  Say Y to include VFP support code in the kernel. This is needed
2167	  if your hardware includes a VFP unit.
2168
2169	  Please see <file:Documentation/arm/VFP/release-notes.txt> for
2170	  release notes and additional status information.
2171
2172	  Say N if your target does not have VFP hardware.
2173
2174config VFPv3
2175	bool
2176	depends on VFP
2177	default y if CPU_V7
2178
2179config NEON
2180	bool "Advanced SIMD (NEON) Extension support"
2181	depends on VFPv3 && CPU_V7
2182	help
2183	  Say Y to include support code for NEON, the ARMv7 Advanced SIMD
2184	  Extension.
2185
2186config KERNEL_MODE_NEON
2187	bool "Support for NEON in kernel mode"
2188	default n
2189	depends on NEON
2190	help
2191	  Say Y to include support for NEON in kernel mode.
2192
2193endmenu
2194
2195menu "Userspace binary formats"
2196
2197source "fs/Kconfig.binfmt"
2198
2199config ARTHUR
2200	tristate "RISC OS personality"
2201	depends on !AEABI
2202	help
2203	  Say Y here to include the kernel code necessary if you want to run
2204	  Acorn RISC OS/Arthur binaries under Linux. This code is still very
2205	  experimental; if this sounds frightening, say N and sleep in peace.
2206	  You can also say M here to compile this support as a module (which
2207	  will be called arthur).
2208
2209endmenu
2210
2211menu "Power management options"
2212
2213source "kernel/power/Kconfig"
2214
2215config ARCH_SUSPEND_POSSIBLE
2216	depends on !ARCH_S5PC100
2217	depends on CPU_ARM920T || CPU_ARM926T || CPU_FEROCEON || CPU_SA1100 || \
2218		CPU_V6 || CPU_V6K || CPU_V7 || CPU_XSC3 || CPU_XSCALE || CPU_MOHAWK
2219	def_bool y
2220
2221config ARM_CPU_SUSPEND
2222	def_bool PM_SLEEP
2223
2224endmenu
2225
2226source "net/Kconfig"
2227
2228source "drivers/Kconfig"
2229
2230source "fs/Kconfig"
2231
2232source "arch/arm/Kconfig.debug"
2233
2234source "security/Kconfig"
2235
2236source "crypto/Kconfig"
2237
2238source "lib/Kconfig"
2239
2240source "arch/arm/kvm/Kconfig"
2241