GNU Linux-libre 4.14.290-gnu1
[releases.git] / arch / mn10300 / Kconfig
1 # SPDX-License-Identifier: GPL-2.0
2 config MN10300
3         def_bool y
4         select HAVE_EXIT_THREAD
5         select HAVE_OPROFILE
6         select HAVE_UID16
7         select GENERIC_IRQ_SHOW
8         select ARCH_WANT_IPC_PARSE_VERSION
9         select HAVE_ARCH_TRACEHOOK
10         select HAVE_ARCH_KGDB
11         select GENERIC_ATOMIC64
12         select HAVE_NMI_WATCHDOG if MN10300_WD_TIMER
13         select VIRT_TO_BUS
14         select GENERIC_CLOCKEVENTS
15         select MODULES_USE_ELF_RELA
16         select OLD_SIGSUSPEND3
17         select OLD_SIGACTION
18         select HAVE_DEBUG_STACKOVERFLOW
19         select ARCH_NO_COHERENT_DMA_MMAP
20
21 config AM33_2
22         def_bool n
23
24 config AM33_3
25         def_bool n
26
27 config AM34_2
28         def_bool n
29         select MN10300_HAS_ATOMIC_OPS_UNIT
30         select MN10300_HAS_CACHE_SNOOP
31
32 config ERRATUM_NEED_TO_RELOAD_MMUCTR
33         def_bool y if AM33_3 || AM34_2
34
35 config MMU
36         def_bool y
37
38 config HIGHMEM
39         def_bool n
40
41 config NUMA
42         def_bool n
43
44 config RWSEM_GENERIC_SPINLOCK
45         def_bool y
46
47 config RWSEM_XCHGADD_ALGORITHM
48         bool
49
50 config GENERIC_CALIBRATE_DELAY
51         def_bool y
52
53 config GENERIC_HWEIGHT
54         def_bool y
55
56 config GENERIC_BUG
57         def_bool y
58         depends on BUG
59
60 config QUICKLIST
61         def_bool y
62
63 config ARCH_HAS_ILOG2_U32
64         def_bool y
65
66 config HOTPLUG_CPU
67         def_bool n
68
69 source "init/Kconfig"
70
71 source "kernel/Kconfig.freezer"
72
73
74 menu "Panasonic MN10300 system setup"
75
76 choice
77         prompt "Unit type"
78         default MN10300_UNIT_ASB2303
79         help
80           This option specifies board for which the kernel will be
81           compiled. It affects the external peripherals catered for.
82
83 config MN10300_UNIT_ASB2303
84         bool "ASB2303"
85
86 config MN10300_UNIT_ASB2305
87         bool "ASB2305"
88
89 config MN10300_UNIT_ASB2364
90         bool "ASB2364"
91         select SMSC911X_ARCH_HOOKS if SMSC911X
92
93 endchoice
94
95 choice
96         prompt "Processor support"
97         default MN10300_PROC_MN103E010
98         help
99           This option specifies the processor for which the kernel will be
100           compiled. It affects the on-chip peripherals catered for.
101
102 config MN10300_PROC_MN103E010
103         bool "MN103E010"
104         depends on MN10300_UNIT_ASB2303 || MN10300_UNIT_ASB2305
105         select AM33_2
106         select MN10300_PROC_HAS_TTYSM0
107         select MN10300_PROC_HAS_TTYSM1
108         select MN10300_PROC_HAS_TTYSM2
109
110 config MN10300_PROC_MN2WS0050
111         bool "MN2WS0050"
112         depends on MN10300_UNIT_ASB2364
113         select AM34_2
114         select MN10300_PROC_HAS_TTYSM0
115         select MN10300_PROC_HAS_TTYSM1
116         select MN10300_PROC_HAS_TTYSM2
117
118 endchoice
119
120 config MN10300_HAS_ATOMIC_OPS_UNIT
121         def_bool n
122         help
123           This should be enabled if the processor has an atomic ops unit
124           capable of doing LL/SC equivalent operations.
125
126 config FPU
127         bool "FPU present"
128         default y
129         depends on MN10300_PROC_MN103E010 || MN10300_PROC_MN2WS0050
130
131 config LAZY_SAVE_FPU
132         bool "Save FPU state lazily"
133         default y
134         depends on FPU && !SMP
135         help
136           Enable this to be lazy in the saving of the FPU state to the owning
137           task's thread struct.  This is useful if most tasks on the system
138           don't use the FPU as only those tasks that use it will pass it
139           between them, and the state needn't be saved for a task that isn't
140           using it.
141
142           This can't be so easily used on SMP as the process that owns the FPU
143           state on a CPU may be currently running on another CPU, so for the
144           moment, it is disabled.
145
146 source "arch/mn10300/mm/Kconfig.cache"
147
148 config MN10300_TLB_USE_PIDR
149         def_bool y
150
151 menu "Memory layout options"
152
153 config KERNEL_RAM_BASE_ADDRESS
154         hex "Base address of kernel RAM"
155         default "0x90000000"
156
157 config INTERRUPT_VECTOR_BASE
158         hex "Base address of vector table"
159         default "0x90000000"
160         help
161           The base address of the vector table will be programmed into
162           the TBR register. It must be on 16MiB address boundary.
163
164 config KERNEL_TEXT_ADDRESS
165         hex "Base address of kernel"
166         default "0x90001000"
167
168 config KERNEL_ZIMAGE_BASE_ADDRESS
169         hex "Base address of compressed vmlinux image"
170         default "0x50700000"
171
172 config BOOT_STACK_OFFSET
173         hex
174         default "0xF00" if SMP
175         default "0xFF0" if !SMP
176
177 config BOOT_STACK_SIZE
178         hex
179         depends on SMP
180         default "0x100"
181 endmenu
182
183 config SMP
184         bool "Symmetric multi-processing support"
185         default y
186         depends on MN10300_PROC_MN2WS0050
187         ---help---
188           This enables support for systems with more than one CPU. If you have
189           a system with only one CPU, say N. If you have a system with more
190           than one CPU, say Y.
191
192           If you say N here, the kernel will run on uni- and multiprocessor
193           machines, but will use only one CPU of a multiprocessor machine. If
194           you say Y here, the kernel will run on many, but not all,
195           uniprocessor machines. On a uniprocessor machine, the kernel
196           will run faster if you say N here.
197
198           See also <file:Documentation/x86/i386/IO-APIC.txt>,
199           <file:Documentation/nmi_watchdog.txt> and the SMP-HOWTO available at
200           <http://www.tldp.org/docs.html#howto>.
201
202           If you don't know what to do here, say N.
203
204 config NR_CPUS
205         int
206         depends on SMP
207         default "2"
208
209 source "kernel/Kconfig.preempt"
210
211 config MN10300_CURRENT_IN_E2
212         bool "Hold current task address in E2 register"
213         depends on !SMP
214         default y
215         help
216           This option removes the E2/R2 register from the set available to gcc
217           for normal use and instead uses it to store the address of the
218           current process's task_struct whilst in the kernel.
219
220           This means the kernel doesn't need to calculate the address each time
221           "current" is used (take SP, AND with mask and dereference pointer
222           just to get the address), and instead can just use E2+offset
223           addressing each time.
224
225           This has no effect on userspace.
226
227 config MN10300_USING_JTAG
228         bool "Using JTAG to debug kernel"
229         default y
230         help
231           This options indicates that JTAG will be used to debug the kernel. It
232           suppresses the use of certain hardware debugging features, such as
233           single-stepping, which are taken over completely by the JTAG unit.
234
235 source "kernel/Kconfig.hz"
236
237 config MN10300_RTC
238         bool "Using MN10300 RTC"
239         depends on MN10300_PROC_MN103E010 || MN10300_PROC_MN2WS0050
240         select RTC_CLASS
241         select RTC_DRV_CMOS
242         select RTC_SYSTOHC
243         default n
244         help
245           This option enables support for the RTC, thus enabling time to be
246           tracked, even when system is powered down. This is available on-chip
247           on the MN103E010.
248
249 config MN10300_WD_TIMER
250         bool "Using MN10300 watchdog timer"
251         default y
252         help
253           This options indicates that the watchdog timer will be used.
254
255 config PCI
256         bool "Use PCI"
257         depends on MN10300_UNIT_ASB2305
258         default y
259         select GENERIC_PCI_IOMAP
260         help
261           Some systems (such as the ASB2305) have PCI onboard. If you have one
262           of these boards and you wish to use the PCI facilities, say Y here.
263
264           The PCI-HOWTO, available from
265           <http://www.tldp.org/docs.html#howto>, contains valuable
266           information about which PCI hardware does work under Linux and which
267           doesn't.
268
269 source "drivers/pci/Kconfig"
270
271 source "drivers/pcmcia/Kconfig"
272
273 menu "MN10300 internal serial options"
274
275 config MN10300_PROC_HAS_TTYSM0
276         bool
277         default n
278
279 config MN10300_PROC_HAS_TTYSM1
280         bool
281         default n
282
283 config MN10300_PROC_HAS_TTYSM2
284         bool
285         default n
286
287 config MN10300_TTYSM
288         bool "Support for ttySM serial ports"
289         depends on MN10300
290         default y
291         select SERIAL_CORE
292         help
293           This option enables support for the on-chip serial ports that the
294           MN10300 has available.
295
296 config MN10300_TTYSM_CONSOLE
297         bool "Support for console on ttySM serial ports"
298         depends on MN10300_TTYSM
299         select SERIAL_CORE_CONSOLE
300         help
301           This option enables support for a console on the on-chip serial ports
302           that the MN10300 has available.
303
304 #
305 # /dev/ttySM0
306 #
307 config MN10300_TTYSM0
308         bool "Enable SIF0 (/dev/ttySM0)"
309         depends on MN10300_TTYSM && MN10300_PROC_HAS_TTYSM0
310         help
311           Enable access to SIF0 through /dev/ttySM0 or gdb-stub
312
313 choice
314         prompt "Select the timer to supply the clock for SIF0"
315         default MN10300_TTYSM0_TIMER8
316         depends on MN10300_TTYSM0
317
318 config MN10300_TTYSM0_TIMER8
319         bool "Use timer 8 (16-bit)"
320
321 config MN10300_TTYSM0_TIMER2
322         bool "Use timer 2 (8-bit)"
323
324 endchoice
325
326 #
327 # /dev/ttySM1
328 #
329 config MN10300_TTYSM1
330         bool "Enable SIF1 (/dev/ttySM1)"
331         depends on MN10300_TTYSM && MN10300_PROC_HAS_TTYSM1
332         help
333           Enable access to SIF1 through /dev/ttySM1 or gdb-stub
334
335 choice
336         prompt "Select the timer to supply the clock for SIF1"
337         default MN10300_TTYSM1_TIMER12 \
338                 if !(AM33_2 || AM33_3)
339         default MN10300_TTYSM1_TIMER9 \
340                 if AM33_2 || AM33_3
341         depends on MN10300_TTYSM1
342
343 config MN10300_TTYSM1_TIMER12
344         bool "Use timer 12 (16-bit)"
345         depends on !(AM33_2 || AM33_3)
346
347 config MN10300_TTYSM1_TIMER9
348         bool "Use timer 9 (16-bit)"
349         depends on AM33_2 || AM33_3
350
351 config MN10300_TTYSM1_TIMER3
352         bool "Use timer 3 (8-bit)"
353         depends on AM33_2 || AM33_3
354
355 endchoice
356
357 #
358 # /dev/ttySM2
359 #
360 config MN10300_TTYSM2
361         bool "Enable SIF2 (/dev/ttySM2)"
362         depends on MN10300_TTYSM && MN10300_PROC_HAS_TTYSM2
363         help
364           Enable access to SIF2 through /dev/ttySM2 or gdb-stub
365
366 choice
367         prompt "Select the timer to supply the clock for SIF2"
368         default MN10300_TTYSM2_TIMER3 \
369                 if !(AM33_2 || AM33_3)
370         default MN10300_TTYSM2_TIMER10 \
371                 if AM33_2 || AM33_3
372         depends on MN10300_TTYSM2
373
374 config MN10300_TTYSM2_TIMER9
375         bool "Use timer 9 (16-bit)"
376         depends on !(AM33_2 || AM33_3)
377
378 config MN10300_TTYSM2_TIMER1
379         bool "Use timer 1 (8-bit)"
380         depends on !(AM33_2 || AM33_3)
381
382 config MN10300_TTYSM2_TIMER3
383         bool "Use timer 3 (8-bit)"
384         depends on !(AM33_2 || AM33_3)
385
386 config MN10300_TTYSM2_TIMER10
387         bool "Use timer 10 (16-bit)"
388         depends on AM33_2 || AM33_3
389
390 endchoice
391
392 config MN10300_TTYSM2_CTS
393         bool "Enable the use of the CTS line /dev/ttySM2"
394         depends on MN10300_TTYSM2 && AM33_2
395
396 endmenu
397
398 menu "Interrupt request priority options"
399
400 comment "[!] NOTE: A lower number/level indicates a higher priority (0 is highest, 6 is lowest)"
401
402 comment "____Non-maskable interrupt levels____"
403 comment "The following must be set to a higher priority than local_irq_disable() and on-chip serial"
404
405 config DEBUGGER_IRQ_LEVEL
406         int "DEBUGGER interrupt priority"
407         depends on KERNEL_DEBUGGER
408         range 0 1 if LINUX_CLI_LEVEL = 2
409         range 0 2 if LINUX_CLI_LEVEL = 3
410         range 0 3 if LINUX_CLI_LEVEL = 4
411         range 0 4 if LINUX_CLI_LEVEL = 5
412         range 0 5 if LINUX_CLI_LEVEL = 6
413         default 0
414
415 comment "The following must be set to a higher priority than local_irq_disable()"
416
417 config MN10300_SERIAL_IRQ_LEVEL
418         int "MN10300 on-chip serial interrupt priority"
419         depends on MN10300_TTYSM
420         range 1 1 if LINUX_CLI_LEVEL = 2
421         range 1 2 if LINUX_CLI_LEVEL = 3
422         range 1 3 if LINUX_CLI_LEVEL = 4
423         range 1 4 if LINUX_CLI_LEVEL = 5
424         range 1 5 if LINUX_CLI_LEVEL = 6
425         default 1
426
427 comment "-"
428 comment "____Maskable interrupt levels____"
429
430 config LINUX_CLI_LEVEL
431         int "The highest interrupt priority excluded by local_irq_disable() (2-6)"
432         range 2 6
433         default 2
434         help
435           local_irq_disable() doesn't actually disable maskable interrupts -
436           what it does is restrict the levels of interrupt which are permitted
437           (a lower level indicates a higher priority) by lowering the value in
438           EPSW.IM from 7.  Any interrupt is permitted for which the level is
439           lower than EPSW.IM.
440
441           Certain interrupts, such as DEBUGGER and virtual MN10300 on-chip
442           serial DMA interrupts are allowed to interrupt normal disabled
443           sections.
444
445 comment "The following must be set to a equal to or lower priority than LINUX_CLI_LEVEL"
446
447 config TIMER_IRQ_LEVEL
448         int "Kernel timer interrupt priority"
449         range LINUX_CLI_LEVEL 6
450         default 4
451
452 config PCI_IRQ_LEVEL
453         int "PCI interrupt priority"
454         depends on PCI
455         range LINUX_CLI_LEVEL 6
456         default 5
457
458 config ETHERNET_IRQ_LEVEL
459         int "Ethernet interrupt priority"
460         depends on SMC91X || SMC911X || SMSC911X
461         range LINUX_CLI_LEVEL 6
462         default 6
463
464 config EXT_SERIAL_IRQ_LEVEL
465         int "External serial port interrupt priority"
466         depends on SERIAL_8250
467         range LINUX_CLI_LEVEL 6
468         default 6
469
470 endmenu
471
472 source "mm/Kconfig"
473
474 menu "Power management options"
475 source kernel/power/Kconfig
476 endmenu
477
478 endmenu
479
480
481 menu "Executable formats"
482
483 source "fs/Kconfig.binfmt"
484
485 endmenu
486
487 source "net/Kconfig"
488
489 source "drivers/Kconfig"
490
491 source "fs/Kconfig"
492
493 source "arch/mn10300/Kconfig.debug"
494
495 source "security/Kconfig"
496
497 source "crypto/Kconfig"
498
499 source "lib/Kconfig"