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.