tpm: TPM 2.0 FIFO Interface

Detect TPM 2.0 by using the extended STS (STS3) register. For TPM 2.0,
instead of calling tpm_get_timeouts(), assign duration and timeout
values defined in the TPM 2.0 PTP specification.

The TPM 2.0 detection was originally implemented by Will Arthur, which
I then extended with power management support and fixing various issues
like requesting locality before detecting TPM (for the case when the
firmware does not initialize the TPM).

Older TPM chips always give 0xff in STS3 register. Added workaround
proposed by Stefan Berger to mask the lower two bits and compare
them to 0x04, which marks TPM version 2.0.

Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Signed-off-by: Will Arthur <will.c.arthur@intel.com>
Reviewed-by: Jasob Gunthorpe <jason.gunthorpe@obsidianresearch.com>
Reviewed-by: Stephan Berger <stephan.berger@linux.vnet.ibm.com>