Message ID | 20210908133416.12408-1-fe@dev.tdt.de (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | tpm/tpm_i2c_infineon: Fix init endian vendor check | expand |
>> By converting the vendor ID with ie32_to_cpus() to the correct format, >> the TPM chip is recognised by the driver and works as expected. >> >> Signed-off-by: Florian Eckert <fe@dev.tdt.de> >> --- >> drivers/char/tpm/tpm_i2c_infineon.c | 2 ++ >> 1 file changed, 2 insertions(+) > > vendor should be marked as a __le32 and so forth Thanks for your feedback. I will push a v2. > > Jason
diff --git a/drivers/char/tpm/tpm_i2c_infineon.c b/drivers/char/tpm/tpm_i2c_infineon.c index a19d32cb4e94..111a8c34329a 100644 --- a/drivers/char/tpm/tpm_i2c_infineon.c +++ b/drivers/char/tpm/tpm_i2c_infineon.c @@ -638,6 +638,8 @@ static int tpm_tis_i2c_init(struct device *dev) goto out_release; } + le32_to_cpus(&vendor); + if (vendor == TPM_TIS_I2C_DID_VID_9645) { tpm_dev.chip_type = SLB9645; } else if (vendor == TPM_TIS_I2C_DID_VID_9635) {
On my embedded system I use this tpm infineon chip via I2C. My system is a MIPS architecture and therefore works in big endian mode. The problem is that the chip type is not recognised, because the vendor ID is incorrectly stored in memory. By converting the vendor ID with ie32_to_cpus() to the correct format, the TPM chip is recognised by the driver and works as expected. Signed-off-by: Florian Eckert <fe@dev.tdt.de> --- drivers/char/tpm/tpm_i2c_infineon.c | 2 ++ 1 file changed, 2 insertions(+)