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