diff mbox series

tpm/tpm_i2c_infineon: Fix init endian vendor check

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

Commit Message

Florian Eckert Sept. 8, 2021, 1:34 p.m. UTC
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(+)

Comments

Florian Eckert Sept. 13, 2021, 12:05 p.m. UTC | #1
>> 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 mbox series

Patch

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) {