# PF: IMX
# PFDESCR: NXP i.MX
# PFDEPENDS: ARM

choice
	prompt "NXP i.MX"
	default PF_IMX_51

config PF_IMX_21
	bool "i.MX21"
	depends on PF_IMX
	select CAN_ARM_CPU_926
	help
	  Choose for i.MX21.

config PF_IMX_28
	bool "i.MX28"
	depends on PF_IMX
	select CAN_ARM_CPU_926
	help
	  Choose for i.MX28.

config PF_IMX_35
	bool "i.MX35"
	depends on PF_IMX
	select CAN_ARM_CPU_1136
	help
	  Choose for i.MX35 platform.

config PF_IMX_51
	bool "i.MX51"
	depends on PF_IMX
	select CAN_ARM_CPU_CORTEX_A8
	select ARM_GIC
	select HAVE_ARM_GICV2
	help
	  Choose for i.MX51.

# remove comment when actually tested...
#config PF_IMX_53
#	bool "i.MX53"
#	depends on PF_IMX
#	select CAN_ARM_CPU_CORTEX_A8
#	help
#	  Choose for i.MX53.

config PF_IMX_6
	bool "i.MX6"
	depends on PF_IMX
	select CAN_ARM_CPU_CORTEX_A9
	select CAN_ARM_CACHE_L2CXX0
	select ARM_GIC
	select HAVE_ARM_GICV2
	help
	  Choose for i.MX6 platform.

config PF_IMX_6UL
	bool "i.MX6UL"
	depends on PF_IMX
	select CAN_ARM_CPU_CORTEX_A7
	select HAS_CPU_VIRT
	select ARM_GIC
	select HAVE_ARM_GICV2
	help
	  Choose for i.MX6UL platform.

config PF_IMX_7
	bool "i.MX7"
	depends on PF_IMX
	select CAN_ARM_CPU_CORTEX_A7
	select HAS_CPU_VIRT
	select HAS_ARM_PSCI
	select ARM_GIC
	select HAVE_ARM_GICV2
	help
	  Choose for i.MX7 platform.

config PF_IMX_8M
	bool "i.MX8M"
	depends on PF_IMX
	select CAN_ARM_CPU_CORTEX_A53
	select HAS_CPU_VIRT
	select HAS_ARM_PSCI
	select ARM_PSCI
	select ARM_GIC
	select HAVE_ARM_GICV3
	help
	  Choose for i.MX8M platforms.

config PF_IMX_8MP
	bool "i.MX8MP"
	depends on PF_IMX
	select CAN_ARM_CPU_CORTEX_A53
	select HAS_CPU_VIRT
	select HAS_ARM_PSCI
	select ARM_PSCI
	select ARM_GIC
	select HAVE_ARM_GICV3
	help
	  Choose for i.MX8MP platforms.

config PF_IMX_8XQ
	bool "i.MX8X and i.MX8Q"
	depends on PF_IMX
	select CAN_ARM_CPU_CORTEX_A35
	select CAN_ARM_CPU_CORTEX_A53
	select CAN_ARM_CPU_CORTEX_A72
	select HAS_CPU_VIRT
	select HAS_ARM_PSCI
	select ARM_PSCI
	select ARM_GIC
	select HAVE_ARM_GICV3
        select HAS_IOMMU_ARM_SMMU_500
	help
	  Choose for i.MX8X and i.MX8Q platforms.

config PF_IMX_95
	bool "i.MX95"
	depends on PF_IMX
	select CAN_ARM_CPU_CORTEX_A55
	select HAS_CPU_VIRT
	select HAS_ARM_PSCI
	select ARM_PSCI
	select ARM_GIC
	select HAVE_ARM_GICV3
	select HAS_IOMMU_ARM_SMMU_V3
	help
	  Choose for i.MX95 platform.

endchoice

config PF_IMX_RAM_PHYS_BASE
	hex
	default 0xc0000000 if PF_IMX_21
	default 0x40000000 if PF_IMX_28 || PF_IMX_8M
	default 0x40200000 if PF_IMX_8MP
	default 0x80200000 if PF_IMX_8XQ
	default 0x80000000 if PF_IMX_35 || PF_IMX_6UL || PF_IMX_7
	default 0x90000000 if PF_IMX_51
	default 0x90200000 if PF_IMX_95
	default 0x10000000 if PF_IMX_6

choice
	prompt "Choose timer for i.MX6"
	depends on ARM_CORTEX_A9
	default PF_IMX_6_TIMER_MPTIMER

config PF_IMX_6_TIMER_MPTIMER
	bool "Use CPU-local MP-timer"

config PF_IMX_6_TIMER_EPIT
	bool "Use EPIT timer"

endchoice

config ARM_IOMMU_MAX
	int
	default 1 if IOMMU
