Merge tag 'ext4_for_linus_fixes2' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-block.git] / arch / m68k / Kconfig.cpu
1 # SPDX-License-Identifier: GPL-2.0
2 comment "Processor Type"
3
4 choice
5         prompt "CPU family support"
6         default M68KCLASSIC if MMU
7         default COLDFIRE if !MMU
8         help
9           The Freescale (was Motorola) M68K family of processors implements
10           the full 68000 processor instruction set.
11           The Freescale ColdFire family of processors is a modern derivative
12           of the 68000 processor family. They are mainly targeted at embedded
13           applications, and are all System-On-Chip (SOC) devices, as opposed
14           to stand alone CPUs. They implement a subset of the original 68000
15           processor instruction set.
16           If you anticipate running this kernel on a computer with a classic
17           MC68xxx processor, select M68KCLASSIC.
18           If you anticipate running this kernel on a computer with a ColdFire
19           processor, select COLDFIRE.
20
21 config M68KCLASSIC
22         bool "Classic M68K CPU family support"
23         select HAVE_ARCH_PFN_VALID
24
25 config COLDFIRE
26         bool "Coldfire CPU family support"
27         select ARCH_HAVE_CUSTOM_GPIO_H
28         select CPU_HAS_NO_BITFIELDS
29         select CPU_HAS_NO_CAS
30         select CPU_HAS_NO_MULDIV64
31         select GENERIC_CSUM
32         select GPIOLIB
33         select HAVE_LEGACY_CLK
34
35 endchoice
36
37 if M68KCLASSIC
38
39 config M68000
40         def_bool y
41         depends on !MMU
42         select CPU_HAS_NO_BITFIELDS
43         select CPU_HAS_NO_CAS
44         select CPU_HAS_NO_MULDIV64
45         select CPU_HAS_NO_UNALIGNED
46         select GENERIC_CSUM
47         select CPU_NO_EFFICIENT_FFS
48         select HAVE_ARCH_HASH
49         help
50           The Freescale (was Motorola) 68000 CPU is the first generation of
51           the well known M68K family of processors. The CPU core as well as
52           being available as a stand alone CPU was also used in many
53           System-On-Chip devices (eg 68328, 68302, etc). It does not contain
54           a paging MMU.
55
56 config M68020
57         bool "68020 support"
58         depends on MMU
59         select FPU
60         select CPU_HAS_ADDRESS_SPACES
61         help
62           If you anticipate running this kernel on a computer with a MC68020
63           processor, say Y. Otherwise, say N. Note that the 68020 requires a
64           68851 MMU (Memory Management Unit) to run Linux/m68k, except on the
65           Sun 3, which provides its own version.
66
67 config M68030
68         bool "68030 support"
69         depends on MMU && !MMU_SUN3
70         select FPU
71         select CPU_HAS_ADDRESS_SPACES
72         help
73           If you anticipate running this kernel on a computer with a MC68030
74           processor, say Y. Otherwise, say N. Note that a MC68EC030 will not
75           work, as it does not include an MMU (Memory Management Unit).
76
77 config M68040
78         bool "68040 support"
79         depends on MMU && !MMU_SUN3
80         select FPU
81         select CPU_HAS_ADDRESS_SPACES
82         help
83           If you anticipate running this kernel on a computer with a MC68LC040
84           or MC68040 processor, say Y. Otherwise, say N. Note that an
85           MC68EC040 will not work, as it does not include an MMU (Memory
86           Management Unit).
87
88 config M68060
89         bool "68060 support"
90         depends on MMU && !MMU_SUN3
91         select FPU
92         select CPU_HAS_ADDRESS_SPACES
93         help
94           If you anticipate running this kernel on a computer with a MC68060
95           processor, say Y. Otherwise, say N.
96
97 config M68328
98         bool
99         depends on !MMU
100         select LEGACY_TIMER_TICK
101         select M68000
102         help
103           Motorola 68328 processor support.
104
105 config M68EZ328
106         bool
107         depends on !MMU
108         select LEGACY_TIMER_TICK
109         select M68000
110         help
111           Motorola 68EX328 processor support.
112
113 config M68VZ328
114         bool
115         depends on !MMU
116         select LEGACY_TIMER_TICK
117         select M68000
118         help
119           Motorola 68VZ328 processor support.
120
121 endif # M68KCLASSIC
122
123 if COLDFIRE
124
125 choice
126         prompt "ColdFire SoC type"
127         default M520x
128         help
129           Select the type of ColdFire System-on-Chip (SoC) that you want
130           to build for.
131
132 config M5206
133         bool "MCF5206"
134         depends on !MMU
135         select COLDFIRE_SW_A7
136         select COLDFIRE_TIMERS
137         select HAVE_MBAR
138         select CPU_NO_EFFICIENT_FFS
139         help
140           Motorola ColdFire 5206 processor support.
141
142 config M5206e
143         bool "MCF5206e"
144         depends on !MMU
145         select COLDFIRE_SW_A7
146         select COLDFIRE_TIMERS
147         select HAVE_MBAR
148         select CPU_NO_EFFICIENT_FFS
149         help
150           Motorola ColdFire 5206e processor support.
151
152 config M520x
153         bool "MCF520x"
154         depends on !MMU
155         select COLDFIRE_PIT_TIMER
156         select HAVE_CACHE_SPLIT
157         help
158           Freescale Coldfire 5207/5208 processor support.
159
160 config M523x
161         bool "MCF523x"
162         depends on !MMU
163         select COLDFIRE_PIT_TIMER
164         select HAVE_CACHE_SPLIT
165         select HAVE_IPSBAR
166         help
167           Freescale Coldfire 5230/1/2/4/5 processor support
168
169 config M5249
170         bool "MCF5249"
171         depends on !MMU
172         select COLDFIRE_SW_A7
173         select COLDFIRE_TIMERS
174         select HAVE_MBAR
175         select CPU_NO_EFFICIENT_FFS
176         help
177           Motorola ColdFire 5249 processor support.
178
179 config M525x
180         bool "MCF525x"
181         depends on !MMU
182         select COLDFIRE_SW_A7
183         select COLDFIRE_TIMERS
184         select HAVE_MBAR
185         select CPU_NO_EFFICIENT_FFS
186         help
187           Freescale (Motorola) Coldfire 5251/5253 processor support.
188
189 config M5271
190         bool "MCF5271"
191         depends on !MMU
192         select COLDFIRE_PIT_TIMER
193         select M527x
194         select HAVE_CACHE_SPLIT
195         select HAVE_IPSBAR
196         help
197           Freescale (Motorola) ColdFire 5270/5271 processor support.
198
199 config M5272
200         bool "MCF5272"
201         depends on !MMU
202         select COLDFIRE_SW_A7
203         select COLDFIRE_TIMERS
204         select HAVE_MBAR
205         select CPU_NO_EFFICIENT_FFS
206         help
207           Motorola ColdFire 5272 processor support.
208
209 config M5275
210         bool "MCF5275"
211         depends on !MMU
212         select COLDFIRE_PIT_TIMER
213         select M527x
214         select HAVE_CACHE_SPLIT
215         select HAVE_IPSBAR
216         help
217           Freescale (Motorola) ColdFire 5274/5275 processor support.
218
219 config M528x
220         bool "MCF528x"
221         depends on !MMU
222         select COLDFIRE_PIT_TIMER
223         select HAVE_CACHE_SPLIT
224         select HAVE_IPSBAR
225         help
226           Motorola ColdFire 5280/5282 processor support.
227
228 config M5307
229         bool "MCF5307"
230         depends on !MMU
231         select COLDFIRE_TIMERS
232         select COLDFIRE_SW_A7
233         select HAVE_CACHE_CB
234         select HAVE_MBAR
235         select CPU_NO_EFFICIENT_FFS
236         help
237           Motorola ColdFire 5307 processor support.
238
239 config M532x
240         bool "MCF532x"
241         depends on !MMU
242         select COLDFIRE_TIMERS
243         select M53xx
244         select HAVE_CACHE_CB
245         help
246           Freescale (Motorola) ColdFire 532x processor support.
247
248 config M537x
249         bool "MCF537x"
250         depends on !MMU
251         select COLDFIRE_TIMERS
252         select M53xx
253         select HAVE_CACHE_CB
254         help
255           Freescale ColdFire 537x processor support.
256
257 config M5407
258         bool "MCF5407"
259         depends on !MMU
260         select COLDFIRE_SW_A7
261         select COLDFIRE_TIMERS
262         select HAVE_CACHE_CB
263         select HAVE_MBAR
264         select CPU_NO_EFFICIENT_FFS
265         help
266           Motorola ColdFire 5407 processor support.
267
268 config M547x
269         bool "MCF547x"
270         select M54xx
271         select COLDFIRE_SLTIMERS
272         select MMU_COLDFIRE if MMU
273         select FPU if MMU
274         select HAVE_CACHE_CB
275         select HAVE_MBAR
276         select CPU_NO_EFFICIENT_FFS
277         help
278           Freescale ColdFire 5470/5471/5472/5473/5474/5475 processor support.
279
280 config M548x
281         bool "MCF548x"
282         select COLDFIRE_SLTIMERS
283         select MMU_COLDFIRE if MMU
284         select FPU if MMU
285         select M54xx
286         select HAVE_CACHE_CB
287         select HAVE_MBAR
288         select CPU_NO_EFFICIENT_FFS
289         help
290           Freescale ColdFire 5480/5481/5482/5483/5484/5485 processor support.
291
292 config M5441x
293         bool "MCF5441x"
294         select COLDFIRE_PIT_TIMER
295         select MMU_COLDFIRE if MMU
296         select HAVE_CACHE_CB
297         help
298           Freescale Coldfire 54410/54415/54416/54417/54418 processor support.
299
300 endchoice
301
302 config M527x
303         bool
304
305 config M53xx
306         bool
307
308 config M54xx
309         select HAVE_PCI
310         bool
311
312 config COLDFIRE_PIT_TIMER
313         bool
314
315 config COLDFIRE_TIMERS
316         bool
317         select LEGACY_TIMER_TICK
318
319 config COLDFIRE_SLTIMERS
320         bool
321         select LEGACY_TIMER_TICK
322
323 endif # COLDFIRE
324
325 comment "Processor Specific Options"
326
327 config M68KFPU_EMU
328         bool "Math emulation support"
329         depends on M68KCLASSIC && FPU
330         help
331           At some point in the future, this will cause floating-point math
332           instructions to be emulated by the kernel on machines that lack a
333           floating-point math coprocessor.  Thrill-seekers and chronically
334           sleep-deprived psychotic hacker types can say Y now, everyone else
335           should probably wait a while.
336
337 config M68KFPU_EMU_EXTRAPREC
338         bool "Math emulation extra precision"
339         depends on M68KFPU_EMU
340         help
341           The fpu uses normally a few bit more during calculations for
342           correct rounding, the emulator can (often) do the same but this
343           extra calculation can cost quite some time, so you can disable
344           it here. The emulator will then "only" calculate with a 64 bit
345           mantissa and round slightly incorrect, what is more than enough
346           for normal usage.
347
348 config M68KFPU_EMU_ONLY
349         bool "Math emulation only kernel"
350         depends on M68KFPU_EMU
351         help
352           This option prevents any floating-point instructions from being
353           compiled into the kernel, thereby the kernel doesn't save any
354           floating point context anymore during task switches, so this
355           kernel will only be usable on machines without a floating-point
356           math coprocessor. This makes the kernel a bit faster as no tests
357           needs to be executed whether a floating-point instruction in the
358           kernel should be executed or not.
359
360 config ADVANCED
361         bool "Advanced configuration options"
362         depends on MMU
363         help
364           This gives you access to some advanced options for the CPU. The
365           defaults should be fine for most users, but these options may make
366           it possible for you to improve performance somewhat if you know what
367           you are doing.
368
369           Note that the answer to this question won't directly affect the
370           kernel: saying N will just cause the configurator to skip all
371           the questions about these options.
372
373           Most users should say N to this question.
374
375 config RMW_INSNS
376         bool "Use read-modify-write instructions"
377         depends on ADVANCED && !CPU_HAS_NO_CAS
378         help
379           This allows to use certain instructions that work with indivisible
380           read-modify-write bus cycles. While this is faster than the
381           workaround of disabling interrupts, it can conflict with DMA
382           ( = direct memory access) on many Amiga systems, and it is also said
383           to destabilize other machines. It is very likely that this will
384           cause serious problems on any Amiga or Atari Medusa if set. The only
385           configuration where it should work are 68030-based Ataris, where it
386           apparently improves performance. But you've been warned! Unless you
387           really know what you are doing, say N. Try Y only if you're quite
388           adventurous.
389
390 config SINGLE_MEMORY_CHUNK
391         bool "Use one physical chunk of memory only" if ADVANCED && !SUN3
392         depends on MMU
393         default y if SUN3 || MMU_COLDFIRE
394         help
395           Ignore all but the first contiguous chunk of physical memory for VM
396           purposes.  This will save a few bytes kernel size and may speed up
397           some operations.
398           When this option os set to N, you may want to lower "Maximum zone
399           order" to save memory that could be wasted for unused memory map.
400           Say N if not sure.
401
402 config FORCE_MAX_ZONEORDER
403         int "Maximum zone order" if ADVANCED
404         depends on !SINGLE_MEMORY_CHUNK
405         default "11"
406         help
407           The kernel memory allocator divides physically contiguous memory
408           blocks into "zones", where each zone is a power of two number of
409           pages.  This option selects the largest power of two that the kernel
410           keeps in the memory allocator.  If you need to allocate very large
411           blocks of physically contiguous memory, then you may need to
412           increase this value.
413
414           For systems that have holes in their physical address space this
415           value also defines the minimal size of the hole that allows
416           freeing unused memory map.
417
418           This config option is actually maximum order plus one. For example,
419           a value of 11 means that the largest free memory block is 2^10 pages.
420
421 config 060_WRITETHROUGH
422         bool "Use write-through caching for 68060 supervisor accesses"
423         depends on ADVANCED && M68060
424         help
425           The 68060 generally uses copyback caching of recently accessed data.
426           Copyback caching means that memory writes will be held in an on-chip
427           cache and only written back to memory some time later.  Saying Y
428           here will force supervisor (kernel) accesses to use writethrough
429           caching.  Writethrough caching means that data is written to memory
430           straight away, so that cache and memory data always agree.
431           Writethrough caching is less efficient, but is needed for some
432           drivers on 68060 based systems where the 68060 bus snooping signal
433           is hardwired on.  The 53c710 SCSI driver is known to suffer from
434           this problem.
435
436 config M68K_L2_CACHE
437         bool
438         depends on MAC
439         default y
440
441 config CPU_HAS_NO_BITFIELDS
442         bool
443
444 config CPU_HAS_NO_CAS
445         bool
446
447 config CPU_HAS_NO_MULDIV64
448         bool
449
450 config CPU_HAS_NO_UNALIGNED
451         bool
452
453 config CPU_HAS_ADDRESS_SPACES
454         bool
455         select ALTERNATE_USER_ADDRESS_SPACE
456
457 config FPU
458         bool
459
460 config COLDFIRE_SW_A7
461         bool
462
463 config HAVE_CACHE_SPLIT
464         bool
465
466 config HAVE_CACHE_CB
467         bool
468
469 config HAVE_MBAR
470         bool
471
472 config HAVE_IPSBAR
473         bool
474
475 config CLOCK_FREQ
476         int "Set the core clock frequency"
477         default "25000000" if M5206
478         default "54000000" if M5206e
479         default "166666666" if M520x
480         default "140000000" if M5249
481         default "150000000" if M527x || M523x
482         default "90000000" if M5307
483         default "50000000" if M5407
484         default "266000000" if M54xx
485         default "66666666"
486         depends on COLDFIRE
487         help
488           Define the CPU clock frequency in use. This is the core clock
489           frequency, it may or may not be the same as the external clock
490           crystal fitted to your board. Some processors have an internal
491           PLL and can have their frequency programmed at run time, others
492           use internal dividers. In general the kernel won't setup a PLL
493           if it is fitted (there are some exceptions). This value will be
494           specific to the exact CPU that you are using.
495
496 config OLDMASK
497         bool "Old mask 5307 (1H55J) silicon"
498         depends on M5307
499         help
500           Build support for the older revision ColdFire 5307 silicon.
501           Specifically this is the 1H55J mask revision.
502
503 if HAVE_CACHE_SPLIT
504 choice
505         prompt "Split Cache Configuration"
506         default CACHE_I
507
508 config CACHE_I
509         bool "Instruction"
510         help
511           Use all of the ColdFire CPU cache memory as an instruction cache.
512
513 config CACHE_D
514         bool "Data"
515         help
516           Use all of the ColdFire CPU cache memory as a data cache.
517
518 config CACHE_BOTH
519         bool "Both"
520         help
521           Split the ColdFire CPU cache, and use half as an instruction cache
522           and half as a data cache.
523 endchoice
524 endif # HAVE_CACHE_SPLIT
525
526 if HAVE_CACHE_CB
527 choice
528         prompt "Data cache mode"
529         default CACHE_WRITETHRU
530
531 config CACHE_WRITETHRU
532         bool "Write-through"
533         help
534           The ColdFire CPU cache is set into Write-through mode.
535
536 config CACHE_COPYBACK
537         bool "Copy-back"
538         help
539           The ColdFire CPU cache is set into Copy-back mode.
540 endchoice
541 endif # HAVE_CACHE_CB