diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-4.19/950-0098-mcp2515-Use-DT-supplied-interrupt-flags.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-4.19/950-0098-mcp2515-Use-DT-supplied-interrupt-flags.patch | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-4.19/950-0098-mcp2515-Use-DT-supplied-interrupt-flags.patch b/target/linux/bcm27xx/patches-4.19/950-0098-mcp2515-Use-DT-supplied-interrupt-flags.patch new file mode 100644 index 0000000000..13f97962f9 --- /dev/null +++ b/target/linux/bcm27xx/patches-4.19/950-0098-mcp2515-Use-DT-supplied-interrupt-flags.patch @@ -0,0 +1,36 @@ +From 612a3f0adcf98854dcbe8228551b941b76c6af2c Mon Sep 17 00:00:00 2001 +From: Phil Elwell <phil@raspberrypi.org> +Date: Tue, 14 Nov 2017 11:03:22 +0000 +Subject: [PATCH] mcp2515: Use DT-supplied interrupt flags + +The MCP2515 datasheet clearly describes a level-triggered interrupt +pin. Therefore the receiving interrupt controller must also be +configured for level-triggered operation otherwise there is a danger +of a missed interrupt condition blocking all subsequent interrupts. +The ONESHOT flag ensures that the interrupt is masked until the +threaded interrupt handler exits. + +Rather than change the flags globally (they must have worked for at +least one user), allow the flags to be overridden from Device Tree +in the event that the device has a DT node. + +See: https://github.com/raspberrypi/linux/issues/2175 + https://github.com/raspberrypi/linux/issues/2263 + +Signed-off-by: Phil Elwell <phil@raspberrypi.org> +--- + drivers/net/can/spi/mcp251x.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/drivers/net/can/spi/mcp251x.c ++++ b/drivers/net/can/spi/mcp251x.c +@@ -948,6 +948,9 @@ static int mcp251x_open(struct net_devic + priv->tx_skb = NULL; + priv->tx_len = 0; + ++ if (spi->dev.of_node) ++ flags = 0; ++ + ret = request_threaded_irq(spi->irq, NULL, mcp251x_can_ist, + flags | IRQF_ONESHOT, DEVICE_NAME, priv); + if (ret) { |