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. /Jarkko