Re: [PATCH v2 5/6] tpm: add driver for cr50 on SPI

From: Stephen Boyd
Date: Thu Jul 18 2019 - 14:11:25 EST


Quoting Alexander Steffen (2019-07-18 09:47:22)
> On 17.07.2019 23:38, Stephen Boyd wrote:
> > Quoting Stephen Boyd (2019-07-17 12:57:34)
> >> Quoting Alexander Steffen (2019-07-17 05:00:06)
> >>>
> >>> Can't the code be shared more explicitly, e.g. by cr50_spi wrapping
> >>> tpm_tis_spi, so that it can intercept the calls, execute the additional
> >>> actions (like waking up the device), but then let tpm_tis_spi do the
> >>> common work?
> >>>
> >>
> >> I suppose the read{16,32} and write32 functions could be reused. I'm not
> >> sure how great it will be if we combine these two drivers, but I can
> >> give it a try today and see how it looks.
> >>
> >
> > Here's the patch. I haven't tested it besides compile testing.

The code seems to work but I haven't done any extensive testing besides
making sure that the TPM responds to pcr reads and some commands like
reading random numbers.

>
> Thanks for providing this. Makes it much easier to see what the actual
> differences between the devices are.
>
> Do we have a general policy on how to support devices that are very
> similar but need special handling in some places? Not duplicating the
> whole driver just to change a few things definitely seems like an
> improvement (and has already been done in the past, as with
> TPM_TIS_ITPM_WORKAROUND). But should all the code just be added to
> tpm_tis_spi.c? Or is there some way to keep a clearer separation,
> especially when (in the future) we have multiple devices that all have
> their own set of deviations from the spec?
>

If you have any ideas on how to do it please let me know. At this point,
I'd prefer if the maintainers could provide direction on what they want.