Re: [PATCH v4 4/6] tpm: tpm_tis_spi: Export functionality to other drivers

From: Jarkko Sakkinen
Date: Wed Aug 21 2019 - 13:58:58 EST


On Mon, Aug 19, 2019 at 10:10:08AM -0700, Stephen Boyd wrote:
> Quoting Jarkko Sakkinen (2019-08-19 09:40:05)
> > On Mon, Aug 12, 2019 at 03:36:20PM -0700, Stephen Boyd wrote:
> > > Export a new function, tpm_tis_spi_init(), and the associated
> > > read/write/transfer APIs so that we can create variant drivers based on
> > > the core functionality of this TPM SPI driver. Variant drivers can wrap
> > > the tpm_tis_spi_phy struct with their own struct and override the
> > > behavior of tpm_tis_spi_transfer() by supplying their own flow control
> > > and pre-transfer hooks. This shares the most code between the core
> > > driver and any variants that want to override certain behavior without
> > > cluttering the core driver.
> >
> > I think this is adding way too much complexity for the purpose. We
> > definitely do want this three layer architecture here.
> >
> > Instead there should be a single tpm_tis_spi driver that dynamically
> > either TCG or CR50. I rather take some extra bytes in the LKM than
> > the added complexity.
> >
>
> Ok. I had that patch originally[1]. Do you want me to resend that patch
> and start review over from there?
>
> [1] https://lkml.kernel.org/r/5d2f955d.1c69fb81.35877.7018@xxxxxxxxxxxxx

What if:

1. You mostly use this solution but have it as a separate source module
only.
2. Use TPM_IS_CR50 only once to bind the callbacks.

/Jarkko