@@ -94,7 +94,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
obj-$(CONFIG_METAG_PERFCOUNTER_IRQS) += irq-metag.o
--- /dev/null
+++ b/drivers/irqchip/irq-bcm6345-periph.c
-@@ -0,0 +1,340 @@
+@@ -0,0 +1,341 @@
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file "COPYING" in the main directory of this archive
@@ -246,6 +246,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
+ irq_hw_number_t hwirq = irqd_to_hwirq(data);
+ struct intc_data *priv = data->domain->host_data;
+ unsigned int i, reg, bit;
++ unsigned long flags;
+ bool enabled;
+ int cpu;
+
@@ -265,7 +266,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
+ if (!priv->block[cpu].parent_irq)
+ return -EINVAL;
+
-+ raw_spin_lock(&priv->lock);
++ raw_spin_lock_irqsave(&priv->lock, flags);
+ enabled = !irqd_irq_masked(data);
+ for (i = 0; i < MAX_PARENT_IRQS; i++) {
+ struct intc_block *block = &priv->block[i];
@@ -281,7 +282,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
+ __bcm6345_periph_enable(block, reg, bit, false);
+ }
+ }
-+ raw_spin_unlock(&priv->lock);
++ raw_spin_unlock_irqrestore(&priv->lock, flags);
+
+ return 0;
+}
@@ -454,33 +455,3 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
+ int num_words);
+
+#endif /* __INCLUDE_LINUX_IRQCHIP_IRQ_BCM6345_PERIPH_H */
-diff --git a/drivers/irqchip/irq-bcm6345-periph.c b/drivers/irqchip/irq-bcm6345-periph.c
-index dfab88e..b280164 100644
---- a/drivers/irqchip/irq-bcm6345-periph.c
-+++ b/drivers/irqchip/irq-bcm6345-periph.c
-@@ -149,6 +149,7 @@ static int bcm6345_periph_set_affinity(struct irq_data *data,
- irq_hw_number_t hwirq = irqd_to_hwirq(data);
- struct intc_data *priv = data->domain->host_data;
- unsigned int i, reg, bit;
-+ unsigned long flags;
- bool enabled;
- int cpu;
-
-@@ -168,7 +169,7 @@ static int bcm6345_periph_set_affinity(struct irq_data *data,
- if (!priv->block[cpu].parent_irq)
- return -EINVAL;
-
-- raw_spin_lock(&priv->lock);
-+ raw_spin_lock_irqsave(&priv->lock, flags);
- enabled = !irqd_irq_masked(data);
- for (i = 0; i < MAX_PARENT_IRQS; i++) {
- struct intc_block *block = &priv->block[i];
-@@ -184,7 +185,7 @@ static int bcm6345_periph_set_affinity(struct irq_data *data,
- __bcm6345_periph_enable(block, reg, bit, false);
- }
- }
-- raw_spin_unlock(&priv->lock);
-+ raw_spin_unlock_irqrestore(&priv->lock, flags);
-
- return 0;
- }
@@ -26,7 +26,7 @@ Subject: [PATCH 58/72] BCM63XX: allow providing fixup data in board data
#if CONFIG_OF
if (of_have_populated_dt()) {
-@@ -293,6 +295,10 @@ int __init board_register_devices(void)
+@@ -297,6 +299,10 @@ int __init board_register_devices(void)
platform_device_register(&bcm63xx_gpio_keys_device);
}
@@ -11,7 +11,7 @@ Subject: [PATCH 69/80] MIPS: BCM63XX: pass caldata info to flash
--- a/arch/mips/bcm63xx/boards/board_common.c
+++ b/arch/mips/bcm63xx/boards/board_common.c
-@@ -267,7 +267,7 @@ int __init board_register_devices(void)
+@@ -271,7 +271,7 @@ int __init board_register_devices(void)
if (board.num_spis)
spi_register_board_info(board.spis, board.num_spis);
@@ -39,7 +39,7 @@
return;
--- a/arch/mips/bcm63xx/boards/board_common.c
+++ b/arch/mips/bcm63xx/boards/board_common.c
-@@ -297,7 +297,8 @@ int __init board_register_devices(void)
+@@ -301,7 +301,8 @@ int __init board_register_devices(void)
/* register any fixups */
for (i = 0; i < board.has_caldata; i++)
@@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_common.c
+++ b/arch/mips/bcm63xx/boards/board_common.c
-@@ -298,7 +298,7 @@ int __init board_register_devices(void)
+@@ -302,7 +302,7 @@ int __init board_register_devices(void)
/* register any fixups */
for (i = 0; i < board.has_caldata; i++)
pci_enable_ath9k_fixup(board.caldata[i].slot, board.caldata[i].caldata_offset,
@@ -36,7 +36,7 @@ Subject: [PATCH 72/72] 446-BCM63XX-add-a-fixup-for-rt2x00-devices
#include "board_common.h"
-@@ -296,9 +297,19 @@ int __init board_register_devices(void)
+@@ -300,9 +301,19 @@ int __init board_register_devices(void)
}
/* register any fixups */
@@ -26,7 +26,7 @@ Subject: [PATCH 58/72] BCM63XX: allow providing fixup data in board data
#if CONFIG_OF
if (of_have_populated_dt()) {
-@@ -293,6 +295,10 @@ int __init board_register_devices(void)
+@@ -297,6 +299,10 @@ int __init board_register_devices(void)
platform_device_register(&bcm63xx_gpio_keys_device);
}
@@ -11,7 +11,7 @@ Subject: [PATCH 69/80] MIPS: BCM63XX: pass caldata info to flash
--- a/arch/mips/bcm63xx/boards/board_common.c
+++ b/arch/mips/bcm63xx/boards/board_common.c
-@@ -267,7 +267,7 @@ int __init board_register_devices(void)
+@@ -271,7 +271,7 @@ int __init board_register_devices(void)
if (board.num_spis)
spi_register_board_info(board.spis, board.num_spis);
@@ -39,7 +39,7 @@
return;
--- a/arch/mips/bcm63xx/boards/board_common.c
+++ b/arch/mips/bcm63xx/boards/board_common.c
-@@ -297,7 +297,8 @@ int __init board_register_devices(void)
+@@ -301,7 +301,8 @@ int __init board_register_devices(void)
/* register any fixups */
for (i = 0; i < board.has_caldata; i++)
@@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_common.c
+++ b/arch/mips/bcm63xx/boards/board_common.c
-@@ -298,7 +298,7 @@ int __init board_register_devices(void)
+@@ -302,7 +302,7 @@ int __init board_register_devices(void)
/* register any fixups */
for (i = 0; i < board.has_caldata; i++)
pci_enable_ath9k_fixup(board.caldata[i].slot, board.caldata[i].caldata_offset,
@@ -36,7 +36,7 @@ Subject: [PATCH 72/72] 446-BCM63XX-add-a-fixup-for-rt2x00-devices
#include "board_common.h"
-@@ -296,9 +297,19 @@ int __init board_register_devices(void)
+@@ -300,9 +301,19 @@ int __init board_register_devices(void)
}
/* register any fixups */
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> ---