
Hello,
I am trying to enable the TPM 2.0 SLB9670 in U-Boot for a Raspberry Pi 3 B+. More precisely, the TPM is on an add-on board, the IRIDIUM SLB9670. The communication between the RPI and the TPM is ensured by SPI so I enabled the software spi driver (spi-gpio) in U-Boot because the bcm28x spi driver is not available in U-Boot.
CONFIG_SPI=y CONFIG_DM_SPI=y CONFIG_SOFT_SPI=y
Then, I enabled the TPM support in U-Boot.
CONFIG_CMD_TPM_V2=y CONFIG_CMD_TPM=y CONFIG_TPM_V2=y CONFIG_TPM2_TIS_SPI=y CONFIG_TPM=y
Finally, I updated my Device Tree. /dts-v1/ / { ... aliases { spi0 = &soft_spi; };
soft_spi: soft-spi { compatible = "spi-gpio"; pinctrl-names = "default"; pinctrl-0 = <&spi0_gpio7>; status = "okay"; gpio-sck = <&gpio 11 0>; gpio-mosi = <&gpio 10 0>; gpio-miso = <&gpio 9 0>; cs-gpios = <&gpio 7 1>; #address-cells = <1>; #size-cells = <0>;
slb9670: slb9670@0 { compatible = "tis,tpm2-spi"; reg = <1>; #address-cells = <1>; #size-cells = <0>; spi-max-frequency = <32000000>; status = "okay"; }; };
spio0_gpio7: spio0_gpio7 { brcm,pins = <7 8 9 10 11>; brcm,function = <4>; }; ... };
But, when I try to execute the following command : U-Boot> tpm2 init
I have the following response :
tpm_tis_spi_probe : missing reset GPIO tpm_tis_spi_request_locality : Timeout getting locality : -2 tpm_tis_spi_probe : could not request locality 0 Could not find TPM (ret=-2)
The Iridium board contains a reset circuit on board, which pulls the reset line of the TPM to GND after VCC becomes available, so the reset GPIO is not needed I think.
I don’t see what is wrong with my setup, a little help would be very appreciated.
Thank you in advance, Elena