1# SPDX-License-Identifier: GPL-2.0-only 2config CSKY 3 def_bool y 4 select ARCH_32BIT_OFF_T 5 select ARCH_HAS_DMA_PREP_COHERENT 6 select ARCH_HAS_GCOV_PROFILE_ALL 7 select ARCH_HAS_SYNC_DMA_FOR_CPU 8 select ARCH_HAS_SYNC_DMA_FOR_DEVICE 9 select ARCH_USE_BUILTIN_BSWAP 10 select ARCH_USE_QUEUED_RWLOCKS if NR_CPUS>2 11 select ARCH_WANT_FRAME_POINTERS if !CPU_CK610 12 select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT 13 select COMMON_CLK 14 select CLKSRC_MMIO 15 select CSKY_MPINTC if CPU_CK860 16 select CSKY_MP_TIMER if CPU_CK860 17 select CSKY_APB_INTC 18 select DMA_DIRECT_REMAP 19 select IRQ_DOMAIN 20 select HANDLE_DOMAIN_IRQ 21 select DW_APB_TIMER_OF 22 select GENERIC_IOREMAP 23 select GENERIC_LIB_ASHLDI3 24 select GENERIC_LIB_ASHRDI3 25 select GENERIC_LIB_LSHRDI3 26 select GENERIC_LIB_MULDI3 27 select GENERIC_LIB_CMPDI2 28 select GENERIC_LIB_UCMPDI2 29 select GENERIC_ALLOCATOR 30 select GENERIC_ATOMIC64 31 select GENERIC_CLOCKEVENTS 32 select GENERIC_CPU_DEVICES 33 select GENERIC_IRQ_CHIP 34 select GENERIC_IRQ_PROBE 35 select GENERIC_IRQ_SHOW 36 select GENERIC_IRQ_MULTI_HANDLER 37 select GENERIC_SCHED_CLOCK 38 select GENERIC_SMP_IDLE_THREAD 39 select GX6605S_TIMER if CPU_CK610 40 select HAVE_ARCH_TRACEHOOK 41 select HAVE_ARCH_AUDITSYSCALL 42 select HAVE_ARCH_MMAP_RND_BITS 43 select HAVE_ARCH_SECCOMP_FILTER 44 select HAVE_CONTEXT_TRACKING 45 select HAVE_VIRT_CPU_ACCOUNTING_GEN 46 select HAVE_DEBUG_BUGVERBOSE 47 select HAVE_DYNAMIC_FTRACE 48 select HAVE_DYNAMIC_FTRACE_WITH_REGS 49 select HAVE_FUNCTION_TRACER 50 select HAVE_FUNCTION_GRAPH_TRACER 51 select HAVE_FUNCTION_ERROR_INJECTION 52 select HAVE_FTRACE_MCOUNT_RECORD 53 select HAVE_KERNEL_GZIP 54 select HAVE_KERNEL_LZO 55 select HAVE_KERNEL_LZMA 56 select HAVE_KPROBES if !CPU_CK610 57 select HAVE_KPROBES_ON_FTRACE if !CPU_CK610 58 select HAVE_KRETPROBES if !CPU_CK610 59 select HAVE_PERF_EVENTS 60 select HAVE_PERF_REGS 61 select HAVE_PERF_USER_STACK_DUMP 62 select HAVE_DMA_CONTIGUOUS 63 select HAVE_REGS_AND_STACK_ACCESS_API 64 select HAVE_RSEQ 65 select HAVE_STACKPROTECTOR 66 select HAVE_SYSCALL_TRACEPOINTS 67 select MAY_HAVE_SPARSE_IRQ 68 select MODULES_USE_ELF_RELA if MODULES 69 select OF 70 select OF_EARLY_FLATTREE 71 select PERF_USE_VMALLOC if CPU_CK610 72 select RTC_LIB 73 select TIMER_OF 74 select USB_ARCH_HAS_EHCI 75 select USB_ARCH_HAS_OHCI 76 select GENERIC_PCI_IOMAP 77 select HAVE_PCI 78 select PCI_DOMAINS_GENERIC if PCI 79 select PCI_SYSCALL if PCI 80 select PCI_MSI if PCI 81 select SET_FS 82 83config LOCKDEP_SUPPORT 84 def_bool y 85 86config ARCH_SUPPORTS_UPROBES 87 def_bool y if !CPU_CK610 88 89config CPU_HAS_CACHEV2 90 bool 91 92config CPU_HAS_FPUV2 93 bool 94 95config CPU_HAS_HILO 96 bool 97 98config CPU_HAS_TLBI 99 bool 100 101config CPU_HAS_LDSTEX 102 bool 103 help 104 For SMP, CPU needs "ldex&stex" instructions for atomic operations. 105 106config CPU_NEED_TLBSYNC 107 bool 108 109config CPU_NEED_SOFTALIGN 110 bool 111 112config CPU_NO_USER_BKPT 113 bool 114 help 115 For abiv2 we couldn't use "trap 1" as user space bkpt in gdbserver, because 116 abiv2 is 16/32bit instruction set and "trap 1" is 32bit. 117 So we need a 16bit instruction as user space bkpt, and it will cause an illegal 118 instruction exception. 119 In kernel we parse the *regs->pc to determine whether to send SIGTRAP or not. 120 121config GENERIC_CALIBRATE_DELAY 122 def_bool y 123 124config GENERIC_CSUM 125 def_bool y 126 127config GENERIC_HWEIGHT 128 def_bool y 129 130config MMU 131 def_bool y 132 133config STACKTRACE_SUPPORT 134 def_bool y 135 136config TIME_LOW_RES 137 def_bool y 138 139config TRACE_IRQFLAGS_SUPPORT 140 def_bool y 141 142config CPU_TLB_SIZE 143 int 144 default "128" if (CPU_CK610 || CPU_CK807 || CPU_CK810) 145 default "1024" if (CPU_CK860) 146 147config CPU_ASID_BITS 148 int 149 default "8" if (CPU_CK610 || CPU_CK807 || CPU_CK810) 150 default "12" if (CPU_CK860) 151 152config L1_CACHE_SHIFT 153 int 154 default "4" if (CPU_CK610) 155 default "5" if (CPU_CK807 || CPU_CK810) 156 default "6" if (CPU_CK860) 157 158config ARCH_MMAP_RND_BITS_MIN 159 default 8 160 161# max bits determined by the following formula: 162# VA_BITS - PAGE_SHIFT - 3 163config ARCH_MMAP_RND_BITS_MAX 164 default 17 165 166menu "Processor type and features" 167 168choice 169 prompt "CPU MODEL" 170 default CPU_CK807 171 172config CPU_CK610 173 bool "CSKY CPU ck610" 174 select CPU_NEED_TLBSYNC 175 select CPU_NEED_SOFTALIGN 176 select CPU_NO_USER_BKPT 177 178config CPU_CK810 179 bool "CSKY CPU ck810" 180 select CPU_HAS_HILO 181 select CPU_NEED_TLBSYNC 182 183config CPU_CK807 184 bool "CSKY CPU ck807" 185 select CPU_HAS_HILO 186 187config CPU_CK860 188 bool "CSKY CPU ck860" 189 select CPU_HAS_TLBI 190 select CPU_HAS_CACHEV2 191 select CPU_HAS_LDSTEX 192 select CPU_HAS_FPUV2 193endchoice 194 195choice 196 prompt "C-SKY PMU type" 197 depends on PERF_EVENTS 198 depends on CPU_CK807 || CPU_CK810 || CPU_CK860 199 200config CPU_PMU_NONE 201 bool "None" 202 203config CSKY_PMU_V1 204 bool "Performance Monitoring Unit Ver.1" 205 206endchoice 207 208choice 209 prompt "Power Manager Instruction (wait/doze/stop)" 210 default CPU_PM_NONE 211 212config CPU_PM_NONE 213 bool "None" 214 215config CPU_PM_WAIT 216 bool "wait" 217 218config CPU_PM_DOZE 219 bool "doze" 220 221config CPU_PM_STOP 222 bool "stop" 223endchoice 224 225menuconfig HAVE_TCM 226 bool "Tightly-Coupled/Sram Memory" 227 select GENERIC_ALLOCATOR 228 help 229 The implementation are not only used by TCM (Tightly-Coupled Meory) 230 but also used by sram on SOC bus. It follow existed linux tcm 231 software interface, so that old tcm application codes could be 232 re-used directly. 233 234if HAVE_TCM 235config ITCM_RAM_BASE 236 hex "ITCM ram base" 237 default 0xffffffff 238 239config ITCM_NR_PAGES 240 int "Page count of ITCM size: NR*4KB" 241 range 1 256 242 default 32 243 244config HAVE_DTCM 245 bool "DTCM Support" 246 247config DTCM_RAM_BASE 248 hex "DTCM ram base" 249 depends on HAVE_DTCM 250 default 0xffffffff 251 252config DTCM_NR_PAGES 253 int "Page count of DTCM size: NR*4KB" 254 depends on HAVE_DTCM 255 range 1 256 256 default 32 257endif 258 259config CPU_HAS_VDSP 260 bool "CPU has VDSP coprocessor" 261 depends on CPU_HAS_FPU && CPU_HAS_FPUV2 262 263config CPU_HAS_FPU 264 bool "CPU has FPU coprocessor" 265 depends on CPU_CK807 || CPU_CK810 || CPU_CK860 266 267config CPU_HAS_ICACHE_INS 268 bool "CPU has Icache invalidate instructions" 269 depends on CPU_HAS_CACHEV2 270 271config CPU_HAS_TEE 272 bool "CPU has Trusted Execution Environment" 273 depends on CPU_CK810 274 275config SMP 276 bool "Symmetric Multi-Processing (SMP) support for C-SKY" 277 depends on CPU_CK860 278 default n 279 280config NR_CPUS 281 int "Maximum number of CPUs (2-32)" 282 range 2 32 283 depends on SMP 284 default "4" 285 286config HIGHMEM 287 bool "High Memory Support" 288 depends on !CPU_CK610 289 default y 290 291config FORCE_MAX_ZONEORDER 292 int "Maximum zone order" 293 default "11" 294 295config DRAM_BASE 296 hex "DRAM start addr (the same with memory-section in dts)" 297 default 0x0 298 299config HOTPLUG_CPU 300 bool "Support for hot-pluggable CPUs" 301 select GENERIC_IRQ_MIGRATION 302 depends on SMP 303 help 304 Say Y here to allow turning CPUs off and on. CPUs can be 305 controlled through /sys/devices/system/cpu/cpu1/hotplug/target. 306 307 Say N if you want to disable CPU hotplug. 308endmenu 309 310source "arch/csky/Kconfig.platforms" 311 312source "kernel/Kconfig.hz" 313