| 1 | # SPDX-License-Identifier: GPL-2.0-only |
| 2 | # |
| 3 | # For a description of the syntax of this configuration file, |
| 4 | # see Documentation/kbuild/kconfig-language.rst. |
| 5 | # |
| 6 | |
| 7 | menu "Qualcomm firmware drivers" |
| 8 | |
| 9 | config QCOM_PAS |
| 10 | tristate "Qualcomm generic PAS interface driver" |
| 11 | help |
| 12 | Enable the generic Peripheral Authentication Service (PAS) provided |
| 13 | by the firmware. It acts as the common layer with different TZ |
| 14 | backends plugged in whether it's an SCM implementation or a proper |
| 15 | TEE bus based PAS service implementation. |
| 16 | |
| 17 | config QCOM_PAS_TEE |
| 18 | tristate "Qualcomm PAS TEE interface driver" |
| 19 | select QCOM_PAS |
| 20 | depends on TEE |
| 21 | depends on !CPU_BIG_ENDIAN |
| 22 | default m if ARCH_QCOM |
| 23 | help |
| 24 | Enable the generic Peripheral Authentication Service (PAS) provided |
| 25 | by the firmware TEE implementation as the backend. |
| 26 | |
| 27 | config QCOM_SCM |
| 28 | tristate "Qualcomm PAS SCM interface driver" |
| 29 | select QCOM_PAS |
| 30 | select QCOM_TZMEM |
| 31 | default y if ARCH_QCOM |
| 32 | |
| 33 | config QCOM_TZMEM |
| 34 | tristate |
| 35 | select GENERIC_ALLOCATOR |
| 36 | |
| 37 | choice |
| 38 | prompt "TrustZone interface memory allocator mode" |
| 39 | depends on QCOM_TZMEM |
| 40 | default QCOM_TZMEM_MODE_GENERIC |
| 41 | help |
| 42 | Selects the mode of the memory allocator providing memory buffers of |
| 43 | suitable format for sharing with the TrustZone. If in doubt, select |
| 44 | 'Generic'. |
| 45 | |
| 46 | config QCOM_TZMEM_MODE_GENERIC |
| 47 | bool "Generic" |
| 48 | help |
| 49 | Use the generic allocator mode. The memory is page-aligned, non-cachable |
| 50 | and physically contiguous. |
| 51 | |
| 52 | config QCOM_TZMEM_MODE_SHMBRIDGE |
| 53 | bool "SHM Bridge" |
| 54 | help |
| 55 | Use Qualcomm Shared Memory Bridge. The memory has the same alignment as |
| 56 | in the 'Generic' allocator but is also explicitly marked as an SHM Bridge |
| 57 | buffer. |
| 58 | |
| 59 | With this selected, all buffers passed to the TrustZone must be allocated |
| 60 | using the TZMem allocator or else the TrustZone will refuse to use them. |
| 61 | |
| 62 | endchoice |
| 63 | |
| 64 | config QCOM_QSEECOM |
| 65 | bool "Qualcomm QSEECOM interface driver" |
| 66 | depends on QCOM_SCM=y |
| 67 | select AUXILIARY_BUS |
| 68 | help |
| 69 | Various Qualcomm SoCs have a Secure Execution Environment (SEE) running |
| 70 | in the Trust Zone. This module provides an interface to that via the |
| 71 | QSEECOM mechanism, using SCM calls. |
| 72 | |
| 73 | The QSEECOM interface allows, among other things, access to applications |
| 74 | running in the SEE. An example of such an application is 'uefisecapp', |
| 75 | which is required to access UEFI variables on certain systems. If |
| 76 | selected, the interface will also attempt to detect and register client |
| 77 | devices for supported applications. |
| 78 | |
| 79 | Select Y here to enable the QSEECOM interface driver. |
| 80 | |
| 81 | config QCOM_QSEECOM_UEFISECAPP |
| 82 | bool "Qualcomm SEE UEFI Secure App client driver" |
| 83 | depends on QCOM_QSEECOM |
| 84 | depends on EFI |
| 85 | help |
| 86 | Various Qualcomm SoCs do not allow direct access to EFI variables. |
| 87 | Instead, these need to be accessed via the UEFI Secure Application |
| 88 | (uefisecapp), residing in the Secure Execution Environment (SEE). |
| 89 | |
| 90 | This module provides a client driver for uefisecapp, installing efivar |
| 91 | operations to allow the kernel accessing EFI variables, and via that also |
| 92 | provide user-space with access to EFI variables via efivarfs. |
| 93 | |
| 94 | Select Y here to provide access to EFI variables on the aforementioned |
| 95 | platforms. |
| 96 | |
| 97 | endmenu |