bcm63xx: mask interrupts on init
authorÁlvaro Fernández Rojas <noltari@gmail.com>
Mon, 18 May 2020 07:23:50 +0000 (09:23 +0200)
committerÁlvaro Fernández Rojas <noltari@gmail.com>
Mon, 18 May 2020 09:06:05 +0000 (11:06 +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>
(cherry picked from commit 13c33f3f121ca6fe2ab1f80e04cf2d4f2cd6abec)

target/linux/brcm63xx/patches-4.9/327-irqchip-bcm6345-periph-clear-on-init.patch [new file with mode: 0644]

diff --git a/target/linux/brcm63xx/patches-4.9/327-irqchip-bcm6345-periph-clear-on-init.patch b/target/linux/brcm63xx/patches-4.9/327-irqchip-bcm6345-periph-clear-on-init.patch
new file mode 100644 (file)
index 0000000..1aca4a0
--- /dev/null
@@ -0,0 +1,12 @@
+--- a/drivers/irqchip/irq-bcm6345-periph.c
++++ b/drivers/irqchip/irq-bcm6345-periph.c
+@@ -236,6 +236,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);