menu "Platform selection"

config ARCH_ACTIONS
	bool "Actions Semi Platforms"
	select OWL_TIMER
	help
	  This enables support for the Actions Semiconductor S900 SoC family.

config ARCH_SUNXI
	bool "Allwinner sunxi 64-bit SoC Family"
	select ARCH_HAS_RESET_CONTROLLER
	select GENERIC_IRQ_CHIP
	select PINCTRL
	select RESET_CONTROLLER
	help
	  This enables support for Allwinner sunxi based SoCs like the A64.

config ARCH_ALPINE
	bool "Annapurna Labs Alpine platform"
	select ALPINE_MSI if PCI
	help
	  This enables support for the Annapurna Labs Alpine
	  Soc family.

config ARCH_BCM2835
	bool "Broadcom BCM2835 family"
	select TIMER_OF
	select GPIOLIB
	select PINCTRL
	select PINCTRL_BCM2835
	select ARM_AMBA
	select ARM_TIMER_SP804
	select HAVE_ARM_ARCH_TIMER
	help
	  This enables support for the Broadcom BCM2837 SoC.
	  This SoC is used in the Raspberry Pi 3 device.

config ARCH_BCM_IPROC
	bool "Broadcom iProc SoC Family"
	select COMMON_CLK_IPROC
	select GPIOLIB
	select PINCTRL
	help
	  This enables support for Broadcom iProc based SoCs

config ARCH_BERLIN
	bool "Marvell Berlin SoC Family"
	select DW_APB_ICTL
	select DW_APB_TIMER_OF
	select GPIOLIB
	select PINCTRL
	help
	  This enables support for Marvell Berlin SoC Family

config ARCH_BRCMSTB
	bool "Broadcom Set-Top-Box SoCs"
	select BRCMSTB_L2_IRQ
	select GENERIC_IRQ_CHIP
	help
	  This enables support for Broadcom's ARMv8 Set Top Box SoCs

config ARCH_EXYNOS
	bool "ARMv8 based Samsung Exynos SoC family"
	select COMMON_CLK_SAMSUNG
	select EXYNOS_PM_DOMAINS if PM_GENERIC_DOMAINS
	select EXYNOS_PMU
	select HAVE_S3C2410_WATCHDOG if WATCHDOG
	select HAVE_S3C_RTC if RTC_CLASS
	select PINCTRL
	select PINCTRL_EXYNOS
	select SOC_SAMSUNG
	help
	  This enables support for ARMv8 based Samsung Exynos SoC family.

config ARCH_LAYERSCAPE
	bool "ARMv8 based Freescale Layerscape SoC family"
	select EDAC_SUPPORT
	help
	  This enables support for the Freescale Layerscape SoC family.

config ARCH_LG1K
	bool "LG Electronics LG1K SoC Family"
	help
	  This enables support for LG Electronics LG1K SoC Family

config ARCH_HISI
	bool "Hisilicon SoC Family"
	select ARM_TIMER_SP804
	select HISILICON_IRQ_MBIGEN if PCI
	select PINCTRL
	help
	  This enables support for Hisilicon ARMv8 SoC family

config ARCH_MEDIATEK
	bool "Mediatek MT65xx & MT81xx ARMv8 SoC"
	select ARM_GIC
	select PINCTRL
	select MTK_TIMER
	help
	  Support for Mediatek MT65xx & MT81xx ARMv8 SoCs

config MTK_IGNORE_SSBS
	bool "Mediatek option to ignore SSBS check"
	help
	  Sometimes we need to bypass SSBS check manually to
	  prevent cpu online check from failure. This option
	  is for that. Please select it if needed. Anything in
	  doubt, just say N

config MACH_MT6785
	bool "MediaTek MT6785"
	select ARM_DSU_PMU
	select MTK_TIMER_SYSTIMER
	select MTK_GIC_V3_EXT
	select PINCTRL
	select PINCTRL_MT6785
	select IRQ_DOMAIN
	select MFD_SYSCON
	select MTK_SYSIRQ
	select MTK_SYS_CIRQ
	select FAST_CIRQ_CLONE_FLUSH
	select EXT4_FS
	select EXT4_FS_SECURITY
	select EXT4_ENCRYPTION
	select SDCARD_FS
	select OVERLAY_FS
	select CPU_IDLE
	select MTK_BASE_POWER
	select PM_DEVFREQ
	select ARM64_CRYPTO
	select CRYPTO_SHA2_ARM64_CE
	select CRYPTO_AES_ARM64_CE_BLK
	select MTK_SYSTRACKER_V2
	select MTK_CACHE_PARITY_CHECK
	select MTK_LASTBUS_INTERFACE
	select MTK_DRAMC
	select MTK_EMI
	select MTK_PID_MAP
	select MTK_PLAT_SRAM_FLAG
	select MTK_DEBUG_LATCH
	select MTK_DFD_INTERNAL_DUMP
	select MTK_SECURITY_SW_SUPPORT
	select MTK_LM_MODE if !MTK_GMO_RAM_OPTIMIZE
	select MTK_BOUNCING_CHECK if MTK_AEE_FEATURE
	select MTK_DEVMPU
	select MTK_GIC_TARGET_ALL
	select DEVAPC_MT6785
	select CLOCKSOURCE_VALIDATE_LAST_CYCLE
	help
	  This enables support for MediaTek MT6785
	  Support for aarch64 Architecture
	  Support for fpga_64_mt6785 related projects
	  Support for mt6785 related projects


config MACH_MT6765
	bool "MediaTek MT6765"
	select GENERIC_TIME
	select GENERIC_CLOCKEVENTS
	select ARCH_HAS_CPUFREQ
	select ARM_AMBA
	select CPU_V7
	select HAVE_SMP
	select NEED_MACH_MEMORY_H
	select IRQ_DOMAIN
	select IRQ_DOMAIN_DEBUG if IRQ_DOMAIN && DEBUG_FS
	select GENERIC_SCHED_CLOCK
	select ARMV7_COMPAT
	select ARMV7_COMPAT_CPUINFO
	select CPU_IDLE
	select PINCTRL
	select PINCTRL_MT6765
	select MFD_SYSCON
	select MTK_BASE_POWER
	select MTK_GIC_V3_EXT
	select MTK_SYSIRQ
	select MTK_TIMER_APXGPT
	select MTK_TIMER_TIMESYNC
	select OVERLAY_FS
	select MTK_SYSTRACKER_V2
	select MTK_BOUNCING_CHECK if MTK_AEE_FEATURE
	select MTK_LM_MODE if !MTK_GMO_RAM_OPTIMIZE
	select MTK_DRAMC
	select PM_DEVFREQ
	select MTK_EMI
	select MTK_SYS_CIRQ
	select MTK_GIC_TARGET_ALL
	select FAST_CIRQ_CLONE_FLUSH
	select MTK_FIQ_CACHE
	select MTK_DEBUG_LATCH
	select MTK_DFD_INTERNAL_DUMP
	select MTK_PLAT_SRAM_FLAG
	select MTK_L2C_PARITY_CHECK
	help
	  This enables support for MediaTek MT6765
	  Highly power-efficient, performance-oriented 4G LTE processor for premium,
	  thin-design smartphones. MT6765 also offers significant multitasking and
	  multimedia improvements.

config MACH_MT6771
	bool "MediaTek MT6771"
	select GENERIC_TIME
	select GENERIC_CLOCKEVENTS
	select ARCH_HAS_CPUFREQ
	select ARM_AMBA
	select CPU_V7
	select HAVE_SMP
	select MTK_PID_MAP
	select MTK_IO_BOOST
	select NEED_MACH_MEMORY_H
	select IRQ_DOMAIN
	select IRQ_DOMAIN_DEBUG if IRQ_DOMAIN && DEBUG_FS
	select GENERIC_SCHED_CLOCK
	select ARMV7_COMPAT
	select ARMV7_COMPAT_CPUINFO
	select PINCTRL
	select PINCTRL_MT6771
	select MFD_SYSCON
	select MTK_DRAMC
	select CPU_IDLE
	select MTK_BASE_POWER
	select MTK_SWPM if !FPGA_EARLY_PORTING
	select MTK_GIC_V3_EXT
	select MTK_LM_MODE if !MTK_GMO_RAM_OPTIMIZE
	select MTK_SYSIRQ
	select MTK_EMI
	select MTK_DEBUG_LATCH
	select MTK_PLAT_SRAM_FLAG
	select ARM64_CRYPTO
	select CRYPTO_SHA2_ARM64_CE
	select CRYPTO_AES_ARM64_CE_BLK
	select MTK_ES_REG
	select MTK_CQDMA
	select MTK_IRQ_NEW_DESIGN
	select MTK_SYS_CIRQ
	select MTK_GIC_TARGET_ALL
	select FAST_CIRQ_CLONE_FLUSH
	select MTK_CACHE_FLUSH_BY_SF
	select MTK_BOUNCING_CHECK if MTK_AEE_FEATURE
	select MTK_LM_MODE if !MTK_GMO_RAM_OPTIMIZE
	select MTK_TIMER_APXGPT
	select DEVAPC_LEGACY
	select OVERLAY_FS
	select MTK_SYSTRACKER_V2
	select MTK_SECURITY_SW_SUPPORT
	help
	  This enables support for MediaTek MT6771
	  Support for aarch64 Architecture
	  Support for fpga_64_mt6771 related projects
	  Support for mt6771 related projects

config MACH_MT6768
	bool "MediaTek MT6768"
	select GENERIC_TIME
	select GENERIC_CLOCKEVENTS
	select ARCH_HAS_CPUFREQ
	select ARM_AMBA
	select ARM_DSU_PMU if ARM64 && PERF_EVENTS
	select CPU_V7
	select HAVE_SMP
	select NEED_MACH_MEMORY_H
	select IRQ_DOMAIN
	select IRQ_DOMAIN_DEBUG if IRQ_DOMAIN && DEBUG_FS
	select GENERIC_SCHED_CLOCK
	select ARMV7_COMPAT
	select ARMV7_COMPAT_CPUINFO
	select EXT4_FS
	select EXT4_FS_SECURITY
	select EXT4_ENCRYPTION
	select PINCTRL
	select PINCTRL_MT6768
	select MFD_SYSCON
	select CPU_IDLE
	select MTK_BASE_POWER
	select MTK_GIC_V3_EXT
	select MTK_PID_MAP
	select MTK_SYSIRQ
	select MTK_DEBUG_LATCH
	select MTK_PLAT_SRAM_FLAG
	select MTK_DFD_INTERNAL_DUMP
	select MTK_EMI
	select MTK_DRAMC
	select ARM64_CRYPTO
	select CRYPTO_SHA2_ARM64_CE
	select CRYPTO_AES_ARM64_CE_BLK
	select SDCARD_FS
	select MTK_SYSTRACKER_V2
	select MTK_CACHE_PARITY_CHECK
	select MTK_LASTBUS_INTERFACE
	select MTK_DEBUG_LATCH
	select MTK_ES_REG
	select MTK_CQDMA
	select MTK_GIC_TARGET_ALL
	select MTK_SYS_CIRQ
	select FAST_CIRQ_CLONE_FLUSH
	select MTK_ION_CACHE_OPTIMIZATION
	select MTK_BOUNCING_CHECK if MTK_AEE_FEATURE
	select MTK_TIMER_SYSTIMER
	select MTK_LM_MODE if !MTK_GMO_RAM_OPTIMIZE
	select MTK_SECURITY_SW_SUPPORT
	select DEVAPC_MT6768
	select OVERLAY_FS
	select MTK_IGNORE_SSBS
	help
	  This enables support for MediaTek MT6768
	  Support for aarch64 Architecture
	  Support for fpga_64_mt6768 related projects
	  Support for mt6768 related projects

config MACH_MT6739
	bool "MediaTek MT6739"
	select GENERIC_TIME
	select GENERIC_CLOCKEVENTS
	select ARCH_HAS_CPUFREQ
	select ARM_AMBA
	select CPU_V7
	select HAVE_SMP
	select EXT4_FS
	select EXT4_FS_ENCRYPTION
	select EXT4_FS_SECURITY
	select EXT4_ENCRYPTION
	select F2FS_FS
	select F2FS_FS_ENCRYPTION
	select F2FS_FS_SECURITY
	select F2FS_FS_XATTR
	select NEED_MACH_MEMORY_H
	select IRQ_DOMAIN
	select IRQ_DOMAIN_DEBUG if IRQ_DOMAIN && DEBUG_FS
	select GENERIC_SCHED_CLOCK
	select MTK_SYS_CIRQ
	select MTK_GIC_TARGET_ALL
	select ARMV7_COMPAT
	select ARMV7_COMPAT_CPUINFO
	select CPU_IDLE
	select PINCTRL
	select PINCTRL_MT6739
	select MFD_SYSCON
	select MTK_BASE_POWER
	select MTK_SYSTRACKER_V2
	select MTK_GIC_V3_EXT
	select MTK_IRQ_NEW_DESIGN
	select MTK_IRQ_NEW_DESIGN_DEBUG
	select MTK_BOUNCING_CHECK if MTK_AEE_FEATURE
	select ARM64_ERRATUM_845719
	select MTK_CQDMA
	select MTK_SYSIRQ
	select MTK_FIQ_CACHE
	select FAST_CIRQ_CLONE_FLUSH
	select MTK_TIMER_APXGPT
	select ARM64_CRYPTO
	select CRYPTO_SHA2_ARM64_CE
	select CRYPTO_AES_ARM64_CE_BLK
	select DEVAPC_LEGACY
	select OVERLAY_FS
	select MTK_SECURITY_SW_SUPPORT
	help
	  This enables support for MediaTek MT6739.
	  It enables all necessary feature for MP including
	  GIC, ERRATA, debug utilities.
	  Say Y to enable this option.
	  Say N to disable.

config MACH_MT8167
	bool "MediaTek MT8167"
	select GENERIC_TIME
	select GENERIC_CLOCKEVENTS
	select ARCH_HAS_CPUFREQ
	select ARM_AMBA
	select CPU_V7
	select HAVE_SMP
	select NEED_MACH_MEMORY_H
	select IRQ_DOMAIN
	select IRQ_DOMAIN_DEBUG if IRQ_DOMAIN && DEBUG_FS
	select GENERIC_SCHED_CLOCK
	select ARMV7_COMPAT
	select ARMV7_COMPAT_CPUINFO
	select CPU_IDLE
	select CPU_IDLE_GOV_MTK
	select ARM_MTK_81XX_CPUIDLE
	select PINCTRL
	select PINCTRL_MT8167
	select MFD_SYSCON
	select MTK_BASE_POWER
	select MTK_TIMER
	select MTK_GIC_EXT
	select MTK_SYS_CIRQ
	select HAVE_MTK_IN_HOUSE_TEE_SUPPORT
	select MTK_ICE_DEBUG
	select ARM64_CRYPTO
	select CRYPTO_SHA2_ARM64_CE
	select CRYPTO_AES_ARM64_CE_BLK
	select OVERLAY_FS
	help
	  This enables support for MediaTek MT8167
	  If you need support for MediaTek MT8167, say Y here.
	  This including the basic selections,
	  But not all of them.

config MACH_MT8168
	bool "MediaTek MT8168"
	select GENERIC_CLOCKEVENTS
	select ARM_AMBA
	select ARM_CPUIDLE
	select IRQ_DOMAIN
	select IRQ_DOMAIN_DEBUG if IRQ_DOMAIN && DEBUG_FS
	select GENERIC_SCHED_CLOCK
	select PINCTRL
	select PINCTRL_MT8168
	select MFD_SYSCON
	select CPU_IDLE
	select CPU_IDLE_NO_MTK
	select MTK_BASE_POWER
	select MTK_GIC_V3_EXT
	select MTK_SYSIRQ
	select ARM64_CRYPTO
	select CRYPTO_SHA2_ARM64_CE
	select CRYPTO_AES_ARM64_CE_BLK
	select MTK_BOUNCING_CHECK if AEE_FEATURE
	select MTK_DRAMC
	select OVERLAY_FS
	select MTK_EMI
	select MTK_DEBUG_LATCH
	select MTK_PLAT_SRAM_FLAG
	select MTK_L2C_PARITY_CHECK
        help
          This enables support for MediaTek MT8168
          Support for aarch64 Architecture
          Support for fpga_64_mt8168 related projects
          Support for mt8168 related projects

config MACH_MT6885
	bool "MediaTek MT6885"
	select GENERIC_TIME
	select GENERIC_CLOCKEVENTS
	select ARCH_HAS_CPUFREQ
	select ARM_AMBA
	select CPU_V7
	select HAVE_SMP
	select NEED_MACH_MEMORY_H
	select IRQ_DOMAIN
	select IRQ_DOMAIN_DEBUG if IRQ_DOMAIN && DEBUG_FS
	select GENERIC_SCHED_CLOCK
	select ARMV7_COMPAT
	select ARMV7_COMPAT_CPUINFO
	select PINCTRL
	select PINCTRL_MT6885
	select MFD_SYSCON
	select CPU_IDLE
	select MTK_LM_MODE if !MTK_GMO_RAM_OPTIMIZE
	select ARM64_CRYPTO
	select MTK_GIC_TARGET_ALL
	select MTK_GIC_V3_EXT
	select ARM_DSU_PMU if ARM64 && PERF_EVENTS
	select CRYPTO_SHA2_ARM64_CE
	select CRYPTO_AES_ARM64_CE_BLK
	select MTK_ES_REG
	select MTK_CQDMA
	select MTK_DBGTOP
	select MTK_L3C_PART
	select MTK_BOUNCING_CHECK if MTK_AEE_FEATURE
	select MTK_LM_MODE if !MTK_GMO_RAM_OPTIMIZE
	select MTK_TIMER_SYSTIMER
	select MTK_BASE_POWER
	select ARM_MTK_NEW_ARCH_CPUIDLE
	select MTK_LPM
	select MTK_LOW_POWER_MODULE
	select MTK_LPM_MT6885
	select MTK_SWPM if !FPGA_EARLY_PORTING
	select COMMON_CLK_MT6885
	select DEVAPC_MT6885
	select DEVMPU_MT6885
	select OVERLAY_FS
	select EXT4_FS
	select EXT4_FS_SECURITY
	select EXT4_ENCRYPTION
	select F2FS_FS
	select F2FS_FS_ENCRYPTION
	select F2FS_FS_SECURITY
	select F2FS_FS_XATTR
	select DM_BOW
	select MTK_SYSTRACKER_V2
	select MTK_SECURITY_SW_SUPPORT
	select MTK_PLAT_SRAM_FLAG
	select MTK_DEBUG_LATCH
	select MTK_DFD_INTERNAL_DUMP
	select MTK_PID_MAP
	select MTK_CACHE_PARITY_CHECK
	select HW_RANDOM
	select HW_RANDOM_MT67XX
	select ARM64_ERRATUM_1542418
	select ARM64_ERRATUM_1800710
	select MTK_CPU_KORO
        help
	  This enables support for MediaTek MT6885
	  Support for aarch64 Architecture
	  Support for fpga_64_mt6885 related projects
	  Support for mt6885 related projects

config MACH_MT6873
	bool "MediaTek MT6873"
	select GENERIC_TIME
	select GENERIC_CLOCKEVENTS
	select ARCH_HAS_CPUFREQ
	select ARM_AMBA
	select CPU_V7
	select HAVE_SMP
	select NEED_MACH_MEMORY_H
	select IRQ_DOMAIN
	select IRQ_DOMAIN_DEBUG if IRQ_DOMAIN && DEBUG_FS
	select ARM_MTK_NEW_ARCH_CPUIDLE
	select MTK_LPM
	select MTK_LOW_POWER_MODULE
	select MTK_LPM_MT6873
	select MTK_SWPM if !FPGA_EARLY_PORTING
	select MTK_PID_MAP
	select GENERIC_SCHED_CLOCK
	select ARMV7_COMPAT
	select ARMV7_COMPAT_CPUINFO
	select PINCTRL
	select PINCTRL_MT6873
	select MFD_SYSCON
	select COMMON_CLK_MT6873
	select CPU_IDLE
	select PM_DEVFREQ
	select ARM_DSU_PMU
	select ARM64_CRYPTO
	select CRYPTO_SHA2_ARM64_CE
	select CRYPTO_AES_ARM64_CE_BLK
	select MTK_ES_REG
	select MTK_CQDMA
	select MTK_BOUNCING_CHECK if MTK_AEE_FEATURE
	select MTK_LM_MODE if !MTK_GMO_RAM_OPTIMIZE
	select MTK_TIMER_SYSTIMER
	select OVERLAY_FS
	select EXT4_FS
	select EXT4_FS_SECURITY
	select EXT4_ENCRYPTION
	select F2FS_FS
	select F2FS_FS_ENCRYPTION
	select F2FS_FS_SECURITY
	select F2FS_FS_XATTR
	select DM_BOW
	select MTK_BASE_POWER
	select DEVAPC_MT6873
	select DEVMPU_MT6873
	select HW_RANDOM
	select HW_RANDOM_MT67XX
	select MTK_GIC_TARGET_ALL
	select MTK_GIC_V3_EXT
	select MTK_DBGTOP
	select MTK_CPU_MSSV
	select MTK_SYSTRACKER_V2
	select MTK_PLAT_SRAM_FLAG
	select MTK_DEBUG_LATCH
	select MTK_DEBUG_TRACER
	select MTK_BUS_TRACER
	select MTK_DFD_INTERNAL_DUMP
	select MTK_CACHE_PARITY_CHECK
	select MTK_DRAMC_WA
	select MTK_SECURITY_SW_SUPPORT
	select MTK_CPU_KORO
	help
	  This enables support for MediaTek MT6873
	  Support for aarch64 Architecture
	  Support for mt6873 related projects
	  If you need support for MediaTek MT6873, say Y here.

config MACH_MT6833
	bool "MediaTek MT6833"
	select ARM_MTK_NEW_ARCH_CPUIDLE
	select GENERIC_TIME
	select GENERIC_CLOCKEVENTS
	select ARCH_HAS_CPUFREQ
	select ARM_AMBA
	select ARM_DSU_PMU if ARM64 && PERF_EVENTS
	select CPU_V7
	select HAVE_SMP
	select HIE
	select NEED_MACH_MEMORY_H
	select IRQ_DOMAIN
	select IRQ_DOMAIN_DEBUG if IRQ_DOMAIN && DEBUG_FS
	select GENERIC_SCHED_CLOCK
	select ARMV7_COMPAT
	select ARMV7_COMPAT_CPUINFO
	select PINCTRL
	select PINCTRL_MT6833
	select CPU_IDLE
	select MTK_BASE_POWER
	select ARM64_CRYPTO
	select CRYPTO_SHA2_ARM64_CE
	select CRYPTO_AES_ARM64_CE_BLK
	select MFD_SYSCON
	select MEDIATEK_MC if MEMORY
	select MTK_ES_REG
	select MTK_CQDMA
	select MTK_BOUNCING_CHECK if MTK_AEE_FEATURE
	select MTK_GIC_TARGET_ALL
	select MTK_GIC_V3_EXT
	select MTK_LM_MODE if !MTK_GMO_RAM_OPTIMIZE
	select MTK_LPM
	select MTK_LOW_POWER_MODULE
	select MTK_TIMER_SYSTIMER
	select MTK_LPM_MT6833
	select OVERLAY_FS
	select EXT4_FS
	select EXT4_FS_SECURITY
	select EXT4_ENCRYPTION
	select F2FS_FS
	select F2FS_FS_ENCRYPTION
	select F2FS_FS_SECURITY
	select F2FS_FS_XATTR
	select DM_BOW
	select PM_DEVFREQ
	select MTK_SECURITY_SW_SUPPORT
	select MTK_SYSTRACKER_V2
	select MTK_CPU_MSSV
	select MTK_UNIFIED_DEBUG_INTERFACE
	select MTK_DEBUG_TRACER
	select MTK_BUS_TRACER
	select MTK_PLAT_SRAM_FLAG
	select MTK_DEBUG_LATCH
	select MTK_CACHE_PARITY_CHECK
	select HW_RANDOM
	select HW_RANDOM_MT67XX
	select MTK_PID_MAP
	help
	  This enables support for MediaTek MT6833
	  Support for aarch64 Architecture
	  Support for fpga6833 related projects
	  Support for mt6833 related projects

config MACH_MT6853
	bool "MediaTek MT6853"
	select ARM_MTK_NEW_ARCH_CPUIDLE
	select GENERIC_TIME
	select GENERIC_CLOCKEVENTS
	select ARCH_HAS_CPUFREQ
	select ARM_AMBA
	select ARM_DSU_PMU if ARM64 && PERF_EVENTS
	select CPU_V7
	select HAVE_SMP
	select NEED_MACH_MEMORY_H
	select IRQ_DOMAIN
	select IRQ_DOMAIN_DEBUG if IRQ_DOMAIN && DEBUG_FS
	select GENERIC_SCHED_CLOCK
	select ARMV7_COMPAT
	select ARMV7_COMPAT_CPUINFO
	select PINCTRL
	select PINCTRL_MT6853
	select CPU_IDLE
	select ARM64_CRYPTO
	select CRYPTO_SHA2_ARM64_CE
	select CRYPTO_AES_ARM64_CE_BLK
	select MFD_SYSCON
	select MEDIATEK_MC if MEMORY
	select MTK_ES_REG
	select MTK_CQDMA
	select MTK_BOUNCING_CHECK if MTK_AEE_FEATURE
	select MTK_GIC_TARGET_ALL
	select MTK_GIC_V3_EXT
	select MTK_LM_MODE if !MTK_GMO_RAM_OPTIMIZE
	select MTK_LPM
	select MTK_LOW_POWER_MODULE
	select MTK_SPMTWAM
	select MTK_LPM_MT6853
	select MTK_SWPM if !FPGA_EARLY_PORTING
	select MTK_TIMER_SYSTIMER
	select OVERLAY_FS
	select EXT4_FS
	select EXT4_FS_SECURITY
	select EXT4_ENCRYPTION
	select F2FS_FS
	select F2FS_FS_ENCRYPTION
	select F2FS_FS_SECURITY
	select F2FS_FS_XATTR
	select DM_BOW
	select MTK_BASE_POWER
	select PM_DEVFREQ
	select DEVAPC_MT6853
	select DEVMPU_MT6853
	select MTK_SECURITY_SW_SUPPORT
	select MTK_SYSTRACKER_V2
	select MTK_DBGTOP
	select MTK_CPU_MSSV
	select MTK_DEBUG_TRACER
	select MTK_BUS_TRACER
	select MTK_PLAT_SRAM_FLAG
	select MTK_DEBUG_LATCH
	select MTK_CACHE_PARITY_CHECK
	select HW_RANDOM
	select HW_RANDOM_MT67XX
	select MTK_DFD_INTERNAL_DUMP
	select MTK_UNIFIED_DEBUG_INTERFACE
	select MTK_CPU_KORO
	select MTK_DRAMC_WA
	select MTK_PID_MAP
	help
	  This enables support for MediaTek MT6853
	  Support for aarch64 Architecture
	  Support for fpga6853 related projects
	  Support for mt6853 related projects

config MACH_MT6893
	bool "MediaTek MT6893"
	select GENERIC_TIME
	select GENERIC_CLOCKEVENTS
	select ARCH_HAS_CPUFREQ
	select ARM_AMBA
	select CPU_V7
	select HAVE_SMP
	select NEED_MACH_MEMORY_H
	select IRQ_DOMAIN
	select IRQ_DOMAIN_DEBUG if IRQ_DOMAIN && DEBUG_FS
	select GENERIC_SCHED_CLOCK
	select ARMV7_COMPAT
	select ARMV7_COMPAT_CPUINFO
	select PINCTRL
	select PINCTRL_MT6885
	select MFD_SYSCON
	select CPU_IDLE
	select MTK_LM_MODE if !MTK_GMO_RAM_OPTIMIZE
	select ARM64_CRYPTO
	select MTK_GIC_TARGET_ALL
	select MTK_GIC_V3_EXT
	select ARM_DSU_PMU if ARM64 && PERF_EVENTS
	select CRYPTO_SHA2_ARM64_CE
	select CRYPTO_AES_ARM64_CE_BLK
	select MTK_ES_REG
	select MTK_CQDMA
	select MTK_DBGTOP
	select MTK_BOUNCING_CHECK if MTK_AEE_FEATURE
	select MTK_TIMER_SYSTIMER
	select MTK_BASE_POWER
	select ARM_MTK_NEW_ARCH_CPUIDLE
	select MTK_LPM
	select MTK_LOW_POWER_MODULE
	select MTK_LPM_MT6885
	select MTK_SWPM if !FPGA_EARLY_PORTING
	select COMMON_CLK_MT6885
	select DEVAPC_MT6885
	select DEVMPU_MT6885
	select OVERLAY_FS
	select EXT4_FS
	select EXT4_FS_SECURITY
	select EXT4_ENCRYPTION
	select F2FS_FS
	select F2FS_FS_ENCRYPTION
	select F2FS_FS_SECURITY
	select F2FS_FS_XATTR
	select DM_BOW
	select MTK_CPU_MSSV
	select MTK_SYSTRACKER_V2
	select MTK_SECURITY_SW_SUPPORT
	select MTK_PLAT_SRAM_FLAG
	select MTK_DEBUG_LATCH
	select MTK_DFD_INTERNAL_DUMP
	select MTK_PID_MAP
	select MTK_CACHE_PARITY_CHECK
	select HW_RANDOM
	select HW_RANDOM_MT67XX
	select ARM64_ERRATUM_1542418
	select MTK_CPU_KORO
        help
	  This enables support for MediaTek MT6893
	  Support for aarch64 Architecture
	  Support for fpga_64_mt6893 related projects
	  Support for mt6893 related projects

config ARCH_MESON
	bool "Amlogic Platforms"
	select PINCTRL
	select PINCTRL_MESON
	select COMMON_CLK_AMLOGIC
	select COMMON_CLK_GXBB
	help
	  This enables support for the Amlogic S905 SoCs.

config ARCH_MVEBU
	bool "Marvell EBU SoC Family"
	select ARMADA_AP806_SYSCON
	select ARMADA_CP110_SYSCON
	select ARMADA_37XX_CLK
	select GPIOLIB
	select GPIOLIB_IRQCHIP
	select MVEBU_GICP
	select MVEBU_ICU
	select MVEBU_ODMI
	select MVEBU_PIC
	select OF_GPIO
	select PINCTRL
	select PINCTRL_ARMADA_37XX
	select PINCTRL_ARMADA_AP806
	select PINCTRL_ARMADA_CP110
	help
	  This enables support for Marvell EBU familly, including:
	   - Armada 3700 SoC Family
	   - Armada 7K SoC Family
	   - Armada 8K SoC Family

config ARCH_QCOM
	bool "Qualcomm Platforms"
	select GPIOLIB
	select PINCTRL
	help
	  This enables support for the ARMv8 based Qualcomm chipsets.

config ARCH_REALTEK
	bool "Realtek Platforms"
	help
	  This enables support for the ARMv8 based Realtek chipsets,
	  like the RTD1295.

config ARCH_ROCKCHIP
	bool "Rockchip Platforms"
	select ARCH_HAS_RESET_CONTROLLER
	select GPIOLIB
	select PINCTRL
	select PINCTRL_ROCKCHIP
	select PM
	select ROCKCHIP_TIMER
	help
	  This enables support for the ARMv8 based Rockchip chipsets,
	  like the RK3368.

config ARCH_SEATTLE
	bool "AMD Seattle SoC Family"
	help
	  This enables support for AMD Seattle SOC Family

config ARCH_SHMOBILE
	bool

config ARCH_RENESAS
	bool "Renesas SoC Platforms"
	select ARCH_SHMOBILE
	select PINCTRL
	select PM
	select PM_GENERIC_DOMAINS
	select RENESAS_IRQC
	select SOC_BUS
	help
	  This enables support for the ARMv8 based Renesas SoCs.

config ARCH_R8A7795
	bool "Renesas R-Car H3 SoC Platform"
	depends on ARCH_RENESAS
	help
	  This enables support for the Renesas R-Car H3 SoC.

config ARCH_R8A7796
	bool "Renesas R-Car M3-W SoC Platform"
	depends on ARCH_RENESAS
	help
	  This enables support for the Renesas R-Car M3-W SoC.

config ARCH_R8A77995
	bool "Renesas R-Car D3 SoC Platform"
	depends on ARCH_RENESAS
	help
	  This enables support for the Renesas R-Car D3 SoC.

config ARCH_STRATIX10
	bool "Altera's Stratix 10 SoCFPGA Family"
	help
	  This enables support for Altera's Stratix 10 SoCFPGA Family.

config ARCH_TEGRA
	bool "NVIDIA Tegra SoC Family"
	select ARCH_HAS_RESET_CONTROLLER
	select CLKDEV_LOOKUP
	select CLKSRC_MMIO
	select TIMER_OF
	select GENERIC_CLOCKEVENTS
	select GPIOLIB
	select PINCTRL
	select PM
	select PM_GENERIC_DOMAINS
	select RESET_CONTROLLER
	help
	  This enables support for the NVIDIA Tegra SoC family.

config ARCH_SPRD
	bool "Spreadtrum SoC platform"
	help
	  Support for Spreadtrum ARM based SoCs

config ARCH_THUNDER
	bool "Cavium Inc. Thunder SoC Family"
	help
	  This enables support for Cavium's Thunder Family of SoCs.

config ARCH_THUNDER2
	bool "Cavium ThunderX2 Server Processors"
	select GPIOLIB
	help
	  This enables support for Cavium's ThunderX2 CN99XX family of
	  server processors.

config ARCH_UNIPHIER
	bool "Socionext UniPhier SoC Family"
	select ARCH_HAS_RESET_CONTROLLER
	select PINCTRL
	help
	  This enables support for Socionext UniPhier SoC family.

config ARCH_VEXPRESS
	bool "ARMv8 software model (Versatile Express)"
	select COMMON_CLK_VERSATILE
	select GPIOLIB
	select PM
	select PM_GENERIC_DOMAINS
	select POWER_RESET_VEXPRESS
	select VEXPRESS_CONFIG
	help
	  This enables support for the ARMv8 software model (Versatile
	  Express).

config ARCH_VULCAN
	def_bool n

config ARCH_XGENE
	bool "AppliedMicro X-Gene SOC Family"
	help
	  This enables support for AppliedMicro X-Gene SOC Family

config ARCH_ZX
	bool "ZTE ZX SoC Family"
	select PINCTRL
	help
	  This enables support for ZTE ZX SoC Family

config ARCH_ZYNQMP
	bool "Xilinx ZynqMP Family"
	help
	  This enables support for Xilinx ZynqMP Family

endmenu
