mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 13:43:28 +00:00
tpm: cr50: Check for valid locality
When the Cr50 starts up it doesn't have a valid locality. The driver sets it to -1 to indicate that. Tracking this allows cr50_i2c_cleanup() to avoid releasing a locality that was not claimed. However the helper functions that generate the flags use a u8 type which cannot support -1, so they return a locality of 0xff. Fix this by updating the type. With this, 'tpm startup TPM2_SU_CLEAR' works as expected. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
472a716b8f
commit
6208975e23
1 changed files with 12 additions and 4 deletions
|
@ -183,23 +183,31 @@ static int cr50_i2c_write(struct udevice *dev, u8 addr, const u8 *buffer,
|
|||
return cr50_i2c_wait_tpm_ready(dev);
|
||||
}
|
||||
|
||||
static inline u8 tpm_access(u8 locality)
|
||||
static inline u8 tpm_access(int locality)
|
||||
{
|
||||
if (locality == -1)
|
||||
locality = 0;
|
||||
return 0x0 | (locality << 4);
|
||||
}
|
||||
|
||||
static inline u8 tpm_sts(u8 locality)
|
||||
static inline u8 tpm_sts(int locality)
|
||||
{
|
||||
if (locality == -1)
|
||||
locality = 0;
|
||||
return 0x1 | (locality << 4);
|
||||
}
|
||||
|
||||
static inline u8 tpm_data_fifo(u8 locality)
|
||||
static inline u8 tpm_data_fifo(int locality)
|
||||
{
|
||||
if (locality == -1)
|
||||
locality = 0;
|
||||
return 0x5 | (locality << 4);
|
||||
}
|
||||
|
||||
static inline u8 tpm_did_vid(u8 locality)
|
||||
static inline u8 tpm_did_vid(int locality)
|
||||
{
|
||||
if (locality == -1)
|
||||
locality = 0;
|
||||
return 0x6 | (locality << 4);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue