Interface TPM 2.0 SLB9670 with IMX8M processor

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Interface TPM 2.0 SLB9670 with IMX8M processor

4,559件の閲覧回数
Jeevan
Contributor III

Hello,

We are interfacing TPM2.0 SLB9670 with the IMX8M processor using SPI communication as shown in below schematic.

Jeevan_0-1645985240157.png

We have made the following ECSPI2 configurations for SPI communication in the device tree file and its working as we are able to see spidev1.0 when we use ls -l /dev/spidev* command in linux terminal of imx8m.

&ecspi2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ecspi2>;
fsl,spi-num-chipselects = <1>;
cs-gpios = GP_ECSPI2_CS0;
status = "okay";
#address-cells = <1>;
#size-cells = <0>;

spidev@0 {
compatible = "spidev";
spi-max-frequency = <2000000>;
reg = <0>;
};
};

Similarly we have made the following ECSPI2 configurations for TPM SLB9670 chip in the device tree file but we are not able to see TPM being detected when we use ls -l /dev/tpm* command in linux terminal of imx8m.

&ecspi2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ecspi2>;
fsl,spi-num-chipselects = <1>;
cs-gpios = GP_ECSPI2_CS0;
status = "okay";
#address-cells = <1>;
#size-cells = <0>;

tpm0: slb9670@0 {

                compatible = "infineon,slb9670";
                reg = <0>;
                resets = <&tpm_reset>;
                spi-max-frequency = <38000000>;
                interrupt-parent = <&gpio3>;
                interrupts = IRQ_TYPE_LEVEL_LOW>;
                status = "okay";

        };

};

Please suggest us some steps to make the TPM chip SLB9670 to detect in IMX8M processor

0 件の賞賛
返信
4 返答(返信)

4,429件の閲覧回数
Jeevan
Contributor III

Yes its already present in imx8m processor

Jeevan_0-1649148249899.png

 

0 件の賞賛
返信

4,480件の閲覧回数
AlfTeleco
Contributor III

Hello @Jeevan , 

We faced a problem quite similar some months ago. It turns out that the SPI kernel driver doesn't work as expected. The problem is that the iMX8 SPI HW module pulls up the CS signal as soon as no data remains in the output buffer and this, puts the slave ( SLB9670 ) in a non selected mode, thus no communication is possible. 

We solved the problem changing the CS signal used by the driver


Change your dts from this:

pinctrl-0 = <&pinctrl_ecspi2>;

cs-gpios = GP_ECSPI2_CS0;

to this: 

pinctrl-0 = <&pinctrl_ecspi3 &pinctrl_ecspi3_cs>;
cs-gpios = <&gpio5 1 GPIO_ACTIVE_LOW>,
 
 
To sum up:
- Use a spare pin of your iMX8 to control de CS of the SLB9670. Letting the SPI kernel driver to do it is a bad idea.

Hope this helps
 

 

0 件の賞賛
返信

4,486件の閲覧回数
jimmychan
NXP TechSupport
NXP TechSupport

Is there a driver for SLB9670 in the kernel? Do you select it in the menuconfig?

0 件の賞賛
返信

3,791件の閲覧回数
AlfTeleco
Contributor III

Yes there is, it is named "tpm_tis_spi". 

You have to both select it in menuconfig and also place the device in the dtb. 

 

BR

0 件の賞賛
返信