summaryrefslogtreecommitdiffstats
path: root/drivers/char/tpm
diff options
context:
space:
mode:
authorAndrew Zamansky2016-06-29 11:58:49 +0200
committerJarkko Sakkinen2016-07-19 16:43:38 +0200
commitfa7539b27f4a9d0bfaede2f7547c2322ac68f1f2 (patch)
tree6ade4b33f8f4b745a442c6813cda8784aae6ed1e /drivers/char/tpm
parenttpm: read burstcount from TPM_STS in one 32-bit transaction (diff)
downloadkernel-qcow2-linux-fa7539b27f4a9d0bfaede2f7547c2322ac68f1f2.tar.gz
kernel-qcow2-linux-fa7539b27f4a9d0bfaede2f7547c2322ac68f1f2.tar.xz
kernel-qcow2-linux-fa7539b27f4a9d0bfaede2f7547c2322ac68f1f2.zip
tpm2_i2c_nuvoton: add irq validity check
In 570a3609 IRQ path is incorrectly always exercised while it should be exercised only when there is an IRQ number allocated. This commit reverts the old behavior. [jarkko.sakkinen@linux.intel.com: updated description] Fixes: 570a36097f3 ("tpm: drop 'irq' from struct tpm_vendor_specific") Signed-off-by: Andrew Zamansky <andrew.zamansky@nuvoton.com> Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Diffstat (limited to 'drivers/char/tpm')
-rw-r--r--drivers/char/tpm/tpm_i2c_nuvoton.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/char/tpm/tpm_i2c_nuvoton.c b/drivers/char/tpm/tpm_i2c_nuvoton.c
index 4e32094b761d..826698234336 100644
--- a/drivers/char/tpm/tpm_i2c_nuvoton.c
+++ b/drivers/char/tpm/tpm_i2c_nuvoton.c
@@ -559,10 +559,8 @@ static int i2c_nuvoton_probe(struct i2c_client *client,
* TPM_INTF_INT_LEVEL_LOW | TPM_INTF_DATA_AVAIL_INT
* The IRQ should be set in the i2c_board_info (which is done
* automatically in of_i2c_register_devices, for device tree users */
- chip->flags |= TPM_CHIP_FLAG_IRQ;
priv->irq = client->irq;
-
- if (chip->flags & TPM_CHIP_FLAG_IRQ) {
+ if (client->irq) {
dev_dbg(dev, "%s() priv->irq\n", __func__);
rc = devm_request_irq(dev, client->irq,
i2c_nuvoton_int_handler,
@@ -572,9 +570,9 @@ static int i2c_nuvoton_probe(struct i2c_client *client,
if (rc) {
dev_err(dev, "%s() Unable to request irq: %d for use\n",
__func__, priv->irq);
- chip->flags &= ~TPM_CHIP_FLAG_IRQ;
priv->irq = 0;
} else {
+ chip->flags |= TPM_CHIP_FLAG_IRQ;
/* Clear any pending interrupt */
i2c_nuvoton_ready(chip);
/* - wait for TPM_STS==0xA0 (stsValid, commandReady) */