# 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
	tristate

config QCOM_SCM_DOWNLOAD_MODE_DEFAULT
	bool "Qualcomm download mode enabled by default"
	depends on QCOM_SCM
	help
	  A device with "download mode" enabled will upon an unexpected
	  warm-restart enter a special debug mode that allows the user to
	  "download" memory content over USB for offline postmortem analysis.
	  The feature can be enabled/disabled on the kernel command line.

	  Say Y here to enable "download mode" by default.

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
