47 lines · plain
1.. SPDX-License-Identifier: GPL-2.02 3=========================4TPM FIFO interface driver5=========================6 7TCG PTP Specification defines two interface types: FIFO and CRB. The former is8based on sequenced read and write operations, and the latter is based on a9buffer containing the full command or response.10 11FIFO (First-In-First-Out) interface is used by the tpm_tis_core dependent12drivers. Originally Linux had only a driver called tpm_tis, which covered13memory mapped (aka MMIO) interface but it was later on extended to cover other14physical interfaces supported by the TCG standard.15 16For historical reasons above the original MMIO driver is called tpm_tis and the17framework for FIFO drivers is named as tpm_tis_core. The postfix "tis" in18tpm_tis comes from the TPM Interface Specification, which is the hardware19interface specification for TPM 1.x chips.20 21Communication is based on a 20 KiB buffer shared by the TPM chip through a22hardware bus or memory map, depending on the physical wiring. The buffer is23further split into five equal-size 4 KiB buffers, which provide equivalent24sets of registers for communication between the CPU and TPM. These25communication endpoints are called localities in the TCG terminology.26 27When the kernel wants to send commands to the TPM chip, it first reserves28locality 0 by setting the requestUse bit in the TPM_ACCESS register. The bit is29cleared by the chip when the access is granted. Once it completes its30communication, the kernel writes the TPM_ACCESS.activeLocality bit. This31informs the chip that the locality has been relinquished.32 33Pending localities are served in order by the chip in descending order, one at34a 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 found40in section 3.2 of the TCG PC Client Platform TPM Profile Specification.41 42References43==========44 45TCG PC Client Platform TPM Profile (PTP) Specification46https://trustedcomputinggroup.org/resource/pc-client-platform-tpm-profile-ptp-specification/47