MIPS: defconfigs: add MTD_SPI_NOR (new dependency for M25P80)
[firefly-linux-kernel-4.4.55.git] / arch / mips / Kconfig
index 95fa1f1d5c8b4a70d3ee991e7a5bb32b5db22740..125edd4221b277c4fcc39b000185cc26722343de 100644 (file)
@@ -10,6 +10,7 @@ config MIPS
        select HAVE_PERF_EVENTS
        select PERF_USE_VMALLOC
        select HAVE_ARCH_KGDB
+       select HAVE_ARCH_SECCOMP_FILTER
        select HAVE_ARCH_TRACEHOOK
        select ARCH_HAVE_CUSTOM_GPIO_H
        select HAVE_FUNCTION_TRACER
@@ -62,13 +63,12 @@ config MIPS_ALCHEMY
        select CEVT_R4K
        select CSRC_R4K
        select IRQ_CPU
+       select DMA_MAYBE_COHERENT       # Au1000,1500,1100 aren't, rest is
        select SYS_HAS_CPU_MIPS32_R1
        select SYS_SUPPORTS_32BIT_KERNEL
        select SYS_SUPPORTS_APM_EMULATION
        select ARCH_REQUIRE_GPIOLIB
        select SYS_SUPPORTS_ZBOOT
-       select USB_ARCH_HAS_OHCI
-       select USB_ARCH_HAS_EHCI
 
 config AR7
        bool "Texas Instruments AR7"
@@ -83,6 +83,7 @@ config AR7
        select SYS_HAS_EARLY_PRINTK
        select SYS_SUPPORTS_32BIT_KERNEL
        select SYS_SUPPORTS_LITTLE_ENDIAN
+       select SYS_SUPPORTS_MIPS16
        select SYS_SUPPORTS_ZBOOT_UART16550
        select ARCH_REQUIRE_GPIOLIB
        select VLYNQ
@@ -106,6 +107,7 @@ config ATH79
        select SYS_HAS_EARLY_PRINTK
        select SYS_SUPPORTS_32BIT_KERNEL
        select SYS_SUPPORTS_BIG_ENDIAN
+       select SYS_SUPPORTS_MIPS16
        help
          Support for the Atheros AR71XX/AR724X/AR913X SoCs.
 
@@ -122,8 +124,9 @@ config BCM47XX
        select NO_EXCEPT_FILL
        select SYS_SUPPORTS_32BIT_KERNEL
        select SYS_SUPPORTS_LITTLE_ENDIAN
+       select SYS_SUPPORTS_MIPS16
        select SYS_HAS_EARLY_PRINTK
-       select EARLY_PRINTK_8250 if EARLY_PRINTK
+       select USE_GENERIC_EARLY_PRINTK_8250
        help
         Support for BCM47XX based boards
 
@@ -150,7 +153,6 @@ config MIPS_COBALT
        select CSRC_R4K
        select CEVT_GT641XX
        select DMA_NONCOHERENT
-       select EARLY_PRINTK_8250 if EARLY_PRINTK
        select HW_HAS_PCI
        select I8253
        select I8259
@@ -163,6 +165,7 @@ config MIPS_COBALT
        select SYS_SUPPORTS_32BIT_KERNEL
        select SYS_SUPPORTS_64BIT_KERNEL
        select SYS_SUPPORTS_LITTLE_ENDIAN
+       select USE_GENERIC_EARLY_PRINTK_8250
 
 config MACH_DECSTATION
        bool "DECstations"
@@ -175,7 +178,7 @@ config MACH_DECSTATION
        select CPU_R4000_WORKAROUNDS if 64BIT
        select CPU_R4400_WORKAROUNDS if 64BIT
        select DMA_NONCOHERENT
-       select NO_IOPORT
+       select NO_IOPORT_MAP
        select IRQ_CPU
        select SYS_HAS_CPU_R3000
        select SYS_HAS_CPU_R4X00
@@ -235,7 +238,6 @@ config MACH_JZ4740
        select IRQ_CPU
        select ARCH_REQUIRE_GPIOLIB
        select SYS_HAS_EARLY_PRINTK
-       select HAVE_PWM
        select HAVE_CLK
        select GENERIC_IRQ_CHIP
 
@@ -249,6 +251,7 @@ config LANTIQ
        select SYS_HAS_CPU_MIPS32_R2
        select SYS_SUPPORTS_BIG_ENDIAN
        select SYS_SUPPORTS_32BIT_KERNEL
+       select SYS_SUPPORTS_MIPS16
        select SYS_SUPPORTS_MULTITHREADING
        select SYS_HAS_EARLY_PRINTK
        select ARCH_REQUIRE_GPIOLIB
@@ -320,6 +323,7 @@ config MIPS_MALTA
        select SWAP_IO_SPACE
        select SYS_HAS_CPU_MIPS32_R1
        select SYS_HAS_CPU_MIPS32_R2
+       select SYS_HAS_CPU_MIPS32_R3_5
        select SYS_HAS_CPU_MIPS64_R1
        select SYS_HAS_CPU_MIPS64_R2
        select SYS_HAS_CPU_NEVADA
@@ -329,6 +333,8 @@ config MIPS_MALTA
        select SYS_SUPPORTS_BIG_ENDIAN
        select SYS_SUPPORTS_LITTLE_ENDIAN
        select SYS_SUPPORTS_MIPS_CMP
+       select SYS_SUPPORTS_MIPS_CPS
+       select SYS_SUPPORTS_MIPS16
        select SYS_SUPPORTS_MULTITHREADING
        select SYS_SUPPORTS_SMARTMIPS
        select SYS_SUPPORTS_ZBOOT
@@ -360,7 +366,7 @@ config MIPS_SEAD3
        select SYS_SUPPORTS_LITTLE_ENDIAN
        select SYS_SUPPORTS_SMARTMIPS
        select SYS_SUPPORTS_MICROMIPS
-       select USB_ARCH_HAS_EHCI
+       select SYS_SUPPORTS_MIPS16
        select USB_EHCI_BIG_ENDIAN_DESC
        select USB_EHCI_BIG_ENDIAN_MMIO
        select USE_OF
@@ -380,6 +386,7 @@ config MACH_VR41XX
        select CEVT_R4K
        select CSRC_R4K
        select SYS_HAS_CPU_VR41XX
+       select SYS_SUPPORTS_MIPS16
        select ARCH_REQUIRE_GPIOLIB
 
 config NXP_STB220
@@ -407,6 +414,7 @@ config PMC_MSP
        select SYS_HAS_CPU_MIPS32_R2
        select SYS_SUPPORTS_32BIT_KERNEL
        select SYS_SUPPORTS_BIG_ENDIAN
+       select SYS_SUPPORTS_MIPS16
        select IRQ_CPU
        select SERIAL_8250
        select SERIAL_8250_CONSOLE
@@ -430,6 +438,7 @@ config RALINK
        select SYS_HAS_CPU_MIPS32_R2
        select SYS_SUPPORTS_32BIT_KERNEL
        select SYS_SUPPORTS_LITTLE_ENDIAN
+       select SYS_SUPPORTS_MIPS16
        select SYS_HAS_EARLY_PRINTK
        select HAVE_MACH_CLKDEV
        select CLKDEV_LOOKUP
@@ -674,6 +683,7 @@ config SNI_RM
        select SYS_SUPPORTS_BIG_ENDIAN
        select SYS_SUPPORTS_HIGHMEM
        select SYS_SUPPORTS_LITTLE_ENDIAN
+       select USE_GENERIC_EARLY_PRINTK_8250
        help
          The SNI RM200/300/400 are MIPS-based machines manufactured by
          Siemens Nixdorf Informationssysteme (SNI), parent company of Pyramid
@@ -718,8 +728,6 @@ config CAVIUM_OCTEON_SOC
        select SWAP_IO_SPACE
        select HW_HAS_PCI
        select ZONE_DMA32
-       select USB_ARCH_HAS_OHCI
-       select USB_ARCH_HAS_EHCI
        select HOLES_IN_ZONE
        select ARCH_REQUIRE_GPIOLIB
        help
@@ -756,8 +764,6 @@ config NLM_XLR_BOARD
        select ZONE_DMA32 if 64BIT
        select SYNC_R4K
        select SYS_HAS_EARLY_PRINTK
-       select USB_ARCH_HAS_OHCI if USB_SUPPORT
-       select USB_ARCH_HAS_EHCI if USB_SUPPORT
        select SYS_SUPPORTS_ZBOOT
        select SYS_SUPPORTS_ZBOOT_UART16550
        help
@@ -782,7 +788,6 @@ config NLM_XLP_BOARD
        select CEVT_R4K
        select CSRC_R4K
        select IRQ_CPU
-       select ARCH_SUPPORTS_MSI
        select ZONE_DMA32 if 64BIT
        select SYNC_R4K
        select SYS_HAS_EARLY_PRINTK
@@ -868,6 +873,7 @@ config CEVT_R4K
        bool
 
 config CEVT_GIC
+       select MIPS_CM
        bool
 
 config CEVT_SB1250
@@ -886,6 +892,7 @@ config CSRC_R4K
        bool
 
 config CSRC_GIC
+       select MIPS_CM
        bool
 
 config CSRC_SB1250
@@ -949,7 +956,7 @@ config SYNC_R4K
 config MIPS_MACHINE
        def_bool n
 
-config NO_IOPORT
+config NO_IOPORT_MAP
        def_bool n
 
 config GENERIC_ISA_DMA
@@ -1030,6 +1037,7 @@ config IRQ_GT641XX
        bool
 
 config IRQ_GIC
+       select MIPS_CM
        bool
 
 config PCI_GT64XXX_PCI0
@@ -1060,6 +1068,7 @@ config SOC_PNX833X
        select SYS_SUPPORTS_32BIT_KERNEL
        select SYS_SUPPORTS_LITTLE_ENDIAN
        select SYS_SUPPORTS_BIG_ENDIAN
+       select SYS_SUPPORTS_MIPS16
        select CPU_MIPSR2_IRQ_VI
 
 config SOC_PNX8335
@@ -1148,6 +1157,18 @@ choice
        prompt "CPU type"
        default CPU_R4X00
 
+config CPU_LOONGSON3
+       bool "Loongson 3 CPU"
+       depends on SYS_HAS_CPU_LOONGSON3
+       select CPU_SUPPORTS_64BIT_KERNEL
+       select CPU_SUPPORTS_HIGHMEM
+       select CPU_SUPPORTS_HUGEPAGES
+       select WEAK_ORDERING
+       select WEAK_REORDERING_BEYOND_LLSC
+       help
+               The Loongson 3 processor implements the MIPS64R2 instruction
+               set with many extensions.
+
 config CPU_LOONGSON2E
        bool "Loongson 2E"
        depends on SYS_HAS_CPU_LOONGSON2E
@@ -1203,6 +1224,7 @@ config CPU_MIPS32_R2
        select CPU_HAS_PREFETCH
        select CPU_SUPPORTS_32BIT_KERNEL
        select CPU_SUPPORTS_HIGHMEM
+       select CPU_SUPPORTS_MSA
        select HAVE_KVM
        help
          Choose this option to build a kernel for release 2 or later of the
@@ -1238,6 +1260,7 @@ config CPU_MIPS64_R2
        select CPU_SUPPORTS_64BIT_KERNEL
        select CPU_SUPPORTS_HIGHMEM
        select CPU_SUPPORTS_HUGEPAGES
+       select CPU_SUPPORTS_MSA
        help
          Choose this option to build a kernel for release 2 or later of the
          MIPS64 architecture.  Many modern embedded systems with a 64-bit
@@ -1396,7 +1419,6 @@ config CPU_CAVIUM_OCTEON
        select LIBFDT
        select USE_OF
        select USB_EHCI_BIG_ENDIAN_MMIO
-       select SYS_HAS_DMA_OPS
        select MIPS_L1_CACHE_SHIFT_7
        help
          The Cavium Octeon processor is a highly integrated chip containing
@@ -1448,6 +1470,26 @@ config CPU_XLP
          Netlogic Microsystems XLP processors.
 endchoice
 
+config CPU_MIPS32_3_5_FEATURES
+       bool "MIPS32 Release 3.5 Features"
+       depends on SYS_HAS_CPU_MIPS32_R3_5
+       depends on CPU_MIPS32_R2
+       help
+         Choose this option to build a kernel for release 2 or later of the
+         MIPS32 architecture including features from the 3.5 release such as
+         support for Enhanced Virtual Addressing (EVA).
+
+config CPU_MIPS32_3_5_EVA
+       bool "Enhanced Virtual Addressing (EVA)"
+       depends on CPU_MIPS32_3_5_FEATURES
+       select EVA
+       default y
+       help
+         Choose this option if you want to enable the Enhanced Virtual
+         Addressing (EVA) on your MIPS32 core (such as proAptiv).
+         One of its primary benefits is an increase in the maximum size
+         of lowmem (up to 3GB). If unsure, say 'N' here.
+
 if CPU_LOONGSON2F
 config CPU_NOP_WORKAROUNDS
        bool
@@ -1523,6 +1565,10 @@ config CPU_BMIPS5000
        select SYS_SUPPORTS_SMP
        select SYS_SUPPORTS_HOTPLUG_CPU
 
+config SYS_HAS_CPU_LOONGSON3
+       bool
+       select CPU_SUPPORTS_CPUFREQ
+
 config SYS_HAS_CPU_LOONGSON2E
        bool
 
@@ -1541,6 +1587,9 @@ config SYS_HAS_CPU_MIPS32_R1
 config SYS_HAS_CPU_MIPS32_R2
        bool
 
+config SYS_HAS_CPU_MIPS32_R3_5
+       bool
+
 config SYS_HAS_CPU_MIPS64_R1
        bool
 
@@ -1657,6 +1706,9 @@ config CPU_MIPSR2
        bool
        default y if CPU_MIPS32_R2 || CPU_MIPS64_R2 || CPU_CAVIUM_OCTEON
 
+config EVA
+       bool
+
 config SYS_SUPPORTS_32BIT_KERNEL
        bool
 config SYS_SUPPORTS_64BIT_KERNEL
@@ -1729,7 +1781,7 @@ choice
 
 config PAGE_SIZE_4KB
        bool "4kB"
-       depends on !CPU_LOONGSON2
+       depends on !CPU_LOONGSON2 && !CPU_LOONGSON3
        help
         This option select the standard 4kB Linux page size.  On some
         R3000-family processors this is the only available page size.  Using
@@ -1800,7 +1852,7 @@ config FORCE_MAX_ZONEORDER
 
 config CEVT_GIC
        bool "Use GIC global counter for clock events"
-       depends on IRQ_GIC && !(MIPS_SEAD3 || MIPS_MT_SMTC)
+       depends on IRQ_GIC && !MIPS_SEAD3
        help
          Use the GIC global counter for the clock events. The R4K clock
          event driver is always present, so if the platform ends up not
@@ -1853,23 +1905,13 @@ config CPU_R4K_CACHE_TLB
        bool
        default y if !(CPU_R3000 || CPU_R8000 || CPU_SB1 || CPU_TX39XX || CPU_CAVIUM_OCTEON)
 
-choice
-       prompt "MIPS MT options"
-
-config MIPS_MT_DISABLED
-       bool "Disable multithreading support"
-       help
-         Use this option if your platform does not support the MT ASE
-         which is hardware multithreading support. On systems without
-         an MT-enabled processor, this will be the only option that is
-         available in this menu.
-
 config MIPS_MT_SMP
-       bool "Use 1 TC on each available VPE for SMP"
+       bool "MIPS MT SMP support (1 TC on each available VPE)"
        depends on SYS_SUPPORTS_MULTITHREADING
        select CPU_MIPSR2_IRQ_VI
        select CPU_MIPSR2_IRQ_EI
        select SYNC_R4K
+       select MIPS_GIC_IPI
        select MIPS_MT
        select SMP
        select SMP_UP
@@ -1883,25 +1925,6 @@ config MIPS_MT_SMP
          Intel Hyperthreading feature. For further information go to
          <http://www.imgtec.com/mips/mips-multithreading.asp>.
 
-config MIPS_MT_SMTC
-       bool "Use all TCs on all VPEs for SMP (DEPRECATED)"
-       depends on CPU_MIPS32_R2
-       depends on SYS_SUPPORTS_MULTITHREADING
-       select CPU_MIPSR2_IRQ_VI
-       select CPU_MIPSR2_IRQ_EI
-       select MIPS_MT
-       select SMP
-       select SMP_UP
-       select SYS_SUPPORTS_SMP
-       select NR_CPUS_DEFAULT_8
-       help
-         This is a kernel model which is known as SMTC. This is
-         supported on cores with the MT ASE and presents all TCs
-         available on all VPEs to support SMP. For further
-         information see <http://www.linux-mips.org/wiki/34K#SMTC>.
-
-endchoice
-
 config MIPS_MT
        bool
 
@@ -1923,7 +1946,7 @@ config SYS_SUPPORTS_MULTITHREADING
 config MIPS_MT_FPAFF
        bool "Dynamic FPU affinity for FP-intensive threads"
        default y
-       depends on MIPS_MT_SMP || MIPS_MT_SMTC
+       depends on MIPS_MT_SMP
 
 config MIPS_VPE_LOADER
        bool "VPE loader support."
@@ -1945,29 +1968,6 @@ config MIPS_VPE_LOADER_MT
        default "y"
        depends on MIPS_VPE_LOADER && !MIPS_CMP
 
-config MIPS_MT_SMTC_IM_BACKSTOP
-       bool "Use per-TC register bits as backstop for inhibited IM bits"
-       depends on MIPS_MT_SMTC
-       default n
-       help
-         To support multiple TC microthreads acting as "CPUs" within
-         a VPE, VPE-wide interrupt mask bits must be specially manipulated
-         during interrupt handling. To support legacy drivers and interrupt
-         controller management code, SMTC has a "backstop" to track and
-         if necessary restore the interrupt mask. This has some performance
-         impact on interrupt service overhead.
-
-config MIPS_MT_SMTC_IRQAFF
-       bool "Support IRQ affinity API"
-       depends on MIPS_MT_SMTC
-       default n
-       help
-         Enables SMP IRQ affinity API (/proc/irq/*/smp_affinity, etc.)
-         for SMTC Linux kernel. Requires platform support, of which
-         an example can be found in the MIPS kernel i8259 and Malta
-         platform code.  Adds some overhead to interrupt dispatch, and
-         should be used only if you know what you are doing.
-
 config MIPS_VPE_LOADER_TOM
        bool "Load VPE program into memory hidden from linux"
        depends on MIPS_VPE_LOADER
@@ -1994,13 +1994,45 @@ config MIPS_VPE_APSP_API_MT
        depends on MIPS_VPE_APSP_API && !MIPS_CMP
 
 config MIPS_CMP
-       bool "MIPS CMP support"
-       depends on SYS_SUPPORTS_MIPS_CMP && MIPS_MT_SMP
+       bool "MIPS CMP framework support (DEPRECATED)"
+       depends on SYS_SUPPORTS_MIPS_CMP
+       select MIPS_GIC_IPI
        select SYNC_R4K
        select WEAK_ORDERING
        default n
        help
-         Enable Coherency Manager processor (CMP) support.
+         Select this if you are using a bootloader which implements the "CMP
+         framework" protocol (ie. YAMON) and want your kernel to make use of
+         its ability to start secondary CPUs.
+
+         Unless you have a specific need, you should use CONFIG_MIPS_CPS
+         instead of this.
+
+config MIPS_CPS
+       bool "MIPS Coherent Processing System support"
+       depends on SYS_SUPPORTS_MIPS_CPS
+       select MIPS_CM
+       select MIPS_CPC
+       select MIPS_GIC_IPI
+       select SMP
+       select SYNC_R4K if (CEVT_R4K || CSRC_R4K)
+       select SYS_SUPPORTS_SMP
+       select WEAK_ORDERING
+       help
+         Select this if you wish to run an SMP kernel across multiple cores
+         within a MIPS Coherent Processing System. When this option is
+         enabled the kernel will probe for other cores and boot them with
+         no external assistance. It is safe to enable this when hardware
+         support is unavailable.
+
+config MIPS_GIC_IPI
+       bool
+
+config MIPS_CM
+       bool
+
+config MIPS_CPC
+       bool
 
 config SB1_PASS_1_WORKAROUNDS
        bool
@@ -2043,6 +2075,21 @@ config CPU_MICROMIPS
          When this option is enabled the kernel will be built using the
          microMIPS ISA
 
+config CPU_HAS_MSA
+       bool "Support for the MIPS SIMD Architecture"
+       depends on CPU_SUPPORTS_MSA
+       default y
+       help
+         MIPS SIMD Architecture (MSA) introduces 128 bit wide vector registers
+         and a set of SIMD instructions to operate on them. When this option
+         is enabled the kernel will support allocating & switching MSA
+         vector register contexts. If you know that your kernel will only be
+         running on CPUs which do not support MSA or that your userland will
+         not be making use of it then you may wish to say N here to reduce
+         the size & complexity of your kernel.
+
+         If unsure, say Y.
+
 config CPU_HAS_WB
        bool
 
@@ -2094,7 +2141,7 @@ config CPU_R4400_WORKAROUNDS
 #
 config HIGHMEM
        bool "High Memory Support"
-       depends on 32BIT && CPU_SUPPORTS_HIGHMEM && SYS_SUPPORTS_HIGHMEM
+       depends on 32BIT && CPU_SUPPORTS_HIGHMEM && SYS_SUPPORTS_HIGHMEM && !CPU_MIPS32_3_5_EVA
 
 config CPU_SUPPORTS_HIGHMEM
        bool
@@ -2108,6 +2155,16 @@ config SYS_SUPPORTS_SMARTMIPS
 config SYS_SUPPORTS_MICROMIPS
        bool
 
+config SYS_SUPPORTS_MIPS16
+       bool
+       help
+         This option must be set if a kernel might be executed on a MIPS16-
+         enabled CPU even if MIPS16 is not actually being used.  In other
+         words, it makes the kernel MIPS16-tolerant.
+
+config CPU_SUPPORTS_MSA
+       bool
+
 config ARCH_FLATMEM_ENABLE
        def_bool y
        depends on !NUMA && !CPU_LOONGSON2
@@ -2145,7 +2202,7 @@ config NODES_SHIFT
 
 config HW_PERF_EVENTS
        bool "Enable hardware performance counter support for perf events"
-       depends on PERF_EVENTS && !MIPS_MT_SMTC && OPROFILE=n && (CPU_MIPS32 || CPU_MIPS64 || CPU_R10000 || CPU_SB1 || CPU_CAVIUM_OCTEON || CPU_XLP)
+       depends on PERF_EVENTS && OPROFILE=n && (CPU_MIPS32 || CPU_MIPS64 || CPU_R10000 || CPU_SB1 || CPU_CAVIUM_OCTEON || CPU_XLP)
        default y
        help
          Enable hardware performance counter support for perf events. If
@@ -2181,6 +2238,9 @@ config SMP_UP
 config SYS_SUPPORTS_MIPS_CMP
        bool
 
+config SYS_SUPPORTS_MIPS_CPS
+       bool
+
 config SYS_SUPPORTS_SMP
        bool
 
@@ -2413,6 +2473,17 @@ config PCI
          your box. Other bus systems are ISA, EISA, or VESA. If you have PCI,
          say Y, otherwise N.
 
+config HT_PCI
+       bool "Support for HT-linked PCI"
+       default y
+       depends on CPU_LOONGSON3
+       select PCI
+       select PCI_DOMAINS
+       help
+         Loongson family machines use Hyper-Transport bus for inter-core
+         connection and device connection. The PCI bus is a subordinate
+         linked at HT. Choose Y for Loongson-3 based machines.
+
 config PCI_DOMAINS
        bool