1.. SPDX-License-Identifier: GPL-2.0 2 3========================= 4TPM FIFO interface driver 5========================= 6 7TCG PTP Specification defines two interface types: FIFO and CRB. The former is 8based on sequenced read and write operations, and the latter is based on a 9buffer containing the full command or response. 10 11FIFO (First-In-First-Out) interface is used by the tpm_tis_core dependent 12drivers. Originally Linux had only a driver called tpm_tis, which covered 13memory mapped (aka MMIO) interface but it was later on extended to cover other 14physical interfaces supported by the TCG standard. 15 16For historical reasons above the original MMIO driver is called tpm_tis and the 17framework for FIFO drivers is named as tpm_tis_core. The postfix "tis" in 18tpm_tis comes from the TPM Interface Specification, which is the hardware 19interface specification for TPM 1.x chips. 20 21Communication is based on a 20 KiB buffer shared by the TPM chip through a 22hardware bus or memory map, depending on the physical wiring. The buffer is 23further split into five equal-size 4 KiB buffers, which provide equivalent 24sets of registers for communication between the CPU and TPM. These 25communication endpoints are called localities in the TCG terminology. 26 27When the kernel wants to send commands to the TPM chip, it first reserves 28locality 0 by setting the requestUse bit in the TPM_ACCESS register. The bit is 29cleared by the chip when the access is granted. Once it completes its 30communication, the kernel writes the TPM_ACCESS.activeLocality bit. This 31informs the chip that the locality has been relinquished. 32 33Pending localities are served in order by the chip in descending order, one at 34a time: 35 36- Locality 0 has the lowest priority. 37- Locality 5 has the highest priority. 38 39Further information on the purpose and meaning of the localities can be found 40in section 3.2 of the TCG PC Client Platform TPM Profile Specification. 41 42References 43========== 44 45TCG PC Client Platform TPM Profile (PTP) Specification 46https://trustedcomputinggroup.org/resource/pc-client-platform-tpm-profile-ptp-specification/ 47