xref: /linux/Documentation/security/tpm/tpm_tis.rst (revision 4b132aacb0768ac1e652cf517097ea6f237214b9)
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