# SPDX-License-Identifier: GPL-2.0-only 
 | 
config CSKY 
 | 
    def_bool y 
 | 
    select ARCH_32BIT_OFF_T 
 | 
    select ARCH_HAS_DMA_PREP_COHERENT 
 | 
    select ARCH_HAS_GCOV_PROFILE_ALL 
 | 
    select ARCH_HAS_SYNC_DMA_FOR_CPU 
 | 
    select ARCH_HAS_SYNC_DMA_FOR_DEVICE 
 | 
    select ARCH_USE_BUILTIN_BSWAP 
 | 
    select ARCH_USE_QUEUED_RWLOCKS if NR_CPUS>2 
 | 
    select ARCH_WANT_FRAME_POINTERS if !CPU_CK610 
 | 
    select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT 
 | 
    select COMMON_CLK 
 | 
    select CLKSRC_MMIO 
 | 
    select CSKY_MPINTC if CPU_CK860 
 | 
    select CSKY_MP_TIMER if CPU_CK860 
 | 
    select CSKY_APB_INTC 
 | 
    select DMA_DIRECT_REMAP 
 | 
    select IRQ_DOMAIN 
 | 
    select HANDLE_DOMAIN_IRQ 
 | 
    select DW_APB_TIMER_OF 
 | 
    select GENERIC_IOREMAP 
 | 
    select GENERIC_LIB_ASHLDI3 
 | 
    select GENERIC_LIB_ASHRDI3 
 | 
    select GENERIC_LIB_LSHRDI3 
 | 
    select GENERIC_LIB_MULDI3 
 | 
    select GENERIC_LIB_CMPDI2 
 | 
    select GENERIC_LIB_UCMPDI2 
 | 
    select GENERIC_ALLOCATOR 
 | 
    select GENERIC_ATOMIC64 
 | 
    select GENERIC_CLOCKEVENTS 
 | 
    select GENERIC_CPU_DEVICES 
 | 
    select GENERIC_IRQ_CHIP 
 | 
    select GENERIC_IRQ_PROBE 
 | 
    select GENERIC_IRQ_SHOW 
 | 
    select GENERIC_IRQ_MULTI_HANDLER 
 | 
    select GENERIC_SCHED_CLOCK 
 | 
    select GENERIC_SMP_IDLE_THREAD 
 | 
    select GX6605S_TIMER if CPU_CK610 
 | 
    select HAVE_ARCH_TRACEHOOK 
 | 
    select HAVE_ARCH_AUDITSYSCALL 
 | 
    select HAVE_ARCH_MMAP_RND_BITS 
 | 
    select HAVE_ARCH_SECCOMP_FILTER 
 | 
    select HAVE_CONTEXT_TRACKING 
 | 
    select HAVE_VIRT_CPU_ACCOUNTING_GEN 
 | 
    select HAVE_DEBUG_BUGVERBOSE 
 | 
    select HAVE_DYNAMIC_FTRACE 
 | 
    select HAVE_DYNAMIC_FTRACE_WITH_REGS 
 | 
    select HAVE_FUNCTION_TRACER 
 | 
    select HAVE_FUNCTION_GRAPH_TRACER 
 | 
    select HAVE_FUNCTION_ERROR_INJECTION 
 | 
    select HAVE_FTRACE_MCOUNT_RECORD 
 | 
    select HAVE_KERNEL_GZIP 
 | 
    select HAVE_KERNEL_LZO 
 | 
    select HAVE_KERNEL_LZMA 
 | 
    select HAVE_KPROBES if !CPU_CK610 
 | 
    select HAVE_KPROBES_ON_FTRACE if !CPU_CK610 
 | 
    select HAVE_KRETPROBES if !CPU_CK610 
 | 
    select HAVE_PERF_EVENTS 
 | 
    select HAVE_PERF_REGS 
 | 
    select HAVE_PERF_USER_STACK_DUMP 
 | 
    select HAVE_DMA_CONTIGUOUS 
 | 
    select HAVE_REGS_AND_STACK_ACCESS_API 
 | 
    select HAVE_RSEQ 
 | 
    select HAVE_STACKPROTECTOR 
 | 
    select HAVE_SYSCALL_TRACEPOINTS 
 | 
    select MAY_HAVE_SPARSE_IRQ 
 | 
    select MODULES_USE_ELF_RELA if MODULES 
 | 
    select OF 
 | 
    select OF_EARLY_FLATTREE 
 | 
    select PERF_USE_VMALLOC if CPU_CK610 
 | 
    select RTC_LIB 
 | 
    select TIMER_OF 
 | 
    select USB_ARCH_HAS_EHCI 
 | 
    select USB_ARCH_HAS_OHCI 
 | 
    select GENERIC_PCI_IOMAP 
 | 
    select HAVE_PCI 
 | 
    select PCI_DOMAINS_GENERIC if PCI 
 | 
    select PCI_SYSCALL if PCI 
 | 
    select PCI_MSI if PCI 
 | 
    select SET_FS 
 | 
  
 | 
config LOCKDEP_SUPPORT 
 | 
    def_bool y 
 | 
  
 | 
config ARCH_SUPPORTS_UPROBES 
 | 
    def_bool y if !CPU_CK610 
 | 
  
 | 
config CPU_HAS_CACHEV2 
 | 
    bool 
 | 
  
 | 
config CPU_HAS_FPUV2 
 | 
    bool 
 | 
  
 | 
config CPU_HAS_HILO 
 | 
    bool 
 | 
  
 | 
config CPU_HAS_TLBI 
 | 
    bool 
 | 
  
 | 
config CPU_HAS_LDSTEX 
 | 
    bool 
 | 
    help 
 | 
      For SMP, CPU needs "ldex&stex" instructions for atomic operations. 
 | 
  
 | 
config CPU_NEED_TLBSYNC 
 | 
    bool 
 | 
  
 | 
config CPU_NEED_SOFTALIGN 
 | 
    bool 
 | 
  
 | 
config CPU_NO_USER_BKPT 
 | 
    bool 
 | 
    help 
 | 
      For abiv2 we couldn't use "trap 1" as user space bkpt in gdbserver, because 
 | 
      abiv2 is 16/32bit instruction set and "trap 1" is 32bit. 
 | 
      So we need a 16bit instruction as user space bkpt, and it will cause an illegal 
 | 
      instruction exception. 
 | 
      In kernel we parse the *regs->pc to determine whether to send SIGTRAP or not. 
 | 
  
 | 
config GENERIC_CALIBRATE_DELAY 
 | 
    def_bool y 
 | 
  
 | 
config GENERIC_CSUM 
 | 
    def_bool y 
 | 
  
 | 
config GENERIC_HWEIGHT 
 | 
    def_bool y 
 | 
  
 | 
config MMU 
 | 
    def_bool y 
 | 
  
 | 
config STACKTRACE_SUPPORT 
 | 
    def_bool y 
 | 
  
 | 
config TIME_LOW_RES 
 | 
    def_bool y 
 | 
  
 | 
config TRACE_IRQFLAGS_SUPPORT 
 | 
    def_bool y 
 | 
  
 | 
config CPU_TLB_SIZE 
 | 
    int 
 | 
    default "128"    if (CPU_CK610 || CPU_CK807 || CPU_CK810) 
 | 
    default "1024"    if (CPU_CK860) 
 | 
  
 | 
config CPU_ASID_BITS 
 | 
    int 
 | 
    default "8"    if (CPU_CK610 || CPU_CK807 || CPU_CK810) 
 | 
    default "12"    if (CPU_CK860) 
 | 
  
 | 
config L1_CACHE_SHIFT 
 | 
    int 
 | 
    default "4"    if (CPU_CK610) 
 | 
    default "5"    if (CPU_CK807 || CPU_CK810) 
 | 
    default "6"    if (CPU_CK860) 
 | 
  
 | 
config ARCH_MMAP_RND_BITS_MIN 
 | 
    default 8 
 | 
  
 | 
# max bits determined by the following formula: 
 | 
#  VA_BITS - PAGE_SHIFT - 3 
 | 
config ARCH_MMAP_RND_BITS_MAX 
 | 
    default 17 
 | 
  
 | 
menu "Processor type and features" 
 | 
  
 | 
choice 
 | 
    prompt "CPU MODEL" 
 | 
    default CPU_CK807 
 | 
  
 | 
config CPU_CK610 
 | 
    bool "CSKY CPU ck610" 
 | 
    select CPU_NEED_TLBSYNC 
 | 
    select CPU_NEED_SOFTALIGN 
 | 
    select CPU_NO_USER_BKPT 
 | 
  
 | 
config CPU_CK810 
 | 
    bool "CSKY CPU ck810" 
 | 
    select CPU_HAS_HILO 
 | 
    select CPU_NEED_TLBSYNC 
 | 
  
 | 
config CPU_CK807 
 | 
    bool "CSKY CPU ck807" 
 | 
    select CPU_HAS_HILO 
 | 
  
 | 
config CPU_CK860 
 | 
    bool "CSKY CPU ck860" 
 | 
    select CPU_HAS_TLBI 
 | 
    select CPU_HAS_CACHEV2 
 | 
    select CPU_HAS_LDSTEX 
 | 
    select CPU_HAS_FPUV2 
 | 
endchoice 
 | 
  
 | 
choice 
 | 
    prompt "C-SKY PMU type" 
 | 
    depends on PERF_EVENTS 
 | 
    depends on CPU_CK807 || CPU_CK810 || CPU_CK860 
 | 
  
 | 
config CPU_PMU_NONE 
 | 
    bool "None" 
 | 
  
 | 
config CSKY_PMU_V1 
 | 
    bool "Performance Monitoring Unit Ver.1" 
 | 
  
 | 
endchoice 
 | 
  
 | 
choice 
 | 
    prompt "Power Manager Instruction (wait/doze/stop)" 
 | 
    default CPU_PM_NONE 
 | 
  
 | 
config CPU_PM_NONE 
 | 
    bool "None" 
 | 
  
 | 
config CPU_PM_WAIT 
 | 
    bool "wait" 
 | 
  
 | 
config CPU_PM_DOZE 
 | 
    bool "doze" 
 | 
  
 | 
config CPU_PM_STOP 
 | 
    bool "stop" 
 | 
endchoice 
 | 
  
 | 
menuconfig HAVE_TCM 
 | 
    bool "Tightly-Coupled/Sram Memory" 
 | 
    select GENERIC_ALLOCATOR 
 | 
    help 
 | 
      The implementation are not only used by TCM (Tightly-Coupled Meory) 
 | 
      but also used by sram on SOC bus. It follow existed linux tcm 
 | 
      software interface, so that old tcm application codes could be 
 | 
      re-used directly. 
 | 
  
 | 
if HAVE_TCM 
 | 
config ITCM_RAM_BASE 
 | 
    hex "ITCM ram base" 
 | 
    default 0xffffffff 
 | 
  
 | 
config ITCM_NR_PAGES 
 | 
    int "Page count of ITCM size: NR*4KB" 
 | 
    range 1 256 
 | 
    default 32 
 | 
  
 | 
config HAVE_DTCM 
 | 
    bool "DTCM Support" 
 | 
  
 | 
config DTCM_RAM_BASE 
 | 
    hex "DTCM ram base" 
 | 
    depends on HAVE_DTCM 
 | 
    default 0xffffffff 
 | 
  
 | 
config DTCM_NR_PAGES 
 | 
    int "Page count of DTCM size: NR*4KB" 
 | 
    depends on HAVE_DTCM 
 | 
    range 1 256 
 | 
    default 32 
 | 
endif 
 | 
  
 | 
config CPU_HAS_VDSP 
 | 
    bool "CPU has VDSP coprocessor" 
 | 
    depends on CPU_HAS_FPU && CPU_HAS_FPUV2 
 | 
  
 | 
config CPU_HAS_FPU 
 | 
    bool "CPU has FPU coprocessor" 
 | 
    depends on CPU_CK807 || CPU_CK810 || CPU_CK860 
 | 
  
 | 
config CPU_HAS_ICACHE_INS 
 | 
    bool "CPU has Icache invalidate instructions" 
 | 
    depends on CPU_HAS_CACHEV2 
 | 
  
 | 
config CPU_HAS_TEE 
 | 
    bool "CPU has Trusted Execution Environment" 
 | 
    depends on CPU_CK810 
 | 
  
 | 
config SMP 
 | 
    bool "Symmetric Multi-Processing (SMP) support for C-SKY" 
 | 
    depends on CPU_CK860 
 | 
    default n 
 | 
  
 | 
config NR_CPUS 
 | 
    int "Maximum number of CPUs (2-32)" 
 | 
    range 2 32 
 | 
    depends on SMP 
 | 
    default "4" 
 | 
  
 | 
config HIGHMEM 
 | 
    bool "High Memory Support" 
 | 
    depends on !CPU_CK610 
 | 
    default y 
 | 
  
 | 
config FORCE_MAX_ZONEORDER 
 | 
    int "Maximum zone order" 
 | 
    default "11" 
 | 
  
 | 
config DRAM_BASE 
 | 
    hex "DRAM start addr (the same with memory-section in dts)" 
 | 
    default 0x0 
 | 
  
 | 
config HOTPLUG_CPU 
 | 
    bool "Support for hot-pluggable CPUs" 
 | 
    select GENERIC_IRQ_MIGRATION 
 | 
    depends on SMP 
 | 
    help 
 | 
      Say Y here to allow turning CPUs off and on. CPUs can be 
 | 
      controlled through /sys/devices/system/cpu/cpu1/hotplug/target. 
 | 
  
 | 
      Say N if you want to disable CPU hotplug. 
 | 
endmenu 
 | 
  
 | 
source "arch/csky/Kconfig.platforms" 
 | 
  
 | 
source "kernel/Kconfig.hz" 
 |