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