Current tpm_tis driver can not support new intel integrated TPM come with GM45 chipset.
In case of ThinkPad, R400/R500/T400/T500/W500/W700/X200/X301 models use this TPM. Actually most of laptop shipped from 2008 are using this TPM.
It seems iTPM has two problems
1) ACPI definition is not a EisaId style.
2) tpm_tis_status is wrong?
For the problem 1), we can use force=1 option to load the kernel module. but it returns timeout error.
to fix this,
chip->vendor.timeout_* must be set before
if (request_locality(chip, 0) != 0) in tpm_tis.c
(around line 450)
For the problem 2), quick solution is as follow
- if ((status & TPM_STS_DATA_EXPECT) == 0) {
+ if ((status & TPM_STS_VALID) == 0) {
I'm not sure this is bug of GM45 chipset or not.
As a result,I can use this TPM and take TPM ownership successfully with fixes noted above.
regards,