| From foo@baz Mon Sep 17 12:33:31 CEST 2018 |
| From: Linus Walleij <linus.walleij@linaro.org> |
| Date: Fri, 8 Jun 2018 09:09:07 +0200 |
| Subject: tpm_tis_spi: Pass the SPI IRQ down to the driver |
| |
| From: Linus Walleij <linus.walleij@linaro.org> |
| |
| [ Upstream commit 1a339b658d9dbe1471f67b78237cf8fa08bbbeb5 ] |
| |
| An SPI TPM device managed directly on an embedded board using |
| the SPI bus and some GPIO or similar line as IRQ handler will |
| pass the IRQn from the TPM device associated with the SPI |
| device. This is already handled by the SPI core, so make sure |
| to pass this down to the core as well. |
| |
| (The TPM core habit of using -1 to signal no IRQ is dubious |
| (as IRQ 0 is NO_IRQ) but I do not want to mess with that |
| semantic in this patch.) |
| |
| Cc: Mark Brown <broonie@kernel.org> |
| Signed-off-by: Linus Walleij <linus.walleij@linaro.org> |
| Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> |
| Tested-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> |
| Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/char/tpm/tpm_tis_spi.c | 9 ++++++++- |
| 1 file changed, 8 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/char/tpm/tpm_tis_spi.c |
| +++ b/drivers/char/tpm/tpm_tis_spi.c |
| @@ -188,6 +188,7 @@ static const struct tpm_tis_phy_ops tpm_ |
| static int tpm_tis_spi_probe(struct spi_device *dev) |
| { |
| struct tpm_tis_spi_phy *phy; |
| + int irq; |
| |
| phy = devm_kzalloc(&dev->dev, sizeof(struct tpm_tis_spi_phy), |
| GFP_KERNEL); |
| @@ -200,7 +201,13 @@ static int tpm_tis_spi_probe(struct spi_ |
| if (!phy->iobuf) |
| return -ENOMEM; |
| |
| - return tpm_tis_core_init(&dev->dev, &phy->priv, -1, &tpm_spi_phy_ops, |
| + /* If the SPI device has an IRQ then use that */ |
| + if (dev->irq > 0) |
| + irq = dev->irq; |
| + else |
| + irq = -1; |
| + |
| + return tpm_tis_core_init(&dev->dev, &phy->priv, irq, &tpm_spi_phy_ops, |
| NULL); |
| } |
| |