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: [email protected] 
<[email protected]> On Behalf Of Alexander Steffen
Sent: jeudi 18 juillet 2019 19:10
To: [email protected]; [email protected]; [email protected]
Cc: [email protected]; [email protected]; [email protected]; 
[email protected]; [email protected]; [email protected]; [email protected]; 
[email protected]; [email protected]; 
[email protected]; [email protected]; 
[email protected]; [email protected]; [email protected]; 
[email protected]; [email protected]
Subject: Re: [PATCH v2 0/2] char: tpm: add new driver for tpm i2c ptp

On 18.07.2019 14:51, [email protected] 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.

Reply via email to