linux/drivers/firmware/qcom/Kconfig

# SPDX-License-Identifier: GPL-2.0-only
#
# For a description of the syntax of this configuration file,
# see Documentation/kbuild/kconfig-language.rst.
#

menu "Qualcomm firmware drivers"

config QCOM_SCM
	select QCOM_TZMEM
	tristate

config QCOM_TZMEM
	tristate
	select GENERIC_ALLOCATOR

choice
	prompt "TrustZone interface memory allocator mode"
	depends on QCOM_TZMEM
	default QCOM_TZMEM_MODE_GENERIC
	help
	  Selects the mode of the memory allocator providing memory buffers of
	  suitable format for sharing with the TrustZone. If in doubt, select
	  'Generic'.

config QCOM_TZMEM_MODE_GENERIC
	bool "Generic"
	help
	  Use the generic allocator mode. The memory is page-aligned, non-cachable
	  and physically contiguous.

config QCOM_TZMEM_MODE_SHMBRIDGE
	bool "SHM Bridge"
	help
	  Use Qualcomm Shared Memory Bridge. The memory has the same alignment as
	  in the 'Generic' allocator but is also explicitly marked as an SHM Bridge
	  buffer.

	  With this selected, all buffers passed to the TrustZone must be allocated
	  using the TZMem allocator or else the TrustZone will refuse to use them.

endchoice

config QCOM_QSEECOM
	bool "Qualcomm QSEECOM interface driver"
	depends on QCOM_SCM=y
	select AUXILIARY_BUS
	help
	  Various Qualcomm SoCs have a Secure Execution Environment (SEE) running
	  in the Trust Zone. This module provides an interface to that via the
	  QSEECOM mechanism, using SCM calls.

	  The QSEECOM interface allows, among other things, access to applications
	  running in the SEE. An example of such an application is 'uefisecapp',
	  which is required to access UEFI variables on certain systems. If
	  selected, the interface will also attempt to detect and register client
	  devices for supported applications.

	  Select Y here to enable the QSEECOM interface driver.

config QCOM_QSEECOM_UEFISECAPP
	bool "Qualcomm SEE UEFI Secure App client driver"
	depends on QCOM_QSEECOM
	depends on EFI
	help
	  Various Qualcomm SoCs do not allow direct access to EFI variables.
	  Instead, these need to be accessed via the UEFI Secure Application
	  (uefisecapp), residing in the Secure Execution Environment (SEE).

	  This module provides a client driver for uefisecapp, installing efivar
	  operations to allow the kernel accessing EFI variables, and via that also
	  provide user-space with access to EFI variables via efivarfs.

	  Select Y here to provide access to EFI variables on the aforementioned
	  platforms.

endmenu