Pre-4.14, CL https://crrev.com/c/254797 provided a fix in tpm_i2c_infineon driver that breaks a long tpm-targeted i2c transaction into smaller ones, if long transfers are not supported by the i2c controller.
The upstream 4.14 kernel includes part of this fix, though in a modified form. And CL:254797 is not picked into Chrome OS for kernel 4.14.
However, part of the CL is not applied in upstream 4.14. Kernel 4.14 still has a separate path for 9645 chips, in which it doesn't address possible i2c controller max size limitations.
This doesn't affect Chrome OS operation at the moment: there are no devices that have a 9645 tpm and are expected to run kernel-4.14. And likely there will never be. Besides, even if such devices are introduced, their i2c controllers may support longer transaction and not require this workaround in the tpm driver.
Bottomline: if we ever add a combination of 9645 and i2c controller that supports only short transactions for kernel 4.14+ in the future, some variation of the 2nd part of the non-picked CL:254797 may need to be applied to kernel-4.14.
Comment 1 by apronin@chromium.org
, Oct 12