From patchwork Fri Mar 23 07:49:27 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Viresh KUMAR X-Patchwork-Id: 148392 Return-Path: X-Original-To: incoming-imx@patchwork.ozlabs.org Delivered-To: patchwork-incoming-imx@bilbo.ozlabs.org Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:4978:20e::2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 3CE1AB6F9F for ; Fri, 23 Mar 2012 19:07:46 +1100 (EST) Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1SAzUr-00056s-Hs; Fri, 23 Mar 2012 08:05:17 +0000 Received: from eu1sys200aog115.obsmtp.com ([207.126.144.139]) by merlin.infradead.org with smtps (Exim 4.76 #1 (Red Hat Linux)) id 1SAzUm-00056O-AR for linux-arm-kernel@lists.infradead.org; Fri, 23 Mar 2012 08:05:16 +0000 Received: from beta.dmz-ap.st.com ([138.198.100.35]) (using TLSv1) by eu1sys200aob115.postini.com ([207.126.147.11]) with SMTP ID DSNKT2wul8xfmxsSgE9bNzCzb4y145eUx4db@postini.com; Fri, 23 Mar 2012 08:05:11 UTC Received: from zeta.dmz-ap.st.com (ns6.st.com [138.198.234.13]) by beta.dmz-ap.st.com (STMicroelectronics) with ESMTP id 3056FBC; Fri, 23 Mar 2012 07:56:10 +0000 (GMT) Received: from Webmail-ap.st.com (eapex1hubcas4.st.com [10.80.176.69]) by zeta.dmz-ap.st.com (STMicroelectronics) with ESMTP id 13DF2620; Fri, 23 Mar 2012 08:04:34 +0000 (GMT) Received: from localhost (10.199.82.50) by Webmail-ap.st.com (10.80.176.7) with Microsoft SMTP Server (TLS) id 8.3.192.1; Fri, 23 Mar 2012 16:03:43 +0800 From: Viresh Kumar To: , Subject: [PATCH 2/2] ARM: GIC: Create common infrastructure for GIC DT bindings Date: Fri, 23 Mar 2012 13:19:27 +0530 Message-ID: <23b4d2ea357a7a785b6c42d0fa7ae9478bad552b.1332488625.git.viresh.kumar@st.com> X-Mailer: git-send-email 1.7.8.110.g4cb5d In-Reply-To: <4bfe7af3761f6f40506a2089fd67866015f6d7f3.1332488625.git.viresh.kumar@st.com> References: <4bfe7af3761f6f40506a2089fd67866015f6d7f3.1332488625.git.viresh.kumar@st.com> MIME-Version: 1.0 X-Spam-Note: CRM114 invocation failed X-Spam-Score: -4.2 (----) X-Spam-Report: SpamAssassin version 3.3.2 on merlin.infradead.org summary: Content analysis details: (-4.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at http://www.dnswl.org/, medium trust [207.126.144.139 listed in list.dnswl.org] -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] Cc: devicetree-discuss@ozlabs.org, linus.walleij@stericsson.com, pawel.moll@arm.com, swarren@wwwdotorg.org, srinidhi.kasagar@stericsson.com, spear-devel@list.st.com, rob.herring@calxeda.com, kgene.kim@samsung.com, viresh.linux@gmail.com, kernel@pengutronix.de, ccross@android.com, olof@lixom.net, jamie@jamieiles.com, sr@denx.de, linux-arm-kernel@lists.infradead.org X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.14 Precedence: list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-arm-kernel-bounces@lists.infradead.org Errors-To: linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org List-Id: linux-imx-kernel.lists.patchwork.ozlabs.org Few platforms define there own struct of_device_id[] for GIC. They don't do anything specific in init_irq() other than of_irq_init(). This patch creates this struct array in gic.c and make other platforms use it. Signed-off-by: Viresh Kumar Acked-by: Stephen Warren --- arch/arm/common/gic.c | 10 ++++++++++ arch/arm/include/asm/hardware/gic.h | 1 + arch/arm/mach-exynos/common.c | 9 +-------- arch/arm/mach-highbank/highbank.c | 7 +------ arch/arm/mach-imx/mach-imx6q.c | 2 +- arch/arm/mach-tegra/common.c | 7 +------ arch/arm/mach-ux500/cpu.c | 7 +------ arch/arm/mach-vexpress/v2m.c | 12 +----------- 8 files changed, 17 insertions(+), 38 deletions(-) diff --git a/arch/arm/common/gic.c b/arch/arm/common/gic.c index aa52699..77afdae 100644 --- a/arch/arm/common/gic.c +++ b/arch/arm/common/gic.c @@ -781,4 +781,14 @@ int __init gic_of_init(struct device_node *node, struct device_node *parent) gic_cnt++; return 0; } + +static const struct of_device_id gic_of_match[] __initconst = { + { .compatible = "arm,cortex-a9-gic", .data = gic_of_init, }, + { /* Sentinel */ } +}; + +void __init gic_init_irq(void) +{ + of_irq_init(gic_of_match); +} #endif diff --git a/arch/arm/include/asm/hardware/gic.h b/arch/arm/include/asm/hardware/gic.h index 4b1ce6c..7bce4bd 100644 --- a/arch/arm/include/asm/hardware/gic.h +++ b/arch/arm/include/asm/hardware/gic.h @@ -42,6 +42,7 @@ void gic_init_bases(unsigned int, int, void __iomem *, void __iomem *, u32 offset, struct device_node *); int gic_of_init(struct device_node *node, struct device_node *parent); void gic_secondary_init(unsigned int); +void __init gic_init_irq(void); void gic_handle_irq(struct pt_regs *regs); void gic_cascade_irq(unsigned int gic_nr, unsigned int irq); void gic_raise_softirq(const struct cpumask *mask, unsigned int irq); diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/common.c index 85ed8b5..76f6079 100644 --- a/arch/arm/mach-exynos/common.c +++ b/arch/arm/mach-exynos/common.c @@ -502,13 +502,6 @@ static void __init combiner_init(unsigned int combiner_nr, void __iomem *base, } } -#ifdef CONFIG_OF -static const struct of_device_id exynos4_dt_irq_match[] = { - { .compatible = "arm,cortex-a9-gic", .data = gic_of_init, }, - {}, -}; -#endif - void __init exynos4_init_irq(void) { int irq; @@ -520,7 +513,7 @@ void __init exynos4_init_irq(void) gic_init_bases(0, IRQ_PPI(0), S5P_VA_GIC_DIST, S5P_VA_GIC_CPU, gic_bank_offset, NULL); #ifdef CONFIG_OF else - of_irq_init(exynos4_dt_irq_match); + gic_init_irq(); #endif for (irq = 0; irq < EXYNOS4_MAX_COMBINER_NR; irq++) { diff --git a/arch/arm/mach-highbank/highbank.c b/arch/arm/mach-highbank/highbank.c index 410a112..42b30c6 100644 --- a/arch/arm/mach-highbank/highbank.c +++ b/arch/arm/mach-highbank/highbank.c @@ -80,14 +80,9 @@ void highbank_set_cpu_jump(int cpu, void *jump_addr) HB_JUMP_TABLE_PHYS(cpu) + 15); } -const static struct of_device_id irq_match[] = { - { .compatible = "arm,cortex-a9-gic", .data = gic_of_init, }, - {} -}; - static void __init highbank_init_irq(void) { - of_irq_init(irq_match); + gic_init_irq(); l2x0_of_init(0, ~0UL); } diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c index 7696dfa..ebaf6c5 100644 --- a/arch/arm/mach-imx/mach-imx6q.c +++ b/arch/arm/mach-imx/mach-imx6q.c @@ -105,7 +105,6 @@ static int __init imx6q_gpio_add_irq_domain(struct device_node *np, } static const struct of_device_id imx6q_irq_match[] __initconst = { - { .compatible = "arm,cortex-a9-gic", .data = gic_of_init, }, { .compatible = "fsl,imx6q-gpio", .data = imx6q_gpio_add_irq_domain, }, { /* sentinel */ } }; @@ -115,6 +114,7 @@ static void __init imx6q_init_irq(void) l2x0_of_init(0, ~0UL); imx_src_init(); imx_gpc_init(); + gic_init_irq(); of_irq_init(imx6q_irq_match); } diff --git a/arch/arm/mach-tegra/common.c b/arch/arm/mach-tegra/common.c index 22df10f..c8d6208 100644 --- a/arch/arm/mach-tegra/common.c +++ b/arch/arm/mach-tegra/common.c @@ -52,15 +52,10 @@ u32 tegra_uart_config[3] = { }; #ifdef CONFIG_OF -static const struct of_device_id tegra_dt_irq_match[] __initconst = { - { .compatible = "arm,cortex-a9-gic", .data = gic_of_init }, - { } -}; - void __init tegra_dt_init_irq(void) { tegra_init_irq(); - of_irq_init(tegra_dt_irq_match); + gic_init_irq(); } #endif diff --git a/arch/arm/mach-ux500/cpu.c b/arch/arm/mach-ux500/cpu.c index d11f389..3bb6f13 100644 --- a/arch/arm/mach-ux500/cpu.c +++ b/arch/arm/mach-ux500/cpu.c @@ -30,11 +30,6 @@ void __iomem *_PRCMU_BASE; -static const struct of_device_id ux500_dt_irq_match[] = { - { .compatible = "arm,cortex-a9-gic", .data = gic_of_init, }, - {}, -}; - void __init ux500_init_irq(void) { void __iomem *dist_base; @@ -51,7 +46,7 @@ void __init ux500_init_irq(void) #ifdef CONFIG_OF if (of_have_populated_dt()) - of_irq_init(ux500_dt_irq_match); + gic_init_irq(); else #endif gic_init(0, 29, dist_base, cpu_base); diff --git a/arch/arm/mach-vexpress/v2m.c b/arch/arm/mach-vexpress/v2m.c index 47cdcca..3d875f2 100644 --- a/arch/arm/mach-vexpress/v2m.c +++ b/arch/arm/mach-vexpress/v2m.c @@ -619,16 +619,6 @@ void __init v2m_dt_init_early(void) versatile_sched_clock_init(v2m_sysreg_base + V2M_SYS_24MHZ, 24000000); } -static struct of_device_id vexpress_irq_match[] __initdata = { - { .compatible = "arm,cortex-a9-gic", .data = gic_of_init, }, - {} -}; - -static void __init v2m_dt_init_irq(void) -{ - of_irq_init(vexpress_irq_match); -} - static void __init v2m_dt_timer_init(void) { struct device_node *node; @@ -677,7 +667,7 @@ DT_MACHINE_START(VEXPRESS_DT, "ARM-Versatile Express") .dt_compat = v2m_dt_match, .map_io = v2m_dt_map_io, .init_early = v2m_dt_init_early, - .init_irq = v2m_dt_init_irq, + .init_irq = gic_init_irq, .timer = &v2m_dt_timer, .init_machine = v2m_dt_init, .handle_irq = gic_handle_irq,