From c2308a7e4adbb2acc8ff149f91d1ca46801c135e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Mon, 23 Dec 2019 17:25:19 +0100 Subject: brcm2708: update to latest patches from RPi Foundation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also removes reverted patches. Signed-off-by: Álvaro Fernández Rojas --- ...-irq-bcm2836-Remove-regmap-and-syscon-use.patch | 112 --------------------- 1 file changed, 112 deletions(-) delete mode 100644 target/linux/brcm2708/patches-4.19/950-0032-irqchip-irq-bcm2836-Remove-regmap-and-syscon-use.patch (limited to 'target/linux/brcm2708/patches-4.19/950-0032-irqchip-irq-bcm2836-Remove-regmap-and-syscon-use.patch') diff --git a/target/linux/brcm2708/patches-4.19/950-0032-irqchip-irq-bcm2836-Remove-regmap-and-syscon-use.patch b/target/linux/brcm2708/patches-4.19/950-0032-irqchip-irq-bcm2836-Remove-regmap-and-syscon-use.patch deleted file mode 100644 index 0881053ab2..0000000000 --- a/target/linux/brcm2708/patches-4.19/950-0032-irqchip-irq-bcm2836-Remove-regmap-and-syscon-use.patch +++ /dev/null @@ -1,112 +0,0 @@ -From f1905bc5137db49ef155f835d52d68cb86c4c9a9 Mon Sep 17 00:00:00 2001 -From: Phil Elwell -Date: Tue, 23 Jan 2018 16:52:45 +0000 -Subject: [PATCH] irqchip: irq-bcm2836: Remove regmap and syscon use - -The syscon node defines a register range that duplicates that used by -the local_intc node on bcm2836/7. Since irq-bcm2835 and irq-bcm2836 are -built in and always present together (both drivers are enabled by -CONFIG_ARCH_BCM2835), it is possible to replace the syscon usage with a -global variable that simplifies the code. Doing so does lose the -locking provided by regmap, but as only one side is using the regmap -interface (irq-bcm2835 uses readl and write) there is no loss of -atomicity. - -See: https://github.com/raspberrypi/firmware/issues/926 - -Signed-off-by: Phil Elwell ---- - drivers/irqchip/irq-bcm2835.c | 32 ++++++++++++-------------------- - drivers/irqchip/irq-bcm2836.c | 5 +++++ - 2 files changed, 17 insertions(+), 20 deletions(-) - ---- a/drivers/irqchip/irq-bcm2835.c -+++ b/drivers/irqchip/irq-bcm2835.c -@@ -50,8 +50,6 @@ - #include - #include - #include --#include --#include - - #include - #include -@@ -100,7 +98,7 @@ struct armctrl_ic { - void __iomem *enable[NR_BANKS]; - void __iomem *disable[NR_BANKS]; - struct irq_domain *domain; -- struct regmap *local_regmap; -+ void __iomem *local_base; - }; - - static struct armctrl_ic intc __read_mostly; -@@ -137,24 +135,20 @@ static void armctrl_unmask_irq(struct ir - if (d->hwirq >= NUMBER_IRQS) { - if (num_online_cpus() > 1) { - unsigned int data; -- int ret; - -- if (!intc.local_regmap) { -- pr_err("FIQ is disabled due to missing regmap\n"); -+ if (!intc.local_base) { -+ pr_err("FIQ is disabled due to missing arm_local_intc\n"); - return; - } - -- ret = regmap_read(intc.local_regmap, -- ARM_LOCAL_GPU_INT_ROUTING, &data); -- if (ret) { -- pr_err("Failed to read int routing %d\n", ret); -- return; -- } -+ data = readl_relaxed(intc.local_base + -+ ARM_LOCAL_GPU_INT_ROUTING); - - data &= ~0xc; - data |= (1 << 2); -- regmap_write(intc.local_regmap, -- ARM_LOCAL_GPU_INT_ROUTING, data); -+ writel_relaxed(data, -+ intc.local_base + -+ ARM_LOCAL_GPU_INT_ROUTING); - } - - writel_relaxed(REG_FIQ_ENABLE | hwirq_to_fiq(d->hwirq), -@@ -240,12 +234,10 @@ static int __init armctrl_of_init(struct - } - - if (is_2836) { -- intc.local_regmap = -- syscon_regmap_lookup_by_compatible("brcm,bcm2836-arm-local"); -- if (IS_ERR(intc.local_regmap)) { -- pr_err("Failed to get local register map. FIQ is disabled for cpus > 1\n"); -- intc.local_regmap = NULL; -- } -+ extern void __iomem * __attribute__((weak)) arm_local_intc; -+ intc.local_base = arm_local_intc; -+ if (!intc.local_base) -+ pr_err("Failed to get local intc base. FIQ is disabled for cpus > 1\n"); - } - - /* Make a duplicate irq range which is used to enable FIQ */ ---- a/drivers/irqchip/irq-bcm2836.c -+++ b/drivers/irqchip/irq-bcm2836.c -@@ -30,6 +30,9 @@ struct bcm2836_arm_irqchip_intc { - - static struct bcm2836_arm_irqchip_intc intc __read_mostly; - -+void __iomem *arm_local_intc; -+EXPORT_SYMBOL_GPL(arm_local_intc); -+ - static void bcm2836_arm_irqchip_mask_per_cpu_irq(unsigned int reg_offset, - unsigned int bit, - int cpu) -@@ -234,6 +237,8 @@ static int __init bcm2836_arm_irqchip_l1 - panic("%pOF: unable to map local interrupt registers\n", node); - } - -+ arm_local_intc = intc.base; -+ - bcm2835_init_local_timer_frequency(); - - intc.domain = irq_domain_add_linear(node, LAST_IRQ + 1, -- cgit v1.2.3