| From d41f36a6464a85c06ad920703d878e4491d2c023 Mon Sep 17 00:00:00 2001 |
| From: Vladimir Oltean <olteanv@gmail.com> |
| Date: Fri, 23 Aug 2019 00:24:50 +0300 |
| Subject: spi: spi-fsl-dspi: Exit the ISR with IRQ_NONE when it's not ours |
| |
| From: Vladimir Oltean <olteanv@gmail.com> |
| |
| commit d41f36a6464a85c06ad920703d878e4491d2c023 upstream. |
| |
| The DSPI interrupt can be shared between two controllers at least on the |
| LX2160A. In that case, the driver for one controller might misbehave and |
| consume the other's interrupt. Fix this by actually checking if any of |
| the bits in the status register have been asserted. |
| |
| Fixes: 13aed2392741 ("spi: spi-fsl-dspi: use IRQF_SHARED mode to request IRQ") |
| Signed-off-by: Vladimir Oltean <olteanv@gmail.com> |
| Link: https://lore.kernel.org/r/20190822212450.21420-2-olteanv@gmail.com |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| Cc: stable@vger.kernel.org |
| Cc: Guenter Roeck <linux@roeck-us.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/spi/spi-fsl-dspi.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/spi/spi-fsl-dspi.c |
| +++ b/drivers/spi/spi-fsl-dspi.c |
| @@ -878,9 +878,11 @@ static irqreturn_t dspi_interrupt(int ir |
| trans_mode); |
| } |
| } |
| + |
| + return IRQ_HANDLED; |
| } |
| |
| - return IRQ_HANDLED; |
| + return IRQ_NONE; |
| } |
| |
| static const struct of_device_id fsl_dspi_dt_ids[] = { |