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