linux/drivers
Alexander Steffen bbc23a07b0 tpm: Add tpm_tis_i2c backend for tpm_tis_core
Implement the TCG I2C Interface driver, as specified in the TCG PC
Client Platform TPM Profile (PTP) specification for TPM 2.0 v1.04
revision 14, section 8, I2C Interface Definition.

This driver supports Guard Times. That is, if required by the TPM, the
driver has to wait by a vendor-specific time after each I2C read/write.
The specific time is read from the TPM_I2C_INTERFACE_CAPABILITY register.

Unfortunately, the TCG specified almost but not quite compatible
register addresses. Therefore, the TIS register addresses need to be
mapped to I2C ones. The locality is stripped because for now, only
locality 0 is supported.

Add a sanity check to I2C reads of e.g. TPM_ACCESS and TPM_STS. This is
to detect communication errors and issues due to non-standard behaviour
(E.g. the clock stretching quirk in the BCM2835, see 4dbfb5f440). In
case the sanity check fails, attempt a retry.

Co-developed-by: Johannes Holland <johannes.holland@infineon.com>
Signed-off-by: Johannes Holland <johannes.holland@infineon.com>
Co-developed-by: Amir Mizinski <amirmizi6@gmail.com>
Signed-off-by: Amir Mizinski <amirmizi6@gmail.com>
Signed-off-by: Alexander Steffen <Alexander.Steffen@infineon.com>
Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
2022-08-03 23:56:20 +03:00
..
accessibility Revert "speakup: Generate speakupmap.h automatically" 2022-05-20 21:07:05 +02:00
acpi RCU pull request for v5.20 (or whatever) 2022-08-02 19:12:45 -07:00
amba ARM: 9207/1: amba: fix refcount underflow if amba_device_add() fails 2022-07-14 13:17:48 +01:00
android fix for breakage in #work.fd this window 2022-06-05 17:14:03 -07:00
ata ARM: SoC drivers for 6.0 2022-08-02 08:10:10 -07:00
atm
auxdisplay
base Power management updates for 5.20-rc1 2022-08-02 11:17:00 -07:00
bcma
block for-5.20/block-2022-07-29 2022-08-02 13:46:35 -07:00
bluetooth
bus Merge branch 'acpi-bus' 2022-07-29 19:58:52 +02:00
cdrom block: remove blk_cleanup_disk 2022-06-28 06:33:15 -06:00
char tpm: Add tpm_tis_i2c backend for tpm_tis_core 2022-08-03 23:56:20 +03:00
clk linux-kselftest-kunit-5.20-rc1 2022-08-02 19:34:45 -07:00
clocksource - Add the missing DT bindings for the MTU nomadik timer (Linus 2022-07-28 12:33:34 +02:00
comedi comedi: vmk80xx: fix expression for tx buffer size 2022-06-10 15:21:23 +02:00
connector
counter
cpufreq Merge branches 'pm-core', 'pm-sleep', 'powercap', 'pm-domains' and 'pm-em' 2022-07-29 19:33:13 +02:00
cpuidle RCU pull request for v5.20 (or whatever) 2022-08-02 19:12:45 -07:00
crypto This update includes the following changes: 2022-08-02 17:45:14 -07:00
cxl cxl/mbox: Fix missing variable payload checks in cmd size validation 2022-06-28 22:03:18 -07:00
dax
dca
devfreq PM / devfreq: tegra30: Add error message for devm_devfreq_add_device() 2022-07-15 11:40:08 +09:00
dio drivers: dio: add missing iounmap() in dio_init() 2022-05-19 18:56:51 +02:00
dma dmaengine: lgm: Fix an error handling path in intel_ldma_probe() 2022-07-06 10:53:25 +05:30
dma-buf Saner handling of "lseek should fail with ESPIPE" - gets rid of 2022-08-03 11:35:20 -07:00
edac EDAC/ghes: Set the DIMM label unconditionally 2022-07-27 10:42:52 +02:00
eisa
extcon
firewire firewire: convert sysfs sprintf/snprintf family to sysfs_emit 2022-06-17 10:43:20 +02:00
firmware Power management updates for 5.20-rc1 2022-08-02 11:17:00 -07:00
fpga
fsi
gnss
gpio Updates for interrupt core and drivers: 2022-08-01 12:48:15 -07:00
gpu Saner handling of "lseek should fail with ESPIPE" - gets rid of 2022-08-03 11:35:20 -07:00
greybus
hid HID: hyperv: Correctly access fields declared as __le16 2022-06-08 12:28:13 +00:00
hsi
hte hte: Uninitialized variable in hte_ts_get() 2022-05-20 15:54:41 +02:00
hv Drivers: hv: vmbus: Release cpu lock in error case 2022-06-10 08:41:28 +00:00
hwmon hwmon updates for v5.20 2022-08-02 11:07:04 -07:00
hwspinlock
hwtracing
i2c ARM: SoC drivers for 6.0 2022-08-02 08:10:10 -07:00
i3c
idle Power management updates for 5.20-rc1 2022-08-02 11:17:00 -07:00
iio 1st set of IIO fixes for the 5.19 cycle. 2022-06-20 09:49:52 +02:00
infiniband for-5.20/block-2022-07-29 2022-08-02 13:46:35 -07:00
input Input updates for v5.19-rc6 2022-07-17 07:52:46 -07:00
interconnect Char / Misc / Other smaller driver subsystem updates for 5.19-rc1 2022-06-03 11:36:34 -07:00
iommu Updates for interrupt core and drivers: 2022-08-01 12:48:15 -07:00
ipack
irqchip ARM: new SoC support for 6.0 2022-08-02 08:29:18 -07:00
isdn
leds ARM: multiplatform changes, part 2 2022-06-02 15:23:54 -07:00
macintosh macintosh: via-pmu and via-cuda need RTC_LIB 2022-05-22 15:58:30 +10:00
mailbox mailbox: qcom-ipcc: Fix -Wunused-function with CONFIG_PM_SLEEP=n 2022-05-24 08:08:24 -05:00
mcb
md hardening updates for v5.20-rc1 2022-08-02 14:38:59 -07:00
media USB / Thunderbolt changes for 5.19-rc1 2022-06-03 11:17:49 -07:00
memory memory: tegra: Changes for v5.20-rc1 2022-07-12 22:53:08 +02:00
memstick block: remove blk_cleanup_disk 2022-06-28 06:33:15 -06:00
message
mfd ACPI updates for 5.20-rc1 2022-08-02 11:12:25 -07:00
misc Folio changes for 6.0 2022-08-03 10:35:43 -07:00
mmc linux-kselftest-kunit-5.20-rc1 2022-08-02 19:34:45 -07:00
most
mtd for-5.20/block-2022-07-29 2022-08-02 13:46:35 -07:00
mux
net stmmac: dwmac-mediatek: fix resource leak in probe 2022-07-28 10:43:04 -07:00
nfc NFC: nxp-nci: don't print header length mismatch on i2c error 2022-06-29 14:05:00 +01:00
ntb
nubus
nvdimm for-5.20/block-2022-07-29 2022-08-02 13:46:35 -07:00
nvme for-5.20/block-2022-07-29 2022-08-02 13:46:35 -07:00
nvmem
of x86/kexec: Carry forward IMA measurement log on kexec 2022-07-01 15:22:16 +02:00
opp PM: EM: convert power field to micro-Watts precision and align drivers 2022-07-15 19:17:30 +02:00
parisc genirq: Add and use an irq_data_update_affinity helper 2022-07-07 09:38:04 +01:00
parport
pci PCI: hv: Take a const cpumask in hv_compose_msi_req_get_cpu() 2022-07-08 08:44:15 +01:00
pcmcia ARM: multiplatform changes, part 2 2022-06-02 15:23:54 -07:00
peci
perf drivers/perf: arm_spe: Fix consistency of SYS_PMSCR_EL1.CX 2022-07-19 18:50:09 +01:00
phy phy: brcm-sata: bcmbca: Replace ARCH_BCM_63XX with ARCH_BCMBCA 2022-07-08 14:09:58 -07:00
pinctrl Updates for interrupt core and drivers: 2022-08-01 12:48:15 -07:00
platform Merge branch 'acpi-bus' 2022-07-29 19:58:52 +02:00
pnp
power power: supply: core: Fix boundary conditions in interpolation 2022-06-09 21:08:38 +02:00
powercap Power management updates for 5.20-rc1 2022-08-02 11:17:00 -07:00
pps
ps3
ptp ptp: ocp: Select CRC16 in the Kconfig. 2022-07-27 18:11:34 -07:00
pwm pwm: lpc18xx: Fix period handling 2022-07-29 13:41:18 +02:00
rapidio
ras
regulator regulator: Consumer load management improvements 2022-07-28 00:01:30 +01:00
remoteproc
reset Merge branch 'nuvoton/newsoc' into arm/newsoc 2022-07-19 15:42:00 +02:00
rpmsg Driver core changes for 5.19-rc1 2022-06-03 11:48:47 -07:00
rtc ARM: multiplatform changes, part 2 2022-06-02 15:23:54 -07:00
s390 for-5.20/block-2022-07-29 2022-08-02 13:46:35 -07:00
sbus
scsi for-5.20/block-2022-07-29 2022-08-02 13:46:35 -07:00
sh genirq: Add and use an irq_data_update_affinity helper 2022-07-07 09:38:04 +01:00
siox
slimbus Driver core changes for 5.19-rc1 2022-06-03 11:48:47 -07:00
soc ARM: SoC drivers for 6.0 2022-08-02 08:10:10 -07:00
soundwire soundwire: Use acpi_dev_for_each_child() 2022-06-23 20:53:06 +02:00
spi spi: Updates for v5.20 2022-08-02 10:55:04 -07:00
spmi
ssb
staging staging/wlan-ng: get the correct struct hfa384x in work callback 2022-07-01 09:58:58 +02:00
target for-5.20/block-2022-07-29 2022-08-02 13:46:35 -07:00
tc
tee tee: tee_get_drvdata(): fix description of return value 2022-07-08 10:51:24 +02:00
thermal Thermal control updates for 5.20-rc1 2022-08-02 11:27:53 -07:00
thunderbolt linux-kselftest-kunit-5.20-rc1 2022-08-02 19:34:45 -07:00
tty ARM: SoC drivers for 6.0 2022-08-02 08:10:10 -07:00
ufs for-5.20/block-2022-07-29 2022-08-02 13:46:35 -07:00
uio
usb Merge branch 'acpi-bus' 2022-07-29 19:58:52 +02:00
vdpa vduse: Tie vduse mgmtdev and its device 2022-06-24 02:49:48 -04:00
vfio Saner handling of "lseek should fail with ESPIPE" - gets rid of 2022-08-03 11:35:20 -07:00
vhost vhost-vdpa: call vhost_vdpa_cleanup during the release 2022-06-27 08:05:35 -04:00
video fbcon: Use fbcon_info_from_console() in fbcon_modechange_possible() 2022-07-07 10:52:35 +02:00
virt linux-kselftest-kunit-5.20-rc1 2022-08-02 19:34:45 -07:00
virtio Folio changes for 6.0 2022-08-03 10:35:43 -07:00
vlynq
vme
w1
watchdog watchdog: gxp: Add missing MODULE_LICENSE 2022-06-09 12:20:34 +02:00
xen Updates for interrupt core and drivers: 2022-08-01 12:48:15 -07:00
zorro
Kconfig SCSI misc on 20220604 2022-06-05 09:25:12 -07:00
Makefile SCSI misc on 20220604 2022-06-05 09:25:12 -07:00