menuconfig ARCH_MXC
	bool "Freescale i.MX family" if ARCH_MULTI_V4_V5 || ARCH_MULTI_V6_V7
	select ARCH_REQUIRE_GPIOLIB
	select ARM_CPU_SUSPEND if PM
	select CLKSRC_MMIO
	select GENERIC_IRQ_CHIP
	select PINCTRL
	select PM_OPP if PM
	select SOC_BUS
	select SRAM
	help
	  Support for Freescale MXC/iMX-based family of processors

if ARCH_MXC

config MXC_TZIC
	bool

config MXC_AVIC
	bool

config MXC_DEBUG_BOARD
	bool "Enable MXC debug board(for 3-stack)"
	depends on MACH_MX27_3DS || MACH_MX31_3DS || MACH_MX35_3DS
	help
	  The debug board is an integral part of the MXC 3-stack(PDK)
	  platforms, it can be attached or removed from the peripheral
	  board. On debug board, several debug devices(ethernet, UART,
	  buttons, LEDs and JTAG) are implemented. Between the MCU and
	  these devices, a CPLD is added as a bridge which performs
	  data/address de-multiplexing and decode, signal level shift,
	  interrupt control and various board functions.

config HAVE_EPIT
	bool

config MXC_USE_EPIT
	bool "Use EPIT instead of GPT"
	depends on HAVE_EPIT
	help
	  Use EPIT as the system timer on systems that have it. Normally you
	  don't have a reason to do so as the EPIT has the same features and
	  uses the same clocks as the GPT. Anyway, on some systems the GPT
	  may be in use for other purposes.

config ARCH_HAS_RNGA
	bool

config HAVE_IMX_RNG
       bool

config HAVE_IMX_ANATOP
	bool

config HAVE_IMX_GPC
	bool
	select PM_GENERIC_DOMAINS if PM

config HAVE_IMX_GPCV2
	bool
	select PM_GENERIC_DOMAINS if PM

config HAVE_IMX_MMDC
	bool

config HAVE_IMX_AMP
	bool

config HAVE_IMX_DDRC
	bool

config HAVE_IMX_RPMSG
	bool

config HAVE_IMX_SRC
	def_bool y if SMP
	select ARCH_HAS_RESET_CONTROLLER

config IMX_HAVE_IOMUX_V1
	bool

config ARCH_MXC_IOMUX_V3
	bool

config SOC_IMX1
	bool
	select CPU_ARM920T
	select IMX_HAVE_IOMUX_V1
	select MXC_AVIC
	select PINCTRL_IMX1

config SOC_IMX21
	bool
	select CPU_ARM926T
	select IMX_HAVE_IOMUX_V1
	select MXC_AVIC

config SOC_IMX27
	bool
	select CPU_ARM926T
	select IMX_HAVE_IOMUX_V1
	select MXC_AVIC
	select PINCTRL_IMX27

config SOC_IMX31
	bool
	select CPU_V6
	select IMX_HAVE_PLATFORM_MXC_RNGA
	select MXC_AVIC
	select SMP_ON_UP if SMP

config SOC_IMX35
	bool
	select ARCH_MXC_IOMUX_V3
	select HAVE_EPIT
	select MXC_AVIC
	select PINCTRL_IMX35
	select SMP_ON_UP if SMP

if ARCH_MULTI_V4T

comment "MX1 platforms:"

config MACH_SCB9328
	bool "Synertronixx scb9328"
	select IMX_HAVE_PLATFORM_IMX_UART
	select SOC_IMX1
	help
	  Say Y here if you are using a Synertronixx scb9328 board

config MACH_APF9328
	bool "APF9328"
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_UART
	select SOC_IMX1
	help
	  Say Yes here if you are using the Armadeus APF9328 development board

config MACH_IMX1_DT
	bool "Support i.MX1 platforms from device tree"
	select SOC_IMX1
	help
	  Include support for Freescale i.MX1 based platforms
	  using the device tree for discovery.

endif

if ARCH_MULTI_V5

comment "MX21 platforms:"

config MACH_MX21ADS
	bool "MX21ADS platform"
	select IMX_HAVE_PLATFORM_IMX_FB
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_MXC_MMC
	select IMX_HAVE_PLATFORM_MXC_NAND
	select SOC_IMX21
	help
	  Include support for MX21ADS platform. This includes specific
	  configurations for the board and its peripherals.

comment "MX27 platforms:"

config MACH_MX27ADS
	bool "MX27ADS platform"
	select IMX_HAVE_PLATFORM_IMX_FB
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_MXC_MMC
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_MXC_W1
	select SOC_IMX27
	help
	  Include support for MX27ADS platform. This includes specific
	  configurations for the board and its peripherals.

config MACH_MX27_3DS
	bool "MX27PDK platform"
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_IMX2_WDT
	select IMX_HAVE_PLATFORM_IMX_FB
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_KEYPAD
	select IMX_HAVE_PLATFORM_IMX_SSI
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_MX2_CAMERA
	select IMX_HAVE_PLATFORM_MXC_EHCI
	select IMX_HAVE_PLATFORM_MXC_MMC
	select IMX_HAVE_PLATFORM_SPI_IMX
	select MXC_DEBUG_BOARD
	select USB_ULPI_VIEWPORT if USB_ULPI
	select SOC_IMX27
	help
	  Include support for MX27PDK platform. This includes specific
	  configurations for the board and its peripherals.

config MACH_IMX27_VISSTRIM_M10
	bool "Vista Silicon i.MX27 Visstrim_m10"
	select IMX_HAVE_PLATFORM_GPIO_KEYS
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_SSI
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_MX2_CAMERA
	select IMX_HAVE_PLATFORM_MX2_EMMA
	select IMX_HAVE_PLATFORM_MXC_EHCI
	select IMX_HAVE_PLATFORM_MXC_MMC
	select LEDS_GPIO_REGISTER
	select SOC_IMX27
	help
	  Include support for Visstrim_m10 platform and its different variants.
	  This includes specific configurations for the board and its
	  peripherals.

config MACH_PCA100
	bool "Phytec phyCARD-s (pca100)"
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_IMX2_WDT
	select IMX_HAVE_PLATFORM_IMX_FB
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_SSI
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_MXC_EHCI
	select IMX_HAVE_PLATFORM_MXC_MMC
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_MXC_W1
	select IMX_HAVE_PLATFORM_SPI_IMX
	select USB_ULPI_VIEWPORT if USB_ULPI
	select SOC_IMX27
	help
	  Include support for phyCARD-s (aka pca100) platform. This
	  includes specific configurations for the module and its peripherals.

config MACH_IMX27_DT
	bool "Support i.MX27 platforms from device tree"
	select SOC_IMX27
	help
	  Include support for Freescale i.MX27 based platforms
	  using the device tree for discovery

endif

if ARCH_MULTI_V6

comment "MX31 platforms:"

config MACH_MX31ADS
	bool "Support MX31ADS platforms"
	default y
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_SSI
	select IMX_HAVE_PLATFORM_IMX_UART
	select SOC_IMX31
	help
	  Include support for MX31ADS platform. This includes specific
	  configurations for the board and its peripherals.

config MACH_MX31ADS_WM1133_EV1
	bool "Support Wolfson Microelectronics 1133-EV1 module"
	depends on MACH_MX31ADS
	depends on MFD_WM8350_I2C
	depends on REGULATOR_WM8350 = y
	help
	  Include support for the Wolfson Microelectronics 1133-EV1 PMU
	  and audio module for the MX31ADS platform.

config MACH_MX31LILLY
	bool "Support MX31 LILLY-1131 platforms (INCO startec)"
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_IPU_CORE
	select IMX_HAVE_PLATFORM_MXC_EHCI
	select IMX_HAVE_PLATFORM_MXC_MMC
	select IMX_HAVE_PLATFORM_SPI_IMX
	select USB_ULPI_VIEWPORT if USB_ULPI
	select SOC_IMX31
	help
	  Include support for mx31 based LILLY1131 modules. This includes
	  specific configurations for the board and its peripherals.

config MACH_MX31LITE
	bool "Support MX31 LITEKIT (LogicPD)"
	select IMX_HAVE_PLATFORM_IMX2_WDT
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_MXC_EHCI
	select IMX_HAVE_PLATFORM_MXC_MMC
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_MXC_RTC
	select IMX_HAVE_PLATFORM_SPI_IMX
	select LEDS_GPIO_REGISTER
	select USB_ULPI_VIEWPORT if USB_ULPI
	select SOC_IMX31
	help
	  Include support for MX31 LITEKIT platform. This includes specific
	  configurations for the board and its peripherals.

config MACH_PCM037
	bool "Support Phytec pcm037 (i.MX31) platforms"
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_IMX2_WDT
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_IPU_CORE
	select IMX_HAVE_PLATFORM_MXC_EHCI
	select IMX_HAVE_PLATFORM_MXC_MMC
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_MXC_W1
	select USB_ULPI_VIEWPORT if USB_ULPI
	select SOC_IMX31
	help
	  Include support for Phytec pcm037 platform. This includes
	  specific configurations for the board and its peripherals.

config MACH_PCM037_EET
	bool "Support pcm037 EET board extensions"
	depends on MACH_PCM037
	select IMX_HAVE_PLATFORM_GPIO_KEYS
	select IMX_HAVE_PLATFORM_SPI_IMX
	help
	  Add support for PCM037 EET baseboard extensions. If you are using the
	  OLED display with EET, use "video=mx3fb:CMEL-OLED" kernel
	  command-line parameter.

config MACH_MX31_3DS
	bool "Support MX31PDK (3DS)"
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_IMX2_WDT
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_KEYPAD
	select IMX_HAVE_PLATFORM_IMX_SSI
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_IPU_CORE
	select IMX_HAVE_PLATFORM_MXC_EHCI
	select IMX_HAVE_PLATFORM_MXC_MMC
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_SPI_IMX
	select MXC_DEBUG_BOARD
	select USB_ULPI_VIEWPORT if USB_ULPI
	select SOC_IMX31
	help
	  Include support for MX31PDK (3DS) platform. This includes specific
	  configurations for the board and its peripherals.

config MACH_MX31_3DS_MXC_NAND_USE_BBT
	bool "Make the MXC NAND driver use the in flash Bad Block Table"
	depends on MACH_MX31_3DS
	depends on MTD_NAND_MXC
	help
	  Enable this if you want that the MXC NAND driver uses the in flash
	  Bad Block Table to know what blocks are bad instead of scanning the
	  entire flash looking for bad block markers.

config MACH_MX31MOBOARD
	bool "Support mx31moboard platforms (EPFL Mobots group)"
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_IMX2_WDT
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_SSI
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_IPU_CORE
	select IMX_HAVE_PLATFORM_MXC_EHCI
	select IMX_HAVE_PLATFORM_MXC_MMC
	select IMX_HAVE_PLATFORM_SPI_IMX
	select LEDS_GPIO_REGISTER
	select USB_ULPI_VIEWPORT if USB_ULPI
	select SOC_IMX31
	help
	  Include support for mx31moboard platform. This includes specific
	  configurations for the board and its peripherals.

config MACH_QONG
	bool "Support Dave/DENX QongEVB-LITE platform"
	select IMX_HAVE_PLATFORM_IMX2_WDT
	select IMX_HAVE_PLATFORM_IMX_UART
	select SOC_IMX31
	help
	  Include support for Dave/DENX QongEVB-LITE platform. This includes
	  specific configurations for the board and its peripherals.

config MACH_ARMADILLO5X0
	bool "Support Atmark Armadillo-500 Development Base Board"
	select IMX_HAVE_PLATFORM_GPIO_KEYS
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_IPU_CORE
	select IMX_HAVE_PLATFORM_MXC_EHCI
	select IMX_HAVE_PLATFORM_MXC_MMC
	select IMX_HAVE_PLATFORM_MXC_NAND
	select USB_ULPI_VIEWPORT if USB_ULPI
	select SOC_IMX31
	help
	  Include support for Atmark Armadillo-500 platform. This includes
	  specific configurations for the board and its peripherals.

config MACH_KZM_ARM11_01
	bool "Support KZM-ARM11-01(Kyoto Microcomputer)"
	select IMX_HAVE_PLATFORM_IMX_UART
	select SOC_IMX31
	help
	  Include support for KZM-ARM11-01. This includes specific
	  configurations for the board and its peripherals.

config MACH_BUG
	bool "Support Buglabs BUGBase platform"
	default y
	select IMX_HAVE_PLATFORM_IMX_UART
	select SOC_IMX31
	help
	  Include support for BUGBase 1.3 platform. This includes specific
	  configurations for the board and its peripherals.

config MACH_IMX31_DT
	bool "Support i.MX31 platforms from device tree"
	select SOC_IMX31
	help
	  Include support for Freescale i.MX31 based platforms
	  using the device tree for discovery.

comment "MX35 platforms:"

config MACH_IMX35_DT
	bool "Support i.MX35 platforms from device tree"
	select SOC_IMX35
	help
	  Include support for Freescale i.MX35 based platforms
	  using the device tree for discovery.

config MACH_PCM043
	bool "Support Phytec pcm043 (i.MX35) platforms"
	select IMX_HAVE_PLATFORM_FLEXCAN
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_IMX2_WDT
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_SSI
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_IPU_CORE
	select IMX_HAVE_PLATFORM_MXC_EHCI
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
	select USB_ULPI_VIEWPORT if USB_ULPI
	select SOC_IMX35
	help
	  Include support for Phytec pcm043 platform. This includes
	  specific configurations for the board and its peripherals.

config MACH_MX35_3DS
	bool "Support MX35PDK platform"
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_IMX2_WDT
	select IMX_HAVE_PLATFORM_IMX_FB
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_IPU_CORE
	select IMX_HAVE_PLATFORM_MXC_EHCI
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_MXC_RTC
	select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
	select MXC_DEBUG_BOARD
	select SOC_IMX35
	help
	  Include support for MX35PDK platform. This includes specific
	  configurations for the board and its peripherals.

config MACH_EUKREA_CPUIMX35SD
	bool "Support Eukrea CPUIMX35 Platform"
	select IMX_HAVE_PLATFORM_FLEXCAN
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_IMX2_WDT
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_MXC_EHCI
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
	select USB_ULPI_VIEWPORT if USB_ULPI
	select SOC_IMX35
	help
	  Include support for Eukrea CPUIMX35 platform. This includes
	  specific configurations for the board and its peripherals.

choice
	prompt "Baseboard"
	depends on MACH_EUKREA_CPUIMX35SD
	default MACH_EUKREA_MBIMXSD35_BASEBOARD

config MACH_EUKREA_MBIMXSD35_BASEBOARD
	bool "Eukrea MBIMXSD development board"
	select IMX_HAVE_PLATFORM_GPIO_KEYS
	select IMX_HAVE_PLATFORM_IMX_SSI
	select IMX_HAVE_PLATFORM_IPU_CORE
	select IMX_HAVE_PLATFORM_SPI_IMX
	select LEDS_GPIO_REGISTER
	help
	  This adds board specific devices that can be found on Eukrea's
	  MBIMXSD evaluation board.

endchoice

config MACH_VPR200
	bool "Support VPR200 platform"
	select IMX_HAVE_PLATFORM_FSL_USB2_UDC
	select IMX_HAVE_PLATFORM_GPIO_KEYS
	select IMX_HAVE_PLATFORM_IMX2_WDT
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_IPU_CORE
	select IMX_HAVE_PLATFORM_MXC_EHCI
	select IMX_HAVE_PLATFORM_MXC_NAND
	select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
	select SOC_IMX35
	help
	  Include support for VPR200 platform. This includes specific
	  configurations for the board and its peripherals.

endif

if ARCH_MULTI_V5

comment "Device tree only"

config SOC_IMX25
	bool "i.MX25 support"
	select ARCH_MXC_IOMUX_V3
	select CPU_ARM926T
	select MXC_AVIC
	select PINCTRL_IMX25
	help
	  This enables support for Freescale i.MX25 processor
endif

if ARCH_MULTI_V7

comment "Device tree only"

config SOC_IMX5
	bool
	select HAVE_IMX_SRC
	select MXC_TZIC

config	SOC_IMX50
	bool "i.MX50 support"
	select PINCTRL_IMX50
	select SOC_IMX5

	help
	  This enables support for Freescale i.MX50 processor.

config SOC_IMX51
	bool "i.MX51 support"
	select PINCTRL_IMX51
	select SOC_IMX5
	help
	  This enables support for Freescale i.MX51 processor

config	SOC_IMX53
	bool "i.MX53 support"
	select PINCTRL_IMX53
	select SOC_IMX5

	help
	  This enables support for Freescale i.MX53 processor.

config SOC_IMX6
	bool
	select ARM_ERRATA_754322
	select ARM_ERRATA_775420
	select ARM_GIC
	select HAVE_IMX_ANATOP
	select HAVE_IMX_GPC
	select HAVE_IMX_MMDC
	select HAVE_IMX_SRC
	select MFD_SYSCON
	select HAVE_ARM_SCU if SMP
	select HAVE_ARM_TWD if SMP
	select PL310_ERRATA_769419 if CACHE_L2X0

config SOC_IMX6Q
	bool "i.MX6 Quad/DualLite support"
	select ARM_ERRATA_764369 if SMP
	select PCI_DOMAINS if PCI
	select PINCTRL_IMX6Q
	select SOC_IMX6
	select MXC_MLB150

	help
	  This enables support for Freescale i.MX6 Quad processor.

config SOC_IMX6SL
	bool "i.MX6 SoloLite support"
	select HAVE_IMX_RNG
	select PINCTRL_IMX6SL
	select SOC_IMX6

	help
	  This enables support for Freescale i.MX6 SoloLite processor.

config SOC_IMX6SX
	bool "i.MX6 SoloX support"
	select PINCTRL_IMX6SX
	select HAVE_IMX_AMP
	select SOC_IMX6
	select HAVE_IMX_RPMSG
	select RPMSG
	select IMX_SEMA4
	select MXC_MLB150
	select KEYBOARD_SNVS_PWRKEY

	help
	  This enables support for Freescale i.MX6 SoloX processor.

config SOC_IMX6UL
	bool "i.MX6 UltraLite support"
	select PINCTRL_IMX6UL
	select SOC_IMX6
	select KEYBOARD_SNVS_PWRKEY
	select ARM_ERRATA_814220

	help
	  This enables support for Freescale i.MX6 UltraLite processor.

config SOC_IMX7
	bool
	select CPU_V7
	select ARM_GIC
	select HAVE_SMP
	select HAVE_IMX_ANATOP
	select HAVE_IMX_SRC
	select HAVE_IMX_DDRC
	select HAVE_IMX_GPCV2
	select ARM_ERRATA_814220

config SOC_IMX7D
	bool "i.MX7 Dual support"
	select SOC_IMX7
	select PCI_DOMAINS if PCI
	select PINCTRL_IMX7D
	select HAVE_IMX_RPMSG
	select RPMSG
	select KEYBOARD_SNVS_PWRKEY

	help
	  This enables support for Freescale i.MX7 Dual processor.

config MACH_DIAMOND3
	bool "Nest Diamond3 Platform"

config MACH_DIAMOND3_HIGH_CPU_CLK
	bool "Allow 792Mhz cpu clock for D3"
	depends on MACH_DIAMOND3

config SOC_24MHZ_CLOCK_IN_STOP_MODE
	bool "Keep the 24MHz clock running while CPU is in STOP Mode"
	depends on SOC_IMX6
	help
	  Say No here unless you know what you're getting in to.
	  This is specifically added to support an audio feature on the
	  Flores boards that should have been implemented using the
	  32k clock.

config SOC_VF610
	bool "Vybrid Family VF610 support"
	select IRQ_DOMAIN_HIERARCHY
	select ARM_GIC
	select PINCTRL_VF610
	select PL310_ERRATA_769419 if CACHE_L2X0
	select SMP_ON_UP if SMP

	help
	  This enables support for Freescale Vybrid VF610 processor.

choice
	prompt "Clocksource for scheduler clock"
	depends on SOC_VF610
	default VF_USE_ARM_GLOBAL_TIMER

	config VF_USE_ARM_GLOBAL_TIMER
		bool "Use ARM Global Timer"
		select ARM_GLOBAL_TIMER
		select CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK
		help
		  Use the ARM Global Timer as clocksource

	config VF_USE_PIT_TIMER
		bool "Use PIT timer"
		select VF_PIT_TIMER
		help
		  Use SoC Periodic Interrupt Timer (PIT) as clocksource

endchoice

config SOC_LS1021A
	bool "Freescale LS1021A support"
	select ARM_GIC
	select HAVE_ARM_ARCH_TIMER
	select PCI_DOMAINS if PCI
	select ZONE_DMA if ARM_LPAE

	help
	  This enables support for Freescale LS1021A processor.

endif

source "arch/arm/mach-imx/devices/Kconfig"

endif
