diff options
Diffstat (limited to 'drivers/char/tpm/tpm_tis_core.c')
-rw-r--r-- | drivers/char/tpm/tpm_tis_core.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/char/tpm/tpm_tis_core.c b/drivers/char/tpm/tpm_tis_core.c index c028ffd95332..9e42943f6a59 100644 --- a/drivers/char/tpm/tpm_tis_core.c +++ b/drivers/char/tpm/tpm_tis_core.c | |||
@@ -68,7 +68,8 @@ static bool check_locality(struct tpm_chip *chip, int l) | |||
68 | if (rc < 0) | 68 | if (rc < 0) |
69 | return false; | 69 | return false; |
70 | 70 | ||
71 | if ((access & (TPM_ACCESS_ACTIVE_LOCALITY | TPM_ACCESS_VALID)) == | 71 | if ((access & (TPM_ACCESS_ACTIVE_LOCALITY | TPM_ACCESS_VALID |
72 | | TPM_ACCESS_REQUEST_USE)) == | ||
72 | (TPM_ACCESS_ACTIVE_LOCALITY | TPM_ACCESS_VALID)) { | 73 | (TPM_ACCESS_ACTIVE_LOCALITY | TPM_ACCESS_VALID)) { |
73 | priv->locality = l; | 74 | priv->locality = l; |
74 | return true; | 75 | return true; |
@@ -808,7 +809,15 @@ int tpm_tis_core_init(struct device *dev, struct tpm_tis_data *priv, int irq, | |||
808 | intmask |= TPM_INTF_CMD_READY_INT | TPM_INTF_LOCALITY_CHANGE_INT | | 809 | intmask |= TPM_INTF_CMD_READY_INT | TPM_INTF_LOCALITY_CHANGE_INT | |
809 | TPM_INTF_DATA_AVAIL_INT | TPM_INTF_STS_VALID_INT; | 810 | TPM_INTF_DATA_AVAIL_INT | TPM_INTF_STS_VALID_INT; |
810 | intmask &= ~TPM_GLOBAL_INT_ENABLE; | 811 | intmask &= ~TPM_GLOBAL_INT_ENABLE; |
812 | |||
813 | rc = request_locality(chip, 0); | ||
814 | if (rc < 0) { | ||
815 | rc = -ENODEV; | ||
816 | goto out_err; | ||
817 | } | ||
818 | |||
811 | tpm_tis_write32(priv, TPM_INT_ENABLE(priv->locality), intmask); | 819 | tpm_tis_write32(priv, TPM_INT_ENABLE(priv->locality), intmask); |
820 | release_locality(chip, 0); | ||
812 | 821 | ||
813 | rc = tpm2_probe(chip); | 822 | rc = tpm2_probe(chip); |
814 | if (rc) | 823 | if (rc) |