if ARCH_IMX8M

config IMX8M
	bool
	select HAS_CAAM
	select ROM_UNIFIED_SECTIONS

config IMX8MQ
	bool
	select IMX8M
	select ARMV8_SPL_EXCEPTION_VECTORS

config IMX8MM
	bool
	select IMX8M
	select ARMV8_SPL_EXCEPTION_VECTORS

config IMX8MN
	bool
	select IMX8M
	select ARMV8_SPL_EXCEPTION_VECTORS

config IMX8MP
	bool
	select IMX8M

config SYS_SOC
	default "imx8m"

config SECONDARY_BOOT_SECTOR_OFFSET
	hex "SD/MMC sector offset used for ROM secondary boot"
	default 0x0
	depends on IMX8MQ || IMX8MM
	help
	  Set the sector offset to non-zero value in SPL used for
	  secondary boot image. This value should be same as the
	  firstSectorNumber in secondary image table.

config SECURE_STICKY_BITS_LOCKUP
	bool "Enable workaround to fix sticky bits lock up issue"
	depends on IMX8MQ && IMX_HAB
	default y

config IMX_UNIQUE_ID
	hex "Enable workaround to fix sticky bits lock up issue"
	depends on IMX8MQ && IMX_HAB && !SECURE_STICKY_BITS_LOCKUP
	default 0x0

config IMX8M_MCU_RDC_START_CONFIG_ADDR
	hex "Start address of mcu rdc config when mcu starts"
	default 0x186000

config IMX8M_MCU_RDC_STOP_CONFIG_ADDR
	hex "Start address of mcu rdc config when mcu stops"
	default 0x187000

choice
	prompt "NXP i.MX8M board select"
	optional

config TARGET_IMX8MQ_CM
	bool "Ronetix iMX8MQ-CM SoM"
		select BINMAN
	select IMX8MQ
	select IMX8M_LPDDR4

config TARGET_IMX8MQ_EVK
	bool "imx8mq_evk"
	select IMX8MQ
	select IMX8M_LPDDR4
	select FSL_CAAM
	select FSL_BLOB
	select ARCH_MISC_INIT
	select SPL_CRYPTO if SPL

config TARGET_IMX8MQ_PHANBELL
	bool "imx8mq_phanbell"
	select BINMAN
	select IMX8MQ
	select IMX8M_LPDDR4

config TARGET_IMX8MQ_DDR3L_VAL
	bool "imx8mq_ddr3l_val"
	select IMX8MQ

config TARGET_IMX8MQ_DDR4_VAL
	bool "imx8mq_ddr4_val"
	select IMX8MQ
	select IMX8M_DDR4

config TARGET_IMX8MM_DDR4_VAL
	bool "imx8mm DDR4 validation board"
	select IMX8MM
	select SUPPORT_SPL
	select IMX8M_DDR4

config TARGET_IMX8MM_DDR3L_VAL
	bool "imx8mm DDR3L validation board"
	select IMX8MM
	select SUPPORT_SPL
	select IMX8M_DDR3L

config TARGET_IMX8MM_EVK
	bool "imx8mm LPDDR4 EVK board"
	select IMX8MM
	select SUPPORT_SPL
	select IMX8M_LPDDR4
	select FSL_CAAM
	select FSL_BLOB
	select ARCH_MISC_INIT
	select SPL_CRYPTO if SPL

config TARGET_IMX8MM_DDR4_EVK
	bool "imx8mm DDR4 EVK board"
	select IMX8MM
	select SUPPORT_SPL
	select IMX8M_DDR4
	select FSL_CAAM
	select FSL_BLOB
	select ARCH_MISC_INIT
	select SPL_CRYPTO if SPL

config TARGET_IMX8MM_AB2
	bool "imx8mm LPDDR4 Audio board 2.0"
	select IMX8MM
	select SUPPORT_SPL
	select IMX8M_LPDDR4
	select FSL_CAAM
	select FSL_BLOB
	select SPL_CRYPTO if SPL

config TARGET_IMX8MM_DDR4_AB2
	bool "imx8mm DDR4 Audio board 2.0"
	select IMX8MM
	select SUPPORT_SPL
	select IMX8M_DDR4
	select FSL_CAAM
	select FSL_BLOB
	select SPL_CRYPTO if SPL

config TARGET_IMX8MM_ICORE_MX8MM
	bool "Engicam i.Core MX8M Mini SOM"
	select IMX8MM
	select SUPPORT_SPL
	select IMX8M_LPDDR4
	help
	  i.Core MX8M Mini is an EDIMM SOM based on NXP i.MX8MM.

	  i.Core MX8M Mini EDIMM2.2:
	  * EDIMM2.2 is a Form Factor Capacitive Evaluation Board.
	  * i.Core MX8M Mini needs to mount on top of EDIMM2.2 for
	    creating complete i.Core MX8M Mini EDIMM2.2 Starter Kit.

	  i.Core MX8M Mini C.TOUCH 2.0
	  * C.TOUCH 2.0 is a general purpose Carrier board.
	  * i.Core MX8M Mini needs to mount on top of this Carrier board
	    for creating complete i.Core MX8M Mini C.TOUCH 2.0 board.

config TARGET_IMX8MM_VENICE
	bool "Support Gateworks Venice iMX8M Mini module"
	select BINMAN
	select IMX8MM
	select SUPPORT_SPL
	select IMX8M_LPDDR4

config TARGET_KONTRON_MX8MM
	bool "Kontron Electronics N80xx"
	select BINMAN
	select IMX8MM
	select SUPPORT_SPL
	select IMX8M_LPDDR4

config TARGET_IMX8MN_EVK
	bool "imx8mn LPDDR4 EVK board"
	select IMX8MN
	select SUPPORT_SPL
	select IMX8M_LPDDR4
	select FSL_CAAM
	select FSL_BLOB
	select SPL_CRYPTO if SPL

config TARGET_IMX8MN_DDR4_EVK
	bool "imx8mn DDR4 EVK board"
	select IMX8MN
	select SUPPORT_SPL
	select IMX8M_DDR4
	select FSL_CAAM
	select FSL_BLOB
	select SPL_CRYPTO if SPL

config TARGET_IMX8MN_DDR3_EVK
	bool "imx8mn 11x11 DDR3 EVK board"
	select IMX8MN
	select SUPPORT_SPL
	select IMX8M_DDR3L
	select FSL_CAAM
	select FSL_BLOB
	select SPL_CRYPTO if SPL

config TARGET_IMX8MN_AB2
	bool "imx8mn LPDDR4 Audio board 2.0"
	select IMX8MN
	select SUPPORT_SPL
	select IMX8M_LPDDR4
	select FSL_CAAM
	select FSL_BLOB
	select SPL_CRYPTO if SPL

config TARGET_IMX8MN_DDR4_AB2
	bool "imx8mn DDR4 Audio board 2.0"
	select IMX8MN
	select SUPPORT_SPL
	select IMX8M_DDR4
	select FSL_CAAM
	select FSL_BLOB
	select SPL_CRYPTO if SPL

config TARGET_IMX8MN_DDR3L_AB2
	bool "imx8mn DDR3L Audio board 2.0"
	select IMX8MN
	select SUPPORT_SPL
	select IMX8M_DDR3L
	select FSL_CAAM
	select FSL_BLOB
	select SPL_CRYPTO if SPL

config TARGET_IMX8MN_VENICE
	bool "Support Gateworks Venice iMX8M Nano module"
	select BINMAN
	select IMX8MN
	select SUPPORT_SPL
	select IMX8M_LPDDR4

config TARGET_IMX8MP_EVK
	bool "imx8mp LPDDR4 EVK board"
	select IMX8MP
	select SUPPORT_SPL
	select IMX8M_LPDDR4
	select FSL_CAAM
	select FSL_BLOB
	select ARCH_MISC_INIT
	select SPL_CRYPTO if SPL

config TARGET_IMX8MP_DDR4_EVK
	bool "imx8mp DDR4 EVK board"
	select IMX8MP
	select SUPPORT_SPL
	select IMX8M_DDR4
	select FSL_CAAM
	select FSL_BLOB
	select ARCH_MISC_INIT
	select SPL_CRYPTO if SPL

config TARGET_PICO_IMX8MQ
	bool "Support Technexion Pico iMX8MQ"
	select BINMAN
	select IMX8MQ
	select IMX8M_LPDDR4

config TARGET_IMX8MN_VAR_SOM
	bool "imx8mn_var_som"
	select BINMAN
	select IMX8MN
	select SUPPORT_SPL
	select IMX8M_DDR4

config TARGET_KONTRON_PITX_IMX8M
	bool "Support Kontron pITX-imx8m"
	select BINMAN
	select IMX8MQ
	select IMX8M_LPDDR4

config TARGET_VERDIN_IMX8MM
	bool "Support Toradex Verdin iMX8M Mini module"
	select BINMAN
	select IMX8MM
	select SUPPORT_SPL
	select IMX8M_LPDDR4

config TARGET_VERDIN_IMX8MP
	bool "Support Toradex Verdin iMX8M Plus module"
	select BINMAN
	select IMX8MP
	select SUPPORT_SPL
	select IMX8M_LPDDR4

config TARGET_IMX8MM_BEACON
	bool "imx8mm Beacon Embedded devkit"
	select BINMAN
	select IMX8MM
	select SUPPORT_SPL
	select IMX8M_LPDDR4

config TARGET_IMX8MN_BEACON
	bool "imx8mn Beacon Embedded devkit"
	select BINMAN
	select IMX8MN
	select SUPPORT_SPL
	select IMX8M_LPDDR4

config TARGET_PHYCORE_IMX8MM
	bool "PHYTEC PHYCORE i.MX8MM"
	select BINMAN
	select IMX8MM
	select SUPPORT_SPL
	select IMX8M_LPDDR4

config TARGET_PHYCORE_IMX8MP
	bool "PHYTEC PHYCORE i.MX8MP"
	select BINMAN
	select IMX8MP
	select SUPPORT_SPL
	select IMX8M_LPDDR4

config TARGET_IMX8MM_CL_IOT_GATE
	bool "CompuLab iot-gate-imx8"
	select BINMAN
	select IMX8MM
	select SUPPORT_SPL
	select IMX8M_LPDDR4
	select SUPPORT_EXTENSION_SCAN

config TARGET_IMX8MM_CL_IOT_GATE_OPTEE
	bool "CompuLab iot-gate-imx8 with optee support"
	select BINMAN
	select IMX8MM
	select SUPPORT_SPL
	select IMX8M_LPDDR4
	select SUPPORT_EXTENSION_SCAN

config TARGET_IMX8MP_RSB3720A1_4G
	bool "Support i.MX8MP RSB3720A1 4G"
	select BINMAN
	select IMX8MP
	select SUPPORT_SPL
	select IMX8M_LPDDR4

config TARGET_IMX8MP_RSB3720A1_6G
	bool "Support i.MX8MP RSB3720A1 6G"
	select BINMAN
	select IMX8MP
	select SUPPORT_SPL
	select IMX8M_LPDDR4
endchoice

source "board/advantech/imx8mp_rsb3720a1/Kconfig"
source "board/beacon/imx8mm/Kconfig"
source "board/beacon/imx8mn/Kconfig"
source "board/compulab/imx8mm-cl-iot-gate/Kconfig"
source "board/engicam/imx8mm/Kconfig"
source "board/freescale/imx8mq_evk/Kconfig"
source "board/freescale/imx8mq_val/Kconfig"
source "board/freescale/imx8mm_ab2/Kconfig"
source "board/freescale/imx8mm_evk/Kconfig"
source "board/freescale/imx8mm_val/Kconfig"
source "board/freescale/imx8mn_evk/Kconfig"
source "board/freescale/imx8mp_evk/Kconfig"
source "board/gateworks/venice/Kconfig"
source "board/google/imx8mq_phanbell/Kconfig"
source "board/kontron/pitx_imx8m/Kconfig"
source "board/kontron/sl-mx8mm/Kconfig"
source "board/phytec/phycore_imx8mm/Kconfig"
source "board/phytec/phycore_imx8mp/Kconfig"
source "board/ronetix/imx8mq-cm/Kconfig"
source "board/technexion/pico-imx8mq/Kconfig"
source "board/variscite/imx8mn_var_som/Kconfig"
source "board/toradex/verdin-imx8mm/Kconfig"
source "board/toradex/verdin-imx8mp/Kconfig"

endif
