linux-stable/drivers/char/tpm
Duncan Laurie 3a253caaad char: tpm: add i2c driver for cr50
Add TPM 2.0 compatible I2C interface for chips with cr50 firmware.

The firmware running on the currently supported H1 MCU requires a
special driver to handle its specific protocol, and this makes it
unsuitable to use tpm_tis_core_* and instead it must implement the
underlying TPM protocol similar to the other I2C TPM drivers.

- All 4 bytes of status register must be read/written at once.
- FIFO and burst count is limited to 63 and must be drained by AP.
- Provides an interrupt to indicate when read response data is ready
and when the TPM is finished processing write data.

This driver is based on the existing infineon I2C TPM driver, which
most closely matches the cr50 i2c protocol behavior.

Signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Signed-off-by: Stephen Boyd <swboyd@chromium.org>
Signed-off-by: Fabien Lahoudere <fabien.lahoudere@collabora.com>
Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
Tested-by: Adrian Ratiu <adrian.ratiu@collabora.com>
Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
2021-02-16 10:40:27 +02:00
..
eventlog tpm: Fix fall-through warnings for Clang 2021-02-16 10:40:27 +02:00
st33zp24 tpm/st33zp24: fix spelling mistake "drescription" -> "description" 2020-07-02 17:49:00 +03:00
Kconfig char: tpm: add i2c driver for cr50 2021-02-16 10:40:27 +02:00
Makefile char: tpm: add i2c driver for cr50 2021-02-16 10:40:27 +02:00
tpm-chip.c tpm: Unify the mismatching TPM space buffer sizes 2020-07-24 09:26:23 +03:00
tpm-dev-common.c tpm: Fix TIS locality timeout problems 2020-07-02 17:48:59 +03:00
tpm-dev.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441 2019-06-05 17:37:17 +02:00
tpm-dev.h tpm: Handle negative priv->response_len in tpm_common_read() 2020-01-08 18:11:09 +02:00
tpm-interface.c tpm: fix wrong return value in tpm_pcr_extend 2020-04-21 00:06:13 +03:00
tpm-sysfs.c tpm: use %*ph to print small buffer 2020-10-02 00:21:03 +03:00
tpm.h tpm: Unify the mismatching TPM space buffer sizes 2020-07-24 09:26:23 +03:00
tpm1-cmd.c tpm: provide a way to override the chip returned durations 2019-11-12 21:45:36 +02:00
tpm2-cmd.c tpm: Export tpm2_get_cc_attrs_tbl for ibmvtpm driver as module 2020-04-21 00:06:13 +03:00
tpm2-space.c tpm: Unify the mismatching TPM space buffer sizes 2020-07-24 09:26:23 +03:00
tpm_atmel.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441 2019-06-05 17:37:17 +02:00
tpm_atmel.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441 2019-06-05 17:37:17 +02:00
tpm_crb.c tpm_crb: fix fTPM on AMD Zen+ CPUs 2019-11-12 21:45:37 +02:00
tpm_ftpm_tee.c Enable multi-stage OP-TEE bus enumeration 2020-07-13 15:11:44 +02:00
tpm_ftpm_tee.h tpm/tpm_ftpm_tee: A driver for firmware TPM running inside TEE 2019-09-02 17:08:35 +03:00
tpm_i2c_atmel.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 13 2019-05-21 11:28:45 +02:00
tpm_i2c_infineon.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441 2019-06-05 17:37:17 +02:00
tpm_i2c_nuvoton.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 13 2019-05-21 11:28:45 +02:00
tpm_ibmvtpm.c tpm: ibmvtpm: Wait for ready buffer before probing for TPM2 attributes 2020-07-02 17:49:00 +03:00
tpm_ibmvtpm.h tpm: ibmvtpm: Wait for buffer to be set before proceeding 2020-03-15 20:12:52 +02:00
tpm_infineon.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441 2019-06-05 17:37:17 +02:00
tpm_nsc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441 2019-06-05 17:37:17 +02:00
tpm_ppi.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441 2019-06-05 17:37:17 +02:00
tpm_tis.c tpm_tis: Disable interrupts on ThinkPad T490s 2020-11-06 18:21:00 +02:00
tpm_tis_core.c tpm_tis: Clean up locality release 2021-02-16 10:40:27 +02:00
tpm_tis_core.h tpm_tis: Add a check for invalid status 2020-10-02 00:21:03 +03:00
tpm_tis_i2c_cr50.c char: tpm: add i2c driver for cr50 2021-02-16 10:40:27 +02:00
tpm_tis_spi.h tpm: tpm_tis_spi: Support cr50 devices 2019-11-12 21:45:37 +02:00
tpm_tis_spi_cr50.c tpm: tpm_tis_spi_cr50: use new structure for SPI transfer delays 2020-03-13 03:53:16 +02:00
tpm_tis_spi_main.c tpm_tis_spi: Prefer async probe 2020-07-02 17:49:00 +03:00
tpm_tis_synquacer.c tpm: tis: add support for MMIO TPM on SynQuacer 2020-10-02 00:21:02 +03:00
tpm_vtpm_proxy.c compat_ioctl: move drivers to compat_ptr_ioctl 2019-10-23 17:23:43 +02:00
tpmrm-dev.c tpm: Unify the mismatching TPM space buffer sizes 2020-07-24 09:26:23 +03:00
xen-tpmfront.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00