# arch/arm/plat-mt53xx/Kconfig
#
# by lh.hsiao
#
# Licensed under GPLv2



# boot configurations
choice
	prompt "ARCH/MACH select"
default MACH_MT5398

config MACH_MT5368
	bool "MediaTek MT5368(Cortex-A9 single-core)"
	select CPU_V7
	select ARM_GIC
        select MIGHT_HAVE_CACHE_L2X0
	select ARCH_MT5368
	select CACHE_L2X0
	select CACHE_PL310
	help
	  This enables support for MediaTek MT5368.

config MACH_MT5396
	bool "MediaTek MT5396(Cortex-A9 dual-core)"
	select CPU_V7
	select ARM_GIC
	select HAVE_SMP
        select MIGHT_HAVE_CACHE_L2X0
	select ARCH_MT5396
	select NEED_PREPARE_CPUS_FOR_ONE
	select CACHE_L2X0
	select CACHE_PL310
	help
	  This enables support for MediaTek MT5396.

config MACH_MT5369
	bool "MediaTek MT5369(Cortex-A9 single-core)"
	select CPU_V7
	select ARM_GIC
        select MIGHT_HAVE_CACHE_L2X0
	select ARCH_MT5396	       	# Share code with MT5396
	select MT53XX_UP_CHECK
	select CACHE_L2X0
	select CACHE_PL310
	help
	  This enables support for MediaTek MT5369.

config MACH_MT5389
	bool "MediaTek MT5389(Arm11)"
	select CPU_V6
	select CPU_32v6K
        select MIGHT_HAVE_CACHE_L2X0
	select ARCH_MT5389
	select CACHE_L2X0
	select CACHE_PL310
	help
	  This enables support for MediaTek MT5389.

config MACH_MT5398
	bool "MediaTek MT5398(Cobra Cortex-A9 dual-core)"
	select CPU_V7
	select ARM_GIC
	select HAVE_SMP
        select MIGHT_HAVE_CACHE_L2X0
	select ARCH_MT5398
	select NEED_PREPARE_CPUS_FOR_ONE if SMP
	select MT53XX_UP_CHECK if !SMP
	help
	  This enables support for MediaTek MT5398.

config MACH_MT5399
	bool "MediaTek MT5399(Cobra Cortex-A9 dual-core)"
	select CPU_V7
	select ARM_GIC
	select HAVE_SMP
        select MIGHT_HAVE_CACHE_L2X0
	select ARCH_MT5399
	select NEED_PREPARE_CPUS_FOR_ONE if SMP
	select MT53XX_UP_CHECK if !SMP
	help
	  This enables support for MediaTek MT5399.

config MACH_MT5890
	bool "MediaTek MT5890(Oryx Cortex-A12 quad-core)"
	select CPU_V7
	select ARM_GIC
	select HAVE_SMP
	select ARCH_MT5890
	select NEED_PREPARE_CPUS_FOR_ONE if SMP
	select MT53XX_UP_CHECK if !SMP
	select ARM_HAS_SG_CHAIN
	help
	  This enables support for MediaTek MT5890.

config MACH_MT5891
	bool "MediaTek MT5891(Oryx Cortex-A53 quad-core)"
	select CPU_V7
	select ARM_GIC
	select HAVE_SMP
	select ARCH_MT5891
	select NEED_PREPARE_CPUS_FOR_ONE if SMP
	select MT53XX_UP_CHECK if !SMP
	select ARM_HAS_SG_CHAIN
	select CLKSRC_MT53XX_TIMER
	help
	  This enables support for MediaTek MT5891.

config MACH_MT5886
    bool "MediaTek MT5886(Oryx Cortex-A53 quad-core)"
    select CPU_V7
    select ARM_GIC
    select HAVE_SMP
    select ARCH_MT5886
    select NEED_PREPARE_CPUS_FOR_ONE if SMP
    select MT53XX_UP_CHECK if !SMP
    select ARM_HAS_SG_CHAIN
    select CLKSRC_MT53XX_TIMER
    help
      This enables support for MediaTek MT5886.

config MACH_MT5887
    bool "MediaTek MT5887(Oryx Cortex-A53 quad-core)"
    select CPU_V7
    select ARM_GIC
    select HAVE_SMP
    select ARCH_MT5887
    select NEED_PREPARE_CPUS_FOR_ONE if SMP
    select MT53XX_UP_CHECK if !SMP
    select ARM_HAS_SG_CHAIN
    select CLKSRC_MT53XX_TIMER
    select MT53XX_EMI
    select ARCH_WANT_OPTIONAL_GPIOLIB
    select GPIOLIB
    select PINCTRL
    select PINCTRL_MT5887
    help
      This enables support for MediaTek MT5887.


config MACH_MT5863
    bool "MediaTek MT5863(Crax Cortex-A53 quad-core)"
    select CPU_V7
    select ARM_GIC
    select HAVE_SMP
    select ARCH_MT5863
    select NEED_PREPARE_CPUS_FOR_ONE if SMP
    select MT53XX_UP_CHECK if !SMP
    select ARM_HAS_SG_CHAIN
    select CLKSRC_MT53XX_TIMER
    help
      This enables support for MediaTek MT5863.

config MACH_MT5893
    bool "MediaTek MT5893(Husky Cortex-A73 quad-core)"
    select CPU_V7
    select ARM_GIC
    select HAVE_SMP
    select ARCH_MT5893
    select NEED_PREPARE_CPUS_FOR_ONE if SMP
    select MT53XX_UP_CHECK if !SMP
    select ARM_HAS_SG_CHAIN
    select CLKSRC_MT53XX_TIMER
    select MT53XX_EMI
    select PM_DEBUG
    select DPM_WATCHDOG
    help
      This enables support for MediaTek MT5893

config MACH_MT5895
    bool "MediaTek MT5895(Capybara Cortex-A73 quad-core)"
    select CPU_V7
    select ARM_GIC
    select HAVE_SMP
    select ARCH_MT5895
    select NEED_PREPARE_CPUS_FOR_ONE if SMP
    select MT53XX_UP_CHECK if !SMP
    select ARM_HAS_SG_CHAIN
    select CLKSRC_MT53XX_TIMER
    select MT53XX_EMI
    help
      This enables support for MediaTek MT5895
	  
config MACH_MT5861
	bool "MediaTek MT5861(Gazelle Cortex-A12 quad-core)"
	select CPU_V7
	select ARM_GIC
	select HAVE_SMP
        select MIGHT_HAVE_CACHE_L2X0
	select ARCH_MT5861
	select NEED_PREPARE_CPUS_FOR_ONE if SMP
	select MT53XX_UP_CHECK if !SMP
	select ARM_HAS_SG_CHAIN
	help
	  This enables support for MediaTek MT5861.

config MACH_MT5880
	bool "MediaTek MT5880(Viper Cortex-A9)"
	select CPU_V7
	select ARM_GIC
	select HAVE_SMP
        select MIGHT_HAVE_CACHE_L2X0
	select ARCH_MT5880
	select NEED_PREPARE_CPUS_FOR_ONE if SMP
	select MT53XX_UP_CHECK if !SMP
	help
	  This enables support for MediaTek MT5398.

config MACH_MT5881
	bool "MediaTek MT5881(Arm11)"
	select CPU_V6
	select CPU_32v6K
	select ARCH_MT5881
	help
	  This enables support for MediaTek MT5881.

config MACH_MT5882
	bool "MediaTek MT5882(Capri Cortex-A7 quad-core)"
	select CPU_V7
	select ARM_GIC
	select HAVE_SMP
	select ARCH_MT5882
	select NEED_PREPARE_CPUS_FOR_ONE if SMP
	select MT53XX_UP_CHECK if !SMP
	select ARM_HAS_SG_CHAIN
	help
	  This enables support for MediaTek MT5882.

config MACH_MT5865
	bool "MediaTek MT5865(Puppy Cortex-A7 dual-core)"
	select CPU_V7
	select ARM_GIC
	select HAVE_SMP
	select ARCH_MT5865
	select NEED_PREPARE_CPUS_FOR_ONE if SMP
	select MT53XX_UP_CHECK if !SMP
	help
	  This enables support for MediaTek MT5865.

config MACH_MT5368_FPGA
	bool "MediaTek MT5368_FPGA(ARM11)"
	select CPU_V6
	select ARCH_MT5368
	select MT53_FPGA
	help
	  This enables support for MediaTek MT5368.

config MACH_MT5396_FPGA
	bool "MediaTek MT5396_FPGA(ARM11)"
	select CPU_V7
	select ARCH_MT5396
	select MT53_FPGA
	help
	  This enables support for MediaTek MT5396.
endchoice

config ARCH_MT5368
	bool "MediaTek MT5368" if MACH_MT5368 || MACH_MT5368_FPGA
	default n
	select GENERIC_TIME
	select GENERIC_CLOCKEVENTS
	help
	  This enables support for MediaTek MT5368.

config ARCH_MT5396
	bool "MediaTek MT5396" if MACH_MT5396 || MACH_MT5396_FPGA
	default n
	select GENERIC_TIME
	select GENERIC_CLOCKEVENTS
	#select ARCH_USES_GETTIMEOFFSET
	help
	  This enables support for MediaTek MT5396.

config ARCH_MT5389
	bool "MediaTek MT5389" if MACH_MT5389
	default n
	select GENERIC_TIME
	select GENERIC_CLOCKEVENTS
	help
	  This enables support for MediaTek MT5389.

config ARCH_MT5398
	bool "MediaTek MT5398" if MACH_MT5398
	default n
	select GENERIC_TIME
	select GENERIC_CLOCKEVENTS
	select MT53XX_NATIVE_GPIO
	help
	  This enables support for MediaTek MT5398.

config ARCH_MT5399
	bool "MediaTek MT5399" if MACH_MT5399
	default n
	select GENERIC_TIME
	select GENERIC_CLOCKEVENTS
	select HAVE_ARM_SCU if SMP
	select HAVE_ARM_TWD if LOCAL_TIMERS
	select MT53XX_NATIVE_GPIO
	help
	  This enables support for MediaTek MT5399.

config ARCH_MT5890
	bool "MediaTek MT5890" if MACH_MT5890
	default n
	select GENERIC_TIME
	select GENERIC_CLOCKEVENTS
	select HAVE_ARM_ARCH_TIMER if LOCAL_TIMERS
	select MT53XX_NATIVE_GPIO
	select ARCH_HAS_CPUFREQ
	select ARM_HAS_SG_CHAIN
	help
	  This enables support for MediaTek MT5890.

config ARCH_MT5891
	bool "MediaTek MT5891" if MACH_MT5891
	default n
	select GENERIC_TIME
	select GENERIC_CLOCKEVENTS
	select HAVE_ARM_ARCH_TIMER if LOCAL_TIMERS
	select MT53XX_NATIVE_GPIO
	select ARCH_HAS_CPUFREQ
	help
	  This enables support for MediaTek MT5891.

config ARCH_MT5886
    bool "MediaTek MT5886" if MACH_MT5886
    default n
    select GENERIC_TIME
    select GENERIC_CLOCKEVENTS
    select HAVE_ARM_ARCH_TIMER if LOCAL_TIMERS
    select MT53XX_NATIVE_GPIO
    select ARCH_HAS_CPUFREQ
    help
      This enables support for MediaTek MT5886.
	  
config ARCH_MT5887
    bool "MediaTek MT5887" if MACH_MT5887
    default n
    select GENERIC_TIME
    select GENERIC_CLOCKEVENTS
    select HAVE_ARM_ARCH_TIMER if LOCAL_TIMERS
    select MT53XX_NATIVE_GPIO
    select ARCH_HAS_CPUFREQ
    help
      This enables support for MediaTek MT5887.

config ARCH_MT5863
    bool "MediaTek MT5863" if MACH_MT5863
    default n
    select GENERIC_TIME
    select GENERIC_CLOCKEVENTS
    select HAVE_ARM_ARCH_TIMER if LOCAL_TIMERS
    select MT53XX_NATIVE_GPIO
    select ARCH_HAS_CPUFREQ
    help
      This enables support for MediaTek MT5863.
	  
config ARCH_MT5893
    bool "MediaTek MT5893" if MACH_MT5893
    default n
    select GENERIC_TIME
    select GENERIC_CLOCKEVENTS
    select HAVE_ARM_ARCH_TIMER if LOCAL_TIMERS
    select MT53XX_NATIVE_GPIO
    select ARCH_HAS_CPUFREQ
    help
      This enables support for MediaTek MT5893.

config ARCH_MT5895
    bool "MediaTek MT5895" if MACH_MT5895
    default n
    select GENERIC_TIME
    select GENERIC_CLOCKEVENTS
    select HAVE_ARM_ARCH_TIMER if LOCAL_TIMERS
    select MT53XX_NATIVE_GPIO
    select ARCH_HAS_CPUFREQ
    help
      This enables support for MediaTek MT5895.

config ARCH_MT5861
	bool "MediaTek MT5861" if MACH_MT5861
	default n
	select GENERIC_TIME
	select GENERIC_CLOCKEVENTS
	select MT53XX_NATIVE_GPIO
	help
	  This enables support for MediaTek MT5861.

config ARCH_MT5880
	bool "MediaTek MT5880" if MACH_MT5880
	default n
	select GENERIC_TIME
	select GENERIC_CLOCKEVENTS
	select MT53XX_NATIVE_GPIO
	help
	  This enables support for MediaTek MT5880.
config ARCH_MT5881
	bool "MediaTek MT5880" if MACH_MT5881
	default n
	select GENERIC_TIME
	select GENERIC_CLOCKEVENTS
	help
	  This enables support for MediaTek MT5881.

config ARCH_MT5882
	bool "MediaTek MT5882" if MACH_MT5882
	default n
	select GENERIC_TIME
	select GENERIC_CLOCKEVENTS
	select HAVE_ARM_ARCH_TIMER if LOCAL_TIMERS
	select MT53XX_NATIVE_GPIO
	help
	  This enables support for MediaTek MT5882.

config ARCH_MT5865
	bool "MediaTek MT5865" if MACH_MT5865
	default n
	select GENERIC_TIME
	select GENERIC_CLOCKEVENTS
	select HAVE_ARM_ARCH_TIMER if LOCAL_TIMERS
	select MT53XX_NATIVE_GPIO
	help
	  This enables support for MediaTek MT5865.

config MT53XX_EMI
    bool "MT53XX external memory interface"
    default n

config MT53_FPGA
	bool "FPGA environment"
	default n

config MT53XX_UP_CHECK
	bool
	default n

config MT53XX_NATIVE_GPIO
	bool
	default n

config MT53XX_USE_CHANNELB_DRAM
	bool "Map channel B DRAM as Linux kernel memory"
	depends on ARCH_MT5396 || ARCH_MT5398 || ARCH_MT5880 || ARCH_MT5399 || ARCH_MT5890 || ARCH_MT5891 || ARCH_MT5886
	default n
	select HIGHMEM
	select ZONE_DMA
	help
	  Map unused channel B DRAM for Linux kernel usage.

config TV_DRV_VFY
	bool "tv drv vfy"

config NATIVE_CB2
	bool "callback mechanism in native"

config CB2_EARLYSUSPEND
	bool "early suspend by cb2"
	depends on ANDROID && !EARLYSUSPEND && !PM_AUTOSLEEP && NATIVE_CB2
	default n
	help
	  Notify earlysuspend or lateresume to user space by cb2 when the
	  user requested sleep state changes.

config MTK_LCA_RAM_OPTIMIZE
	bool "zram enhancement from LCA"
	
config SOC_MEDIATEK_MT53XX
	bool "SoC bus device for the ARM Integrator platform core modules"

	help
	  Include support for the SoC bus on the ARM Integrator platform
	  core modules providing some sysfs information about the ASIC
	  variant.

config ARM64_UNIQUE_IOMAP
	bool "do unique io mapping for arm64"

	help
        normally,arm64 will not do static fix io mapping,it will be difficult to 
        debug io register overwrite issue via virtual address,so let's steal the idea from arm32 and 
        do the unique io mapping for soc io register space.When you want to debug register overwrite issue,
        you'd better to turn it on

config MT53XX_REQUEST_EDID_DEVICE
	bool "Add request edid platform device"
	default n
	help
	  Add mt53xx request edid platform device

	  If unsure, Say N.

config MT53XX_REQUEST_DSP_DEVICE
	bool "Add request dsp platform device"
	default n
	help
	  Add mt53xx request dsp platform device

	  If unsure, Say N.

config MT53XX_REQUEST_EXTRA_DEVICE
	bool "Add request extra platform device"
	default n
	help
	  Add mt53xx request extra platform device, such as be, flashpq and flashaq.

	  If unsure, Say N.

config MT53XX_EMMC_PRODUCT_MODEL
	bool "add mt53xx emmc product model"
	default n
	help
	  Add mt53xx emmc product model variable.

	  If unsure, Say N.

config TUNER_DBG_LVL_BY_UBOOT
	bool "add tuner debug level control"
	default n
	help
	  Add add tuner debug level control variable.

	  If unsure, Say N.

config KCU
	bool "kernel call user mechanism"
	depends on SYSFS && ANON_INODES
	help
	  Add kernel call user api(synchronous and asynchronous) mechanism
	  If unsure, Say N.      

config MTK_CMDQ
	bool "MediaTek CMDQ Support"
	depends on ARCH_MT5895 || COMPILE_TEST
	help
	  Say yes here to add support for the MediaTek Command Queue (CMDQ)
	  driver. The CMDQ is used to help read/write registers with critical
	  time limitation, such as updating display configuration during the
	  vblank.

config ARM64_PSEUDO_NMI_PERF
	bool "Support register perf interrupt as Pseudo NMI"
	depends on ARM64_PSEUDO_NMI
	depends on ARM_PMU
	help
	  Register Perf interrupt as Non-Maskable Interrupts.
	  If unsure, Say N.

config ARM64_PSEUDO_NMI_IPI
	bool "Support register IPI as NMI to backtrace remote CPUs"
	depends on ARM64_PSEUDO_NMI
	depends on SMP
	help
	  Register IPI as NMI to backtrace remote CPUs.
	  If unsure, Say N.
