Re: [Patch V5 2/3] tpm_tis-spi: Support hardware wait polling

Jason Gunthorpe
2023-03-01T12:27:56Z

On Wed, Mar 01, 2023 at 11:56:53AM +0000, Krishna Yarlagadda wrote:

> > > > +int tpm_tis_spi_transfer(struct tpm_tis_data *data, u32 addr, u16 len,
> > > > + u8 *in, const u8 *out)
> > > > +{
> > > > + struct tpm_tis_spi_phy *phy = to_tpm_tis_spi_phy(data);
> > > > + struct spi_controller *ctlr = phy->spi_device->controller;
> > > > +
> > > > + /*
> > > > + * TPM flow control over SPI requires full duplex support.
> > > > + * Send entire message to a half duplex controller to handle
> > > > + * wait polling in controller.
> > > > + * Set TPM HW flow control flag..
> > > > + */
> > > > + if (ctlr->flags & SPI_CONTROLLER_HALF_DUPLEX) {
> > > > + phy->spi_device->mode |= SPI_TPM_HW_FLOW;
> >
> > Shouldn't we check that this special flow is supported when the SPI
> > device is bound to the tpm in the first place?
> TPM device connected behind half duplex controller can only work
> this way. So, no additional flag needed to check.

Just because a DT hooks it up this way doesn't mean the kernel driver
can support it, eg support hasn't been implemented in an older SPI
driver or something.

If the failure mode is anything other than the TPM doesn't probe we
will need to check for support.

Jason