xref: /openbmc/linux/arch/m68k/Kconfig.cpu (revision 0153682e)
1# SPDX-License-Identifier: GPL-2.0
2comment "Processor Type"
3
4choice
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
21config M68KCLASSIC
22	bool "Classic M68K CPU family support"
23	select HAVE_ARCH_PFN_VALID
24
25config 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
35endchoice
36
37if M68KCLASSIC
38
39config 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
56config 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
67config 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
77config 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
88config 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
97config M68328
98	bool
99	depends on !MMU
100	select LEGACY_TIMER_TICK
101	select M68000
102	help
103	  Motorola 68328 processor support.
104
105config M68EZ328
106	bool
107	depends on !MMU
108	select LEGACY_TIMER_TICK
109	select M68000
110	help
111	  Motorola 68EX328 processor support.
112
113config M68VZ328
114	bool
115	depends on !MMU
116	select LEGACY_TIMER_TICK
117	select M68000
118	help
119	  Motorola 68VZ328 processor support.
120
121endif # M68KCLASSIC
122
123if COLDFIRE
124
125choice
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
132config 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
142config 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
152config 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
160config 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
169config 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
179config 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
189config 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
199config 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
209config 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
219config 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
228config 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
239config 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
248config 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
257config 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
268config 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
280config 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
292config 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
300endchoice
301
302config M527x
303	bool
304
305config M53xx
306	bool
307
308config M54xx
309	select HAVE_PCI
310	bool
311
312config COLDFIRE_PIT_TIMER
313	bool
314
315config COLDFIRE_TIMERS
316	bool
317	select LEGACY_TIMER_TICK
318
319config COLDFIRE_SLTIMERS
320	bool
321	select LEGACY_TIMER_TICK
322
323endif # COLDFIRE
324
325comment "Processor Specific Options"
326
327config 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
337config 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
348config 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
360config 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
375config 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
390config 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
402config 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
421config 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
436config M68K_L2_CACHE
437	bool
438	depends on MAC
439	default y
440
441config CPU_HAS_NO_BITFIELDS
442	bool
443
444config CPU_HAS_NO_CAS
445	bool
446
447config CPU_HAS_NO_MULDIV64
448	bool
449
450config CPU_HAS_NO_UNALIGNED
451	bool
452
453config CPU_HAS_ADDRESS_SPACES
454	bool
455	select ALTERNATE_USER_ADDRESS_SPACE
456
457config FPU
458	bool
459
460config COLDFIRE_SW_A7
461	bool
462
463config HAVE_CACHE_SPLIT
464	bool
465
466config HAVE_CACHE_CB
467	bool
468
469config HAVE_MBAR
470	bool
471
472config HAVE_IPSBAR
473	bool
474
475config 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
496config 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
503if HAVE_CACHE_SPLIT
504choice
505	prompt "Split Cache Configuration"
506	default CACHE_I
507
508config CACHE_I
509	bool "Instruction"
510	help
511	  Use all of the ColdFire CPU cache memory as an instruction cache.
512
513config CACHE_D
514	bool "Data"
515	help
516	  Use all of the ColdFire CPU cache memory as a data cache.
517
518config 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.
523endchoice
524endif # HAVE_CACHE_SPLIT
525
526if HAVE_CACHE_CB
527choice
528	prompt "Data cache mode"
529	default CACHE_WRITETHRU
530
531config CACHE_WRITETHRU
532	bool "Write-through"
533	help
534	  The ColdFire CPU cache is set into Write-through mode.
535
536config CACHE_COPYBACK
537	bool "Copy-back"
538	help
539	  The ColdFire CPU cache is set into Copy-back mode.
540endchoice
541endif # HAVE_CACHE_CB
542