bcm63xx: mask interrupts on init
authorÁlvaro Fernández Rojas <noltari@gmail.com>
Sun, 17 May 2020 12:18:42 +0000 (14:18 +0200)
committerÁlvaro Fernández Rojas <noltari@gmail.com>
Sun, 17 May 2020 21:29:48 +0000 (23:29 +0200)
Fixes BCM6348/BCM6358 hangs while booting:
https://bugs.openwrt.org/index.php?do=details&task_id=2202

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
target/linux/bcm63xx/patches-5.4/327-irqchip-bcm6345-periph-clear-on-init.patch [new file with mode: 0644]

diff --git a/target/linux/bcm63xx/patches-5.4/327-irqchip-bcm6345-periph-clear-on-init.patch b/target/linux/bcm63xx/patches-5.4/327-irqchip-bcm6345-periph-clear-on-init.patch
new file mode 100644 (file)
index 0000000..a878b34
--- /dev/null
@@ -0,0 +1,12 @@
+--- a/drivers/irqchip/irq-bcm6345-periph.c
++++ b/drivers/irqchip/irq-bcm6345-periph.c
+@@ -240,6 +240,9 @@ static int __init __bcm6345_periph_intc_
+                       /* route all interrupts to line 0 by default */
+                       if (i == 0)
+                               block->mask_cache[w] = 0xffffffff;
++
++                      /* mask all interrupts */
++                      __raw_writel(0, block->en_reg[w]);
+               }
+               irq_set_handler_data(block->parent_irq, data);