[U-Boot] Issue enabling TPM 2.0 on RPI

Elena Unix elenaunix01 at gmail.com
Fri Jun 14 07:43:46 UTC 2019


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 at 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


More information about the U-Boot mailing list