1ec8f24b7SThomas Gleixner# SPDX-License-Identifier: GPL-2.0-only 2c32e64e8SGuo Renconfig CSKY 3c32e64e8SGuo Ren def_bool y 4942fa985SYury Norov select ARCH_32BIT_OFF_T 513bf5cedSChristoph Hellwig select ARCH_HAS_DMA_PREP_COHERENT 6c32e64e8SGuo Ren select ARCH_HAS_SYNC_DMA_FOR_CPU 7c32e64e8SGuo Ren select ARCH_HAS_SYNC_DMA_FOR_DEVICE 8c32e64e8SGuo Ren select ARCH_USE_BUILTIN_BSWAP 9c32e64e8SGuo Ren select ARCH_USE_QUEUED_RWLOCKS if NR_CPUS>2 10c32e64e8SGuo Ren select COMMON_CLK 11c32e64e8SGuo Ren select CLKSRC_MMIO 121994cc49SGuo Ren select CSKY_MPINTC if CPU_CK860 131994cc49SGuo Ren select CSKY_MP_TIMER if CPU_CK860 141994cc49SGuo Ren select CSKY_APB_INTC 15f04b951fSChristoph Hellwig select DMA_DIRECT_REMAP 16c32e64e8SGuo Ren select IRQ_DOMAIN 17c32e64e8SGuo Ren select HANDLE_DOMAIN_IRQ 18c32e64e8SGuo Ren select DW_APB_TIMER_OF 190055f67bSChristoph Hellwig select GENERIC_IOREMAP 20c32e64e8SGuo Ren select GENERIC_LIB_ASHLDI3 21c32e64e8SGuo Ren select GENERIC_LIB_ASHRDI3 22c32e64e8SGuo Ren select GENERIC_LIB_LSHRDI3 23c32e64e8SGuo Ren select GENERIC_LIB_MULDI3 24c32e64e8SGuo Ren select GENERIC_LIB_CMPDI2 25c32e64e8SGuo Ren select GENERIC_LIB_UCMPDI2 26c32e64e8SGuo Ren select GENERIC_ALLOCATOR 27c32e64e8SGuo Ren select GENERIC_ATOMIC64 28c32e64e8SGuo Ren select GENERIC_CLOCKEVENTS 29c32e64e8SGuo Ren select GENERIC_CPU_DEVICES 30c32e64e8SGuo Ren select GENERIC_IRQ_CHIP 31c32e64e8SGuo Ren select GENERIC_IRQ_PROBE 32c32e64e8SGuo Ren select GENERIC_IRQ_SHOW 33c32e64e8SGuo Ren select GENERIC_IRQ_MULTI_HANDLER 34c32e64e8SGuo Ren select GENERIC_SCHED_CLOCK 35c32e64e8SGuo Ren select GENERIC_SMP_IDLE_THREAD 361994cc49SGuo Ren select GX6605S_TIMER if CPU_CK610 37c32e64e8SGuo Ren select HAVE_ARCH_TRACEHOOK 382f7932b0SGuo Ren select HAVE_ARCH_AUDITSYSCALL 390b9f386cSGuo Ren select HAVE_COPY_THREAD_TLS 4028bb030fSGuo Ren select HAVE_DYNAMIC_FTRACE 41*89a3927aSGuo Ren select HAVE_DYNAMIC_FTRACE_WITH_REGS 42230c77a5SGuo Ren select HAVE_FUNCTION_TRACER 43d7950be1SGuo Ren select HAVE_FUNCTION_GRAPH_TRACER 4428bb030fSGuo Ren select HAVE_FTRACE_MCOUNT_RECORD 45c32e64e8SGuo Ren select HAVE_KERNEL_GZIP 46c32e64e8SGuo Ren select HAVE_KERNEL_LZO 47c32e64e8SGuo Ren select HAVE_KERNEL_LZMA 48f50fd2d8SGuo Ren select HAVE_PERF_EVENTS 49daac95e7SMao Han select HAVE_PERF_REGS 50daac95e7SMao Han select HAVE_PERF_USER_STACK_DUMP 51c32e64e8SGuo Ren select HAVE_DMA_CONTIGUOUS 52bfe47f35SGuo Ren select HAVE_REGS_AND_STACK_ACCESS_API 539866d141SGuo Ren select HAVE_RSEQ 542f78c73fSMao Han select HAVE_STACKPROTECTOR 552f7932b0SGuo Ren select HAVE_SYSCALL_TRACEPOINTS 56c32e64e8SGuo Ren select MAY_HAVE_SPARSE_IRQ 57c32e64e8SGuo Ren select MODULES_USE_ELF_RELA if MODULES 58c32e64e8SGuo Ren select OF 59c32e64e8SGuo Ren select OF_EARLY_FLATTREE 60f50fd2d8SGuo Ren select PERF_USE_VMALLOC if CPU_CK610 61c32e64e8SGuo Ren select RTC_LIB 62c32e64e8SGuo Ren select TIMER_OF 63c32e64e8SGuo Ren select USB_ARCH_HAS_EHCI 64c32e64e8SGuo Ren select USB_ARCH_HAS_OHCI 655b49c82dSMaJun select GENERIC_PCI_IOMAP 665b49c82dSMaJun select HAVE_PCI 675b49c82dSMaJun select PCI_DOMAINS_GENERIC if PCI 685b49c82dSMaJun select PCI_SYSCALL if PCI 695b49c82dSMaJun select PCI_MSI if PCI 70c32e64e8SGuo Ren 71c32e64e8SGuo Renconfig CPU_HAS_CACHEV2 72c32e64e8SGuo Ren bool 73c32e64e8SGuo Ren 74c32e64e8SGuo Renconfig CPU_HAS_FPUV2 75c32e64e8SGuo Ren bool 76c32e64e8SGuo Ren 77c32e64e8SGuo Renconfig CPU_HAS_HILO 78c32e64e8SGuo Ren bool 79c32e64e8SGuo Ren 80c32e64e8SGuo Renconfig CPU_HAS_TLBI 81c32e64e8SGuo Ren bool 82c32e64e8SGuo Ren 83c32e64e8SGuo Renconfig CPU_HAS_LDSTEX 84c32e64e8SGuo Ren bool 85c32e64e8SGuo Ren help 86bebd26abSRandy Dunlap For SMP, CPU needs "ldex&stex" instructions for atomic operations. 87c32e64e8SGuo Ren 88c32e64e8SGuo Renconfig CPU_NEED_TLBSYNC 89c32e64e8SGuo Ren bool 90c32e64e8SGuo Ren 91c32e64e8SGuo Renconfig CPU_NEED_SOFTALIGN 92c32e64e8SGuo Ren bool 93c32e64e8SGuo Ren 94c32e64e8SGuo Renconfig CPU_NO_USER_BKPT 95c32e64e8SGuo Ren bool 96c32e64e8SGuo Ren help 97c32e64e8SGuo Ren For abiv2 we couldn't use "trap 1" as user space bkpt in gdbserver, because 98c32e64e8SGuo Ren abiv2 is 16/32bit instruction set and "trap 1" is 32bit. 99c32e64e8SGuo Ren So we need a 16bit instruction as user space bkpt, and it will cause an illegal 100c32e64e8SGuo Ren instruction exception. 101c32e64e8SGuo Ren In kernel we parse the *regs->pc to determine whether to send SIGTRAP or not. 102c32e64e8SGuo Ren 103c32e64e8SGuo Renconfig GENERIC_CALIBRATE_DELAY 104c32e64e8SGuo Ren def_bool y 105c32e64e8SGuo Ren 106c32e64e8SGuo Renconfig GENERIC_CSUM 107c32e64e8SGuo Ren def_bool y 108c32e64e8SGuo Ren 109c32e64e8SGuo Renconfig GENERIC_HWEIGHT 110c32e64e8SGuo Ren def_bool y 111c32e64e8SGuo Ren 112c32e64e8SGuo Renconfig MMU 113c32e64e8SGuo Ren def_bool y 114c32e64e8SGuo Ren 1150ea2dc7cSGuo Renconfig STACKTRACE_SUPPORT 1160ea2dc7cSGuo Ren def_bool y 1170ea2dc7cSGuo Ren 118c32e64e8SGuo Renconfig TIME_LOW_RES 119c32e64e8SGuo Ren def_bool y 120c32e64e8SGuo Ren 121c32e64e8SGuo Renconfig TRACE_IRQFLAGS_SUPPORT 122c32e64e8SGuo Ren def_bool y 123c32e64e8SGuo Ren 124c32e64e8SGuo Renconfig CPU_TLB_SIZE 125c32e64e8SGuo Ren int 126c32e64e8SGuo Ren default "128" if (CPU_CK610 || CPU_CK807 || CPU_CK810) 127c32e64e8SGuo Ren default "1024" if (CPU_CK860) 128c32e64e8SGuo Ren 129c32e64e8SGuo Renconfig CPU_ASID_BITS 130c32e64e8SGuo Ren int 131c32e64e8SGuo Ren default "8" if (CPU_CK610 || CPU_CK807 || CPU_CK810) 132c32e64e8SGuo Ren default "12" if (CPU_CK860) 133c32e64e8SGuo Ren 134c32e64e8SGuo Renconfig L1_CACHE_SHIFT 135c32e64e8SGuo Ren int 136c32e64e8SGuo Ren default "4" if (CPU_CK610) 137c32e64e8SGuo Ren default "5" if (CPU_CK807 || CPU_CK810) 138c32e64e8SGuo Ren default "6" if (CPU_CK860) 139c32e64e8SGuo Ren 140c32e64e8SGuo Renmenu "Processor type and features" 141c32e64e8SGuo Ren 142c32e64e8SGuo Renchoice 143c32e64e8SGuo Ren prompt "CPU MODEL" 144c32e64e8SGuo Ren default CPU_CK807 145c32e64e8SGuo Ren 146c32e64e8SGuo Renconfig CPU_CK610 147c32e64e8SGuo Ren bool "CSKY CPU ck610" 148c32e64e8SGuo Ren select CPU_NEED_TLBSYNC 149c32e64e8SGuo Ren select CPU_NEED_SOFTALIGN 150c32e64e8SGuo Ren select CPU_NO_USER_BKPT 151c32e64e8SGuo Ren 152c32e64e8SGuo Renconfig CPU_CK810 153c32e64e8SGuo Ren bool "CSKY CPU ck810" 154c32e64e8SGuo Ren select CPU_HAS_HILO 155c32e64e8SGuo Ren select CPU_NEED_TLBSYNC 156c32e64e8SGuo Ren 157c32e64e8SGuo Renconfig CPU_CK807 158c32e64e8SGuo Ren bool "CSKY CPU ck807" 159c32e64e8SGuo Ren select CPU_HAS_HILO 160c32e64e8SGuo Ren 161c32e64e8SGuo Renconfig CPU_CK860 162c32e64e8SGuo Ren bool "CSKY CPU ck860" 163c32e64e8SGuo Ren select CPU_HAS_TLBI 164c32e64e8SGuo Ren select CPU_HAS_CACHEV2 165c32e64e8SGuo Ren select CPU_HAS_LDSTEX 166c32e64e8SGuo Ren select CPU_HAS_FPUV2 167c32e64e8SGuo Renendchoice 168c32e64e8SGuo Ren 169c32e64e8SGuo Renchoice 170f50fd2d8SGuo Ren prompt "C-SKY PMU type" 171f50fd2d8SGuo Ren depends on PERF_EVENTS 172f50fd2d8SGuo Ren depends on CPU_CK807 || CPU_CK810 || CPU_CK860 173f50fd2d8SGuo Ren 174f50fd2d8SGuo Renconfig CPU_PMU_NONE 175f50fd2d8SGuo Ren bool "None" 176f50fd2d8SGuo Ren 177f50fd2d8SGuo Renconfig CSKY_PMU_V1 178f50fd2d8SGuo Ren bool "Performance Monitoring Unit Ver.1" 179f50fd2d8SGuo Ren 180f50fd2d8SGuo Renendchoice 181f50fd2d8SGuo Ren 182f50fd2d8SGuo Renchoice 183c32e64e8SGuo Ren prompt "Power Manager Instruction (wait/doze/stop)" 184c32e64e8SGuo Ren default CPU_PM_NONE 185c32e64e8SGuo Ren 186c32e64e8SGuo Renconfig CPU_PM_NONE 187c32e64e8SGuo Ren bool "None" 188c32e64e8SGuo Ren 189c32e64e8SGuo Renconfig CPU_PM_WAIT 190c32e64e8SGuo Ren bool "wait" 191c32e64e8SGuo Ren 192c32e64e8SGuo Renconfig CPU_PM_DOZE 193c32e64e8SGuo Ren bool "doze" 194c32e64e8SGuo Ren 195c32e64e8SGuo Renconfig CPU_PM_STOP 196c32e64e8SGuo Ren bool "stop" 197c32e64e8SGuo Renendchoice 198c32e64e8SGuo Ren 199f525bb2cSGuo Renmenuconfig HAVE_TCM 200f525bb2cSGuo Ren bool "Tightly-Coupled/Sram Memory" 201f525bb2cSGuo Ren select GENERIC_ALLOCATOR 202f525bb2cSGuo Ren help 203f525bb2cSGuo Ren The implementation are not only used by TCM (Tightly-Coupled Meory) 204f525bb2cSGuo Ren but also used by sram on SOC bus. It follow existed linux tcm 205f525bb2cSGuo Ren software interface, so that old tcm application codes could be 206f525bb2cSGuo Ren re-used directly. 207f525bb2cSGuo Ren 208f525bb2cSGuo Renif HAVE_TCM 209f525bb2cSGuo Renconfig ITCM_RAM_BASE 210f525bb2cSGuo Ren hex "ITCM ram base" 211f525bb2cSGuo Ren default 0xffffffff 212f525bb2cSGuo Ren 213f525bb2cSGuo Renconfig ITCM_NR_PAGES 214f525bb2cSGuo Ren int "Page count of ITCM size: NR*4KB" 215f525bb2cSGuo Ren range 1 256 216f525bb2cSGuo Ren default 32 217f525bb2cSGuo Ren 218f525bb2cSGuo Renconfig HAVE_DTCM 219f525bb2cSGuo Ren bool "DTCM Support" 220f525bb2cSGuo Ren 221f525bb2cSGuo Renconfig DTCM_RAM_BASE 222f525bb2cSGuo Ren hex "DTCM ram base" 223f525bb2cSGuo Ren depends on HAVE_DTCM 224f525bb2cSGuo Ren default 0xffffffff 225f525bb2cSGuo Ren 226f525bb2cSGuo Renconfig DTCM_NR_PAGES 227f525bb2cSGuo Ren int "Page count of DTCM size: NR*4KB" 228f525bb2cSGuo Ren depends on HAVE_DTCM 229f525bb2cSGuo Ren range 1 256 230f525bb2cSGuo Ren default 32 231f525bb2cSGuo Renendif 232f525bb2cSGuo Ren 233c32e64e8SGuo Renconfig CPU_HAS_VDSP 234c32e64e8SGuo Ren bool "CPU has VDSP coprocessor" 235c32e64e8SGuo Ren depends on CPU_HAS_FPU && CPU_HAS_FPUV2 236c32e64e8SGuo Ren 237c32e64e8SGuo Renconfig CPU_HAS_FPU 238c32e64e8SGuo Ren bool "CPU has FPU coprocessor" 239c32e64e8SGuo Ren depends on CPU_CK807 || CPU_CK810 || CPU_CK860 240c32e64e8SGuo Ren 241761b4f69SGuo Renconfig CPU_HAS_ICACHE_INS 242761b4f69SGuo Ren bool "CPU has Icache invalidate instructions" 243761b4f69SGuo Ren depends on CPU_HAS_CACHEV2 244761b4f69SGuo Ren 245c32e64e8SGuo Renconfig CPU_HAS_TEE 246c32e64e8SGuo Ren bool "CPU has Trusted Execution Environment" 247c32e64e8SGuo Ren depends on CPU_CK810 248c32e64e8SGuo Ren 249c32e64e8SGuo Renconfig SMP 250c32e64e8SGuo Ren bool "Symmetric Multi-Processing (SMP) support for C-SKY" 251c32e64e8SGuo Ren depends on CPU_CK860 252c32e64e8SGuo Ren default n 253c32e64e8SGuo Ren 254c32e64e8SGuo Renconfig NR_CPUS 255c32e64e8SGuo Ren int "Maximum number of CPUs (2-32)" 256c32e64e8SGuo Ren range 2 32 257c32e64e8SGuo Ren depends on SMP 258c32e64e8SGuo Ren default "2" 259c32e64e8SGuo Ren 260c32e64e8SGuo Renconfig HIGHMEM 261c32e64e8SGuo Ren bool "High Memory Support" 262c32e64e8SGuo Ren depends on !CPU_CK610 263c32e64e8SGuo Ren default y 264c32e64e8SGuo Ren 265c32e64e8SGuo Renconfig FORCE_MAX_ZONEORDER 266c32e64e8SGuo Ren int "Maximum zone order" 267c32e64e8SGuo Ren default "11" 268c32e64e8SGuo Ren 269c32e64e8SGuo Renconfig RAM_BASE 270c32e64e8SGuo Ren hex "DRAM start addr (the same with memory-section in dts)" 271c32e64e8SGuo Ren default 0x0 272c32e64e8SGuo Ren 273859e5f45SGuo Renconfig HOTPLUG_CPU 274859e5f45SGuo Ren bool "Support for hot-pluggable CPUs" 275859e5f45SGuo Ren select GENERIC_IRQ_MIGRATION 276859e5f45SGuo Ren depends on SMP 277859e5f45SGuo Ren help 278859e5f45SGuo Ren Say Y here to allow turning CPUs off and on. CPUs can be 279859e5f45SGuo Ren controlled through /sys/devices/system/cpu/cpu1/hotplug/target. 280859e5f45SGuo Ren 281859e5f45SGuo Ren Say N if you want to disable CPU hotplug. 282c32e64e8SGuo Renendmenu 283c32e64e8SGuo Ren 284a736fa1eSGuo Rensource "arch/csky/Kconfig.platforms" 285a736fa1eSGuo Ren 286c32e64e8SGuo Rensource "kernel/Kconfig.hz" 287