menuconfig TZDEV
	bool "Samsung TZ Based Secure OS Support"
	default n
	depends on ARM || ARM64
	help
	  Samsung TZ Based Secure OS interface driver.

if TZDEV
config TZDEV_SK_PFNS_64BIT
	bool "Secure kernel works with 64-bit PFNs"
	default n
	help
	  Enables passing of PFNs into secure kernel as 64-bit values. Should
	  correspond to similar config in SK.

config TZDEV_USE_ARM_CALLING_CONVENTION
	bool "Comply to ARM calling convention"
	default y
	help
	  Comply to ARM calling convention. New software architectures use
	  EL3 code comply to this convention compared to old architectures
	  when Secure kernel contains non-compatible commands handler.

config TZDEV_CMA
	bool "Allocate TrustZone environment CMA region"
	depends on (CMA || DMA_CMA) && !ARCH_MSM
	default n
	help
	  Use CMA region to allocate TrustZone environment memory.

config TZDEV_MEMRESSZ
	hex "TrustZone environment memory reservation size"
	depends on TZDEV_CMA
	default 0x01000000
	help
	  Provide reservation of memory for usage in secure world - allocation size.

config TZDEV_MEMRESSZPROT
	hex "TrustZone environment memory reservation size - protected"
	depends on TZDEV_CMA
	help
	  Provide reservation of memory for usage in secure world - bootloader-protected size.

config TZDEV_MEMRESADDR
	hex "TrustZone environment memory reservation address"
	depends on TZDEV_CMA
	help
	  Provide reservation of memory for usage in secure world - allocation address.

config TZDEV_IWI_EVENT
	int "IWI_EVENT interrupt number"
	default 280 if ARCH_MSM
	default 125 if ARCH_EXYNOS3
	default 113 if ARCH_EXYNOS4
	default 501 if ARCH_EXYNOS5
	default 446 if ARCH_EXYNOS7

config TZDEV_IWI_PANIC
	int "IWI_PANIC interrupt number"
	default 0 if ARCH_MSM
	default 126 if ARCH_EXYNOS3
	default 114 if ARCH_EXYNOS4
	default 502 if ARCH_EXYNOS5
	default 447 if ARCH_EXYNOS7

config TZDEV_SWD_PANIC_IS_CRITICAL
	bool "Panic NWd if secure world panics"
	default n
	help
	  Enable support of NWd panic generation in tzdev when secure world panics.

config TZDEV_NWD_PANIC_ON_CLOSE
	bool "Panic NWd if tzdev is closed"
	default n
	help
	  Panic system on crash/close of NWd components.

config TZLOG
	bool "TZDEV LOGGER support"
	default n
	help
	  Enable support for Samsung Secure OS Logger.

config TZLOG_POLLING
	bool "TZDEV LOGGER polling"
	depends on TZLOG
	default n
	help
	  Enable periodic logs polling by TZDEV.

config TZLOG_POLLING_PERIOD
	int "TZDEV LOGGER polling period (in ms)"
	depends on TZLOG_POLLING
	default 100
	help
	  Define logs polling period in milliseconds. The resolution is 1/Hz ms
	  rounded down (e.g. for Hz = 100, value 117 would mean 110 ms period).

config TZLOG_PG_CNT
	int "TZDEV LOGGER per-CPU buffer size (in pages)"
	depends on TZLOG
	default 1
	help
	  Select TZDEV logger buffer size in pages per CPU.

config TZDEV_SK_MULTICORE
	bool "TZDEV SK multicore"
	default n
	help
	  Define if secure kernel can work in multicore mode.

config ION_FD2PHYS
	tristate "ION FD to physical address converter"
	depends on ION && (ARCH_EXYNOS || ARCH_MSM || ARCH_WHALE || ARCH_MT6755 || ARCH_MT6735 || ARCH_RANCHU || MACH_MT6757)
	default y
	help
	  Provide a method for userspace to get physical address from ION buffer
	  descriptor.

config TZIRS
	bool "Integrity reporting system"
	default n
	help
	  Enable Integrity reporintg system for Samsung Secure OS.

config TZTUI
	bool "Trusted user interface"
	default n
	help
	  Enable Trusted user interface support for Samsung Secure OS.

config TZDEV_HOTPLUG
	bool "Core hotplug"
	depends on HOTPLUG_CPU
	default n
	help
	  Enable CPU Cores requested by Samsung Secure OS.

config TZDEV_BOOST
	bool "TZ booster"
	depends on ARCH_EXYNOS
	default n
	help
	  Switch high performance cluster to maximum frequency by NWd client
	  request.

config TZ_BOOT_LOG
	bool "TZ boot stage log"
	default n
	help
	  Provide ability to print TZ boot stage logs.

config TZ_BOOT_LOG_PG_CNT
	int "TZ boot stage log buffer size (in pages)"
	depends on TZ_BOOT_LOG
	default 1
	help
	  Select TZ boot stage logger buffer size in pages.

config TZDEV_QC_CRYPTO_CLOCKS_MANAGEMENT
	bool "TZDEV crypto clock management"
	default n
	help
	  Enable QC HW crypto clock management.

config TZDEV_QC_CRYPTO_CLOCKS_USR_MNG
	bool "User crypto clock management"
	depends on TZDEV_QC_CRYPTO_CLOCKS_MANAGEMENT
	default n
	help
	  Enable QC HW crypto clock management from User space. If disabled,
	  QC HW clock disable/enable is done in TZDEV.

config TZDEV_DEBUG
	bool "Debug extensions"
	default n
	help
	  Debug extensions for samsung TZ Based Secure OS interface driver.

config TZ_NWFS
	bool "Normal world file system interface driver"
	default n
	help
	  Normal world file system interface driver.

config TZDEV_DEPLOY_TZAR
	bool "tzdev deploy startup.tzar"
	default n
	help
	  Deploy startup.tzar when tzdev init.

config TEEGRIS_VERSION
	int "TEEGRIS(SecureOS) version"
	default 2
	help
	  TEEGRIS built with specific version of SDK

choice
	prompt "Choose per-cpu kthread workers variant"
	default TZDEV_KTHREADS_NOTIFIER
	help
	  This option selects implementation to manage per-cpu kthreads.

	config TZDEV_KTHREADS_NOTIFIER
		bool "Use old-style cpu notifiers"
	config TZDEV_KTHREADS_SMPBOOT
		depends on TZDEV_SK_MULTICORE
		bool "Use smpboot hotplug subsystem"
endchoice

if TZDEV_DEBUG

config TZ_TELEMETRY
	bool "Telemetry module"
	select TZ_TRANSPORT
	default n
	help
	  Enable Telemetry module. It is used for collecting runtime information
	  about Secure OS state.

config TZPROFILER
	bool "TZDEV PROFILING support"
	default n
	help
	  Enable support for secure kernel and userspace profiling.

config TZPROFILER_BUF_PG_CNT
	int "TZDEV PROFILER buffer size (in pages)"
	depends on TZPROFILER
	default 1
	help
	  Select TZDEV profiler buffer size in pages. Profiler uses pool
	  of buffers. This is size of each buffer. Minimum size is a 1 page.
	  Select the sufficient size for profiling of the target.

config TZPROFILER_BUFS_CNT
	int "TZDEV PROFILER buffers quantity"
	depends on TZPROFILER
	default 20
	help
	  Select the sufficient pool size for profiling of the target.
	  Profiler uses two mechanisms for profiler data transferring.
	  1. Circular buffer.
	  2. Buffer replacing if according to the point 1 NWd had no time for
	     cleaning the previous buffer.
	  The profiler stops working if there are no free buffers in pool.

config TZ_PANIC_DUMP
	bool "TZ panic dump module"
	depends on TZDEV
	default n
	help
	  Enable panic dump module. This module allocates the buffer that will
	  receive SWd memory contents when secure kernel panic
	  occurs (if proper option is set in secure kernel config) and
	  provides interface for userspace to access said memory contents.

endif #TZDEV_DEBUG

endif #TZDEV
