Re: [PATCH 2/2] reset: Add Infineon SLB9670 TPM reset driver

Francesco Dolcini
2023-11-22T15:15:26Z

Hello Lukas,

On Wed, Nov 22, 2023 at 12:29:49PM +0100, Lukas Wunner wrote:
> On Wed, Nov 22, 2023 at 12:33:58AM +0100, Francesco Dolcini wrote:
> > On Tue, Sep 26, 2023 at 09:09:36PM +0200, Lukas Wunner wrote:
> > > Normally the platform firmware is responsible for taking a Trusted
> > > Platform Module out of reset on boot and storing measurements into it.
> > >
> > > However if the platform firmware is incapable of doing that -- as is the
> > > case on the Raspberry Pi -- then the onus is on the kernel to take the
> > > TPM out of reset before trying to attach a driver to it.
> > >
> > > Provide a reset driver for such platforms.
> > >
> > > The Infineon SLB9670 TPM requires a specific reset sequence on its RST#
> > > pin which is documented in sections 5.4 and 5.5 of the datasheet:
> >
> > Are you really sure that this change is required?
> > I have seen the RST# Timing diagram in the datasheet, however I wonder
> > if a reset is required at all during power-up, for example.
>
> If the RST# pin is not toggled at all upon a warm reset (reboot),
> the TPM will remain in whatever state it was during the previous boot.
...
> Also, the pin controller connected to RST# might be reset upon a reboot
> (think of a SoC internal pin controller setting all its registers to 0)
> and RST# might be asserted as a result. It is then necessary to take
> the TPM out of reset.

Toggled at boot is different from what you are doing here.

> > Not to mention that I was able to see the driver probe succeed in a
> > similar setup to the one you are describing in the commit message
> > (different board, arm64, but nothing done by the platform firmware).
>
> Hm, is the RST# pin even connected on that board?

Yes, it's connected and it is asserted/de-asserted (aka toggled) during
startup from the HW reset circuit. However this is not implementing the
reset sequence you are implementing here.

Francesco