From: Alban Bedel <albeu@free.fr>
To: linux-mips@linux-mips.org
Cc: Rob Herring <robh+dt@kernel.org>, Pawel Moll <pawel.moll@arm.com>,
Mark Rutland <mark.rutland@arm.com>,
Ian Campbell <ijc+devicetree@hellion.org.uk>,
Kumar Gala <galak@codeaurora.org>,
Thomas Gleixner <tglx@linutronix.de>,
Jason Cooper <jason@lakedaemon.net>,
Ralf Baechle <ralf@linux-mips.org>, Alban Bedel <albeu@free.fr>,
Andrew Bresticker <abrestic@chromium.org>,
Qais Yousef <qais.yousef@imgtec.com>,
Gabor Juhos <juhosg@openwrt.org>,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH v2 06/12] MIPS: ath79: Add OF support to the IRQ controllers
Date: Sun, 19 Apr 2015 14:58:02 +0200 [thread overview]
Message-ID: <1429448288-20742-7-git-send-email-albeu@free.fr> (raw)
In-Reply-To: <1429448288-20742-1-git-send-email-albeu@free.fr>
Add OF support for the CPU and MISC interrupt controllers of most
supported ATH79 devices.
Signed-off-by: Alban Bedel <albeu@free.fr>
---
arch/mips/ath79/irq.c | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 86 insertions(+), 1 deletion(-)
diff --git a/arch/mips/ath79/irq.c b/arch/mips/ath79/irq.c
index 2c3991a..afb0096 100644
--- a/arch/mips/ath79/irq.c
+++ b/arch/mips/ath79/irq.c
@@ -15,7 +15,9 @@
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/interrupt.h>
-#include <linux/irq.h>
+#include <linux/irqchip.h>
+#include <linux/of_irq.h>
+#include "../../../drivers/irqchip/irqchip.h"
#include <asm/irq_cpu.h>
#include <asm/mipsregs.h>
@@ -23,6 +25,7 @@
#include <asm/mach-ath79/ath79.h>
#include <asm/mach-ath79/ar71xx_regs.h>
#include "common.h"
+#include "machtypes.h"
static void ath79_misc_irq_handler(unsigned int irq, struct irq_desc *desc)
{
@@ -268,8 +271,90 @@ asmlinkage void plat_irq_dispatch(void)
}
}
+#ifdef CONFIG_IRQCHIP
+static int misc_map(struct irq_domain *d, unsigned int irq, irq_hw_number_t hw)
+{
+ irq_set_chip_and_handler(irq, &ath79_misc_irq_chip, handle_level_irq);
+ return 0;
+}
+
+static const struct irq_domain_ops misc_irq_domain_ops = {
+ .xlate = irq_domain_xlate_onecell,
+ .map = misc_map,
+};
+
+static int __init ath79_misc_intc_of_init(
+ struct device_node *node, struct device_node *parent)
+{
+ void __iomem *base = ath79_reset_base;
+ struct irq_domain *domain;
+ int irq;
+
+ irq = irq_of_parse_and_map(node, 0);
+ if (!irq)
+ panic("Failed to get MISC IRQ");
+
+ domain = irq_domain_add_legacy(node, ATH79_MISC_IRQ_COUNT,
+ ATH79_MISC_IRQ_BASE, 0, &misc_irq_domain_ops, NULL);
+ if (!domain)
+ panic("Failed to add MISC irqdomain");
+
+ /* Disable and clear all interrupts */
+ __raw_writel(0, base + AR71XX_RESET_REG_MISC_INT_ENABLE);
+ __raw_writel(0, base + AR71XX_RESET_REG_MISC_INT_STATUS);
+
+
+ irq_set_chained_handler(irq, ath79_misc_irq_handler);
+
+ return 0;
+}
+IRQCHIP_DECLARE(ath79_misc_intc, "qca,ar7100-misc-intc",
+ ath79_misc_intc_of_init);
+
+static int __init ar79_cpu_intc_of_init(
+ struct device_node *node, struct device_node *parent)
+{
+ int err, i, count;
+
+ /* Fill the irq_wb_chan table */
+ count = of_count_phandle_with_args(
+ node, "qca,ddr-wb-channels", "#qca,ddr-wb-channel-cells");
+
+ for (i = 0; i < count; i++) {
+ struct of_phandle_args args;
+ u32 irq = i;
+
+ of_property_read_u32_index(
+ node, "qca,ddr-wb-channel-interrupts", i, &irq);
+ if (irq >= ARRAY_SIZE(irq_wb_chan))
+ continue;
+
+ err = of_parse_phandle_with_args(
+ node, "qca,ddr-wb-channels",
+ "#qca,ddr-wb-channel-cells",
+ i, &args);
+ if (err)
+ return err;
+
+ irq_wb_chan[irq] = args.args[0];
+ pr_info("IRQ: Set flush channel of IRQ%d to %d\n",
+ irq, args.args[0]);
+ }
+
+ return mips_cpu_irq_of_init(node, parent);
+}
+IRQCHIP_DECLARE(ar79_cpu_intc, "qca,ar7100-cpu-intc",
+ ar79_cpu_intc_of_init);
+
+#endif
+
void __init arch_init_irq(void)
{
+ if (mips_machtype == ATH79_MACH_GENERIC_OF) {
+ irqchip_init();
+ return;
+ }
+
if (soc_is_ar71xx() || soc_is_ar724x() ||
soc_is_ar913x() || soc_is_ar933x()) {
irq_wb_chan[2] = 3;
--
2.0.0
next prev parent reply other threads:[~2015-04-19 12:58 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-19 12:57 [PATCH v2 00/12] MIPS: ath79: Add OF support and DTS for TL-WR1043ND Alban Bedel
2015-04-19 12:57 ` [PATCH v2 01/12] devicetree: Add bindings for the SoC of the ATH79 familly Alban Bedel
2015-04-19 12:57 ` [PATCH v2 02/12] MIPS: ath79: Add basic device tree support Alban Bedel
[not found] ` <1429448288-20742-1-git-send-email-albeu-GANU6spQydw@public.gmane.org>
2015-04-19 12:57 ` [PATCH v2 03/12] devicetree: Add bindings for the ATH79 DDR controllers Alban Bedel
2015-04-19 13:52 ` Sergei Shtylyov
2015-04-19 12:58 ` [PATCH v2 04/12] devicetree: Add bindings for the ATH79 interrupt controllers Alban Bedel
2015-04-19 13:42 ` [PATCH v2 09/12] devicetree: Add bindings for the ATH79 GPIO controllers Alban Bedel
2015-04-19 14:27 ` Jonas Gorski
2015-04-19 15:01 ` [PATCH v2 11/12] of: Add vendor prefix for TP-Link Technologies Co. Ltd Alban Bedel
2015-04-19 12:58 ` [PATCH v2 05/12] devicetree: Add bindings for the ATH79 MISC interrupt controllers Alban Bedel
2015-04-19 12:58 ` Alban Bedel [this message]
2015-04-19 12:58 ` [PATCH v2 07/12] devicetree: Add bindings for the ATH79 PLL controllers Alban Bedel
[not found] ` <1429448288-20742-8-git-send-email-albeu-GANU6spQydw@public.gmane.org>
2015-04-19 14:30 ` Jonas Gorski
2015-04-19 12:58 ` [PATCH v2 08/12] MIPS: ath79: Add OF support to the clocks Alban Bedel
2015-04-19 14:36 ` [PATCH v2 10/12] MIPS: ath79: Add OF support to the GPIO driver Alban Bedel
2015-04-19 15:27 ` [PATCH v2 12/12] MIPS: Add basic support for the TL-WR1043ND version 1 Alban Bedel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1429448288-20742-7-git-send-email-albeu@free.fr \
--to=albeu@free.fr \
--cc=abrestic@chromium.org \
--cc=devicetree@vger.kernel.org \
--cc=galak@codeaurora.org \
--cc=ijc+devicetree@hellion.org.uk \
--cc=jason@lakedaemon.net \
--cc=juhosg@openwrt.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@linux-mips.org \
--cc=mark.rutland@arm.com \
--cc=pawel.moll@arm.com \
--cc=qais.yousef@imgtec.com \
--cc=ralf@linux-mips.org \
--cc=robh+dt@kernel.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).