config HAS_CAAM
	bool

config IMX_CONFIG
	string

config IMX_OPTEE
	bool "Support OP-TEE"
	help
	 Enable support for OP-TEE

config ROM_UNIFIED_SECTIONS
	bool

config SYSCOUNTER_TIMER
	bool

config GPT_TIMER
	bool

config FSL_CAAM_KB
	bool

config IMX_SEC_INIT
	bool
	help
		In most of i.MX board with CAAM this option is used
		to init RNG from U-Boot
	select FSL_CAAM_KB
	select SPL_CRYPTO_SUPPORT if SPL

config IMX_RDC
	bool "i.MX Resource domain controller driver"
	depends on ARCH_MX6 || ARCH_MX7
	help
	  i.MX Resource domain controller is used to assign masters
	  and peripherals to differet domains. This can be used to
	  isolate resources.

config IMX_BOOTAUX
	bool "Support boot auxiliary core"
	depends on ARCH_MX7 || ARCH_MX6 || ARCH_IMX8 || ARCH_IMX8M
	help
	  bootaux [addr] to boot auxiliary core.

config IMX_VSERVICE_SHARED_BUFFER
	hex "Define the buffer address used for virtual service"
	depends on IMX_VSERVICE
	help
	  IMX virtual service will use this buffer for exchanging data with remote core.

config IMX_VSERVICE_SHARED_BUFFER_SIZE
	hex "Define the size of buffer address used for virtual service"
	default 0x400000
	depends on IMX_VSERVICE
	help
	  The buffer size for IMX virtual service needs enough large to fit all possible message.

config IMX_VSERVICE
	bool
    select MISC
    select IMX_M4_MU
	help
	  This enables imx virtual service provides framework for imx virtual driver working.

config USE_IMXIMG_PLUGIN
	bool "Use imximage plugin code"
	depends on ARCH_MX7 || ARCH_MX6 || ARCH_MX7ULP
	help
	  i.MX6/7 supports DCD and Plugin. Enable this configuration
	  to use Plugin, otherwise DCD will be used.

config SECURE_BOOT
	bool "Support i.MX HAB features"
	depends on ARCH_MX7 || ARCH_MX6 || ARCH_MX5 || ARCH_MX7ULP || ARCH_IMX8M
	select FSL_CAAM if HAS_CAAM
	imply CMD_DEKBLOB if HAS_CAAM
	help
	  This option enables the support for secure boot (HAB).
	  See doc/README.mxc_hab for more details.

config CMD_BMODE
	bool "Support the 'bmode' command"
	default y
	depends on ARCH_MX6 || ARCH_MX5
	help
	  This enables the 'bmode' (bootmode) command for forcing
	  a boot from specific media.

	  This is useful for forcing the ROM's usb downloader to
	  activate upon a watchdog reset which is nice when iterating
	  on U-Boot.  Using the reset button or running bmode normal
	  will set it back to normal.  This command currently
	  supports i.MX53 and i.MX6.

config CMD_DEKBLOB
	bool "Support the 'dek_blob' command"
	help
	  This enables the 'dek_blob' command which is used with the
	  Freescale secure boot mechanism. This command encapsulates and
	  creates a blob of data. See also CMD_BLOB and doc/README.mxc_hab for
	  more information.

config CMD_PRIBLOB
	bool "Support the set_priblob_bitfield command"
	depends on HAS_CAAM && SECURE_BOOT
	help
	  This option enables the priblob command which can be used
		to set the priblob setting to 0x3.

config CMD_HDMIDETECT
	bool "Support the 'hdmidet' command"
	help
	  This enables the 'hdmidet' command which detects if an HDMI monitor
	  is connected.

config FSL_MFGPROT
	bool "Support the 'mfgprot' command"
	depends on SECURE_BOOT && ARCH_MX7
	help
	  This option enables the manufacturing protection command
	  which can be used has a protection feature for Manufacturing
	  process. With this tool is possible to authenticate the
	  chip to the OEM's server.

config DBG_MONITOR
	bool "Enable the AXI debug monitor"
	depends on ARCH_MX6 || ARCH_MX7
	help
	  This option enables the debug monitor which prints out last
	  failed AXI access info when system reboot is caused by AXI
	  access failure.

config NXP_BOARD_REVISION
	bool "Read NXP board revision from fuses"
	depends on ARCH_MX6 || ARCH_MX7
	help
	  NXP boards based on i.MX6/7 contain the board revision information
	  stored in the fuses. Select this option if you want to be able to
	  retrieve the board revision information.

config FLASH_MCUFIRMWARE_SUPPORT
	bool "Enable mcu firmware flash support"
	depends on ARCH_MX7ULP || ARCH_IMX8M
	help
	  This enables the mcu firmware flash support for some SOCs.

config DDRMC_VF610_CALIBRATION
	bool "Enable DDRMC (DDR3) on-chip calibration"
	depends on ARCH_VF610
	help
	  Vybrid (vf610) SoC provides some on-chip facility to tune the DDR3
	  memory parameters. Select this option if you want to calculate them
	  at boot time.
	  NOTE:
	  NXP does NOT recommend to perform this calibration at each boot. One
	  shall perform it on a new PCB and then use those values to program
	  the ddrmc_cr_setting on relevant board file.

config IMX_TRUSTY_OS
	bool "Support Trusty OS related feature"
	depends on ARCH_MX6 || ARCH_MX7 || ARCH_IMX8 || ARCH_IMX8M
	select SYS_ARM_CACHE_WRITEALLOC

config SYS_ARM_CACHE_WRITEALLOC
	bool "support cache write alloc"
