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