From patchwork Mon Aug 20 14:19:56 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shawn Guo X-Patchwork-Id: 1349241 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) by patchwork2.kernel.org (Postfix) with ESMTP id 1590BDFF0F for ; Mon, 20 Aug 2012 14:25:10 +0000 (UTC) Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1T3Sq7-0006Kc-6Z; Mon, 20 Aug 2012 14:20:23 +0000 Received: from mail-yw0-f49.google.com ([209.85.213.49]) by merlin.infradead.org with esmtps (Exim 4.76 #1 (Red Hat Linux)) id 1T3Spf-0006BH-FP for linux-arm-kernel@lists.infradead.org; Mon, 20 Aug 2012 14:19:56 +0000 Received: by yhjj52 with SMTP id j52so5394223yhj.36 for ; Mon, 20 Aug 2012 07:19:54 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references :x-gm-message-state; bh=sPpfpwNmeRXiCqGvm86LPVVTG62SxzpCFd5/93n2fIo=; b=V6ThXy1d4LdTuntldeLPJCw9JHDHWQlC/m1S9o3Pl/XQPlLPRvZrO4a8/5w8B8O7TI r9Dyjb1SV2PGrBkCdV3SP5PP+VFuaxUFgEjtinLY0a0TRwS0E9S4u+uwXPnfeUuKTXPa EG3dbK+sZHZWrxA45pxzzFAIm6Bqw1ufrBjtu6UJJ507OYuI8qd693AmVVretUzs13Y2 L1ZnJjKYVQg4s5rnfcLcBZOt0tx7YfNPlODPXXwId6c0YG7vhDZRHvYx6oZPqBFa19mN kMSDmVpDNu1eRCxgXGqlw+ERKXTX2RZE232vGUyfeDYh9ZApBTfr/fcC4Zb3e7LrieKt rrsw== Received: by 10.68.191.134 with SMTP id gy6mr28551269pbc.136.1345472393749; Mon, 20 Aug 2012 07:19:53 -0700 (PDT) Received: from localhost.localdomain ([114.216.232.42]) by mx.google.com with ESMTPS id tv6sm11191256pbc.24.2012.08.20.07.19.51 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 20 Aug 2012 07:19:53 -0700 (PDT) From: Shawn Guo To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 2/6] ARM: mxs: retrieve timer irq from device tree Date: Mon, 20 Aug 2012 22:19:56 +0800 Message-Id: <1345472400-31262-3-git-send-email-shawn.guo@linaro.org> X-Mailer: git-send-email 1.7.5.4 In-Reply-To: <1345472400-31262-1-git-send-email-shawn.guo@linaro.org> References: <1345472400-31262-1-git-send-email-shawn.guo@linaro.org> X-Gm-Message-State: ALoCoQkgqTw9kqn+5XFenVEcpW/l++Rij0Tif9fjShNMIRC7GU9HdzIOwhfGXcgT+bC642CJ/KY9 X-Spam-Note: CRM114 invocation failed X-Spam-Score: -2.6 (--) X-Spam-Report: SpamAssassin version 3.3.2 on merlin.infradead.org summary: Content analysis details: (-2.6 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [209.85.213.49 listed in list.dnswl.org] -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] Cc: Shawn Guo X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: linux-arm-kernel-bounces@lists.infradead.org Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org Rather than using the static timer irq definition, we should retrieve timer irq from device tree for better. Signed-off-by: Shawn Guo --- arch/arm/boot/dts/imx23.dtsi | 3 ++- arch/arm/boot/dts/imx28.dtsi | 3 ++- arch/arm/mach-mxs/include/mach/common.h | 2 +- arch/arm/mach-mxs/timer.c | 13 ++++++++++++- drivers/clk/mxs/clk-imx23.c | 2 +- drivers/clk/mxs/clk-imx28.c | 2 +- 6 files changed, 19 insertions(+), 6 deletions(-) diff --git a/arch/arm/boot/dts/imx23.dtsi b/arch/arm/boot/dts/imx23.dtsi index 9700872..2672dcf 100644 --- a/arch/arm/boot/dts/imx23.dtsi +++ b/arch/arm/boot/dts/imx23.dtsi @@ -400,8 +400,9 @@ }; timrot@80068000 { + compatible = "fsl,imx23-timrot", "fsl,timrot"; reg = <0x80068000 0x2000>; - status = "disabled"; + interrupts = <28 29 30 31>; }; auart0: serial@8006c000 { diff --git a/arch/arm/boot/dts/imx28.dtsi b/arch/arm/boot/dts/imx28.dtsi index e2240da..f8b145a 100644 --- a/arch/arm/boot/dts/imx28.dtsi +++ b/arch/arm/boot/dts/imx28.dtsi @@ -686,8 +686,9 @@ }; timrot@80068000 { + compatible = "fsl,imx28-timrot", "fsl,timrot"; reg = <0x80068000 0x2000>; - status = "disabled"; + interrupts = <48 49 50 51>; }; auart0: serial@8006a000 { diff --git a/arch/arm/mach-mxs/include/mach/common.h b/arch/arm/mach-mxs/include/mach/common.h index 4dec795..6798be5 100644 --- a/arch/arm/mach-mxs/include/mach/common.h +++ b/arch/arm/mach-mxs/include/mach/common.h @@ -13,7 +13,7 @@ extern const u32 *mxs_get_ocotp(void); extern int mxs_reset_block(void __iomem *); -extern void mxs_timer_init(int); +extern void mxs_timer_init(void); extern void mxs_restart(char, const char *); extern int mxs_saif_clkmux_select(unsigned int clkmux); diff --git a/arch/arm/mach-mxs/timer.c b/arch/arm/mach-mxs/timer.c index 02d36de..7c37926 100644 --- a/arch/arm/mach-mxs/timer.c +++ b/arch/arm/mach-mxs/timer.c @@ -25,6 +25,8 @@ #include #include #include +#include +#include #include #include @@ -244,9 +246,17 @@ static int __init mxs_clocksource_init(struct clk *timer_clk) return 0; } -void __init mxs_timer_init(int irq) +void __init mxs_timer_init(void) { + struct device_node *np; struct clk *timer_clk; + int irq; + + np = of_find_compatible_node(NULL, NULL, "fsl,timrot"); + if (!np) { + pr_err("%s: failed find timrot node\n", __func__); + return; + } timer_clk = clk_get_sys("timrot", NULL); if (IS_ERR(timer_clk)) { @@ -295,5 +305,6 @@ void __init mxs_timer_init(int irq) mxs_clockevent_init(timer_clk); /* Make irqs happen */ + irq = irq_of_parse_and_map(np, 0); setup_irq(irq, &mxs_timer_irq); } diff --git a/drivers/clk/mxs/clk-imx23.c b/drivers/clk/mxs/clk-imx23.c index 844043ad0..e0dc3f8 100644 --- a/drivers/clk/mxs/clk-imx23.c +++ b/drivers/clk/mxs/clk-imx23.c @@ -200,7 +200,7 @@ int __init mx23_clocks_init(void) for (i = 0; i < ARRAY_SIZE(clks_init_on); i++) clk_prepare_enable(clks[clks_init_on[i]]); - mxs_timer_init(MX23_INT_TIMER0); + mxs_timer_init(); return 0; } diff --git a/drivers/clk/mxs/clk-imx28.c b/drivers/clk/mxs/clk-imx28.c index e3aab67..9df864d 100644 --- a/drivers/clk/mxs/clk-imx28.c +++ b/drivers/clk/mxs/clk-imx28.c @@ -337,7 +337,7 @@ int __init mx28_clocks_init(void) for (i = 0; i < ARRAY_SIZE(clks_init_on); i++) clk_prepare_enable(clks[clks_init_on[i]]); - mxs_timer_init(MX28_INT_TIMER0); + mxs_timer_init(); return 0; }