Hi Alexander, Jarkko and Eyal, A first I2C TCG patch (tpm_tis_i2c.c) has been proposed in the same time as tpm_tis_spi.c by Christophe 3 years ago. https://patchwork.kernel.org/patch/8628681/ At the time, we have had two concerns : 1) I2C TPM component number, in the market, compliant with new I2C TCG specification to validate new I2C driver. 2) Lots changing was already provided by tpm_tis_spi.c on 4.8. That's why Tpm_tis_i2c.c has been postponed. Tpm_tis_spi Linux driver is now robust, if we have several different I2C TPM solutions today to validate a tpm_tis_i2c driver, I 'm ready to contribute to it for validation (STmicro TPM) or propose a solution compatible on 5.1 linux driver if needed under timeframe proposed (second half of august). Best Regards, Benoit -----Original Message----- From: linux-integrity-owner@xxxxxxxxxxxxxxx <linux-integrity-owner@xxxxxxxxxxxxxxx> On Behalf Of Alexander Steffen Sent: jeudi 18 juillet 2019 19:10 To: Eyal.Cohen@xxxxxxxxxxx; jarkko.sakkinen@xxxxxxxxxxxxxxx; tmaimon77@xxxxxxxxx Cc: oshrialkoby85@xxxxxxxxx; robh+dt@xxxxxxxxxx; mark.rutland@xxxxxxx; peterhuewe@xxxxxx; jgg@xxxxxxxx; arnd@xxxxxxxx; gregkh@xxxxxxxxxxxxxxxxxxx; oshri.alkoby@xxxxxxxxxxx; devicetree@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; linux-integrity@xxxxxxxxxxxxxxx; gcwilson@xxxxxxxxxx; kgoldman@xxxxxxxxxx; nayna@xxxxxxxxxxxxxxxxxx; Dan.Morav@xxxxxxxxxxx; oren.tanami@xxxxxxxxxxx Subject: Re: [PATCH v2 0/2] char: tpm: add new driver for tpm i2c ptp On 18.07.2019 14:51, Eyal.Cohen@xxxxxxxxxxx wrote: > Hi Jarkko and Alexander, > > We have made an additional code review on the TPM TIS core driver, it looks quite good and we can connect our new I2C driver to this layer. Great :) In the meantime, I've done some experiments creating an I2C driver based on tpm_tis_core, see https://patchwork.kernel.org/patch/11049363/ Please have a look at that and provide your feedback (and/or use it as a basis for further implementations). > However, there are several differences between the SPI interface and the I2C interface that will require changes to the TIS core. > At a minimum we thought of: > 1. Handling TPM Localities in I2C is different It turned out not to be that different in the end, see the code mentioned above and my comment here: https://patchwork.kernel.org/cover/11049365/ > 2. Handling I2C CRC - relevant only to I2C bus hence not supported > today by TIS core That is completely optional, so there is no need to implement it in the beginning. Also, do you expect a huge benefit from that functionality? Are bit flips that much more likely on I2C compared to SPI, which has no CRC at all, but still works fine? > 3. Handling Chip specific issues, since I2C implementation might be > slightly different across the various TPM vendors Right, that seems similar to the cr50 issues (https://lkml.org/lkml/2019/7/17/677), so there should probably be a similar way to do it. > 4. Modify tpm_tis_send_data and tpm_tis_recv_data to work according > the TCG Device Driver Guide (optimization on TPM_STS access and > send/recv retry) Optimizations are always welcome, but I'd expect basic communication to work already with the current code (though maybe not as efficiently as possible). > Besides this, during development we might encounter additional differences between SPI and I2C. > > We currently target to allocate an eng. to work on this on the second half of August with a goal to have the driver ready for the next kernel merge window. > > Regards, > Eyal.