AnsweredAssumed Answered

TPM (SLB9670) initialization failed on i.MX8 ECSPI2

Question asked by Rohit Dubey on Feb 10, 2020
Latest reply on Jul 10, 2020 by Nick Bourdon



I'm working on getting the Infineon SLB9670 to work on the ECSPI2 bus of an IMX8MQ processor on the 4.19.35 kernel built using Yocto. The device seems to get detected on the bus ( there's a "spi1.0" node in the  /sys/bus/spi/devices directory), but for some reason, it is never associated with the TPM module and hence fails to come up as a TPM in the /dev directory.

After some printk debugging, I noticed that it fails to detect the valid bit being set on the TPM ( in wait_startup (tpm_tis_core)) and therefore doesn't initialize the device any further.

Probing the signals, I do see TPM replying with 00 01, but module fails to detect this. All the other pins seem to be behaving as expected, so this seems like a device tree or kernel problem.

I'm at a loss of what else to try and would appreciate any suggestions on how to get it to work.


Here's the device tree section, (originally taken from another post and modified) :



pinctrl_ecspi2: ecspi2grp {
fsl,pins = <
    MX8MM_IOMUXC_ECSPI2_SS0_ECSPI2_SS0 0x00000116
&ecspi2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ecspi2>;
fsl,spi-num-chipselects = <1>;
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
tpm0: slb9670@0 {
    compatible = "infineon,slb9670";
    reg = <0>;
    spi-max-frequency = <38000000>;


The kernel modules we're using are tpm, tpm_tis_core and tpm_tis_spi and we're not using interrupts:


Schematics fragments to show TPM connection on ECSPI2 pins


I'd truly appreciate if anyone can help figure out what we've done wrong and how to fix it. I'll be happy to provide any further information.


Thanks & Regards,