From patchwork Tue Mar 12 17:08:34 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Haojian Zhuang X-Patchwork-Id: 15294 Return-Path: X-Original-To: patchwork@peony.canonical.com Delivered-To: patchwork@peony.canonical.com Received: from fiordland.canonical.com (fiordland.canonical.com [91.189.94.145]) by peony.canonical.com (Postfix) with ESMTP id 7BADC23E3E for ; Tue, 12 Mar 2013 17:09:20 +0000 (UTC) Received: from mail-vb0-f52.google.com (mail-vb0-f52.google.com [209.85.212.52]) by fiordland.canonical.com (Postfix) with ESMTP id 17E8DA187A4 for ; Tue, 12 Mar 2013 17:09:20 +0000 (UTC) Received: by mail-vb0-f52.google.com with SMTP id fa15so2381533vbb.11 for ; Tue, 12 Mar 2013 10:09:19 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:x-forwarded-to:x-forwarded-for:delivered-to:x-received :received-spf:x-received:from:to:cc:subject:date:message-id:x-mailer :in-reply-to:references:x-gm-message-state; bh=nr1hD0evakrs/aZ4eZcc/4pkLzyDjL+xtE5DR3W3zmo=; b=IldPqsRdzKLdQgIJX+XmWPkxeqW3L8OQ0Q30wqzrj3jPZ2rD1ywgZb9SFtykzmekt2 Piz8IL1E4bPTWP2rD1neZaVc4cszJk5yoBtXH5TmIxZCOGYCl8vy9vX64DY7IVhe7D7o rL+JGncWl9j4OpLxiXD9vax6t9MFBs8OqI0mAcoOzDvN+Prv7PWbXXvB/dmsM68Isazk UfQ2/rksNjCQkbSTM7gK5myzoadtPqr8nylwQvOKGI2RQGHcz2WqeicOt5/ADVFhqPvw f4bd49vVbuaJb68jlDD/4g2HdzY/orcIjWP+6joij1XEQuEhpuUdF6ZeuY5OLsYi+TxU 8kUw== X-Received: by 10.52.29.18 with SMTP id f18mr5905665vdh.57.1363108159533; Tue, 12 Mar 2013 10:09:19 -0700 (PDT) X-Forwarded-To: linaro-patchwork@canonical.com X-Forwarded-For: patch@linaro.org linaro-patchwork@canonical.com Delivered-To: patches@linaro.org Received: by 10.58.127.98 with SMTP id nf2csp138391veb; Tue, 12 Mar 2013 10:09:19 -0700 (PDT) X-Received: by 10.182.39.69 with SMTP id n5mr13153282obk.72.1363108158648; Tue, 12 Mar 2013 10:09:18 -0700 (PDT) Received: from mail-ie0-x232.google.com (mail-ie0-x232.google.com [2607:f8b0:4001:c03::232]) by mx.google.com with ESMTPS id jt2si4896887obb.8.2013.03.12.10.09.18 (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 12 Mar 2013 10:09:18 -0700 (PDT) Received-SPF: neutral (google.com: 2607:f8b0:4001:c03::232 is neither permitted nor denied by best guess record for domain of haojian.zhuang@linaro.org) client-ip=2607:f8b0:4001:c03::232; Authentication-Results: mx.google.com; spf=neutral (google.com: 2607:f8b0:4001:c03::232 is neither permitted nor denied by best guess record for domain of haojian.zhuang@linaro.org) smtp.mail=haojian.zhuang@linaro.org Received: by mail-ie0-f178.google.com with SMTP id c13so100725ieb.23 for ; Tue, 12 Mar 2013 10:09:18 -0700 (PDT) X-Received: by 10.50.236.100 with SMTP id ut4mr11872822igc.86.1363108157998; Tue, 12 Mar 2013 10:09:17 -0700 (PDT) Received: from localhost.localdomain ([140.206.155.72]) by mx.google.com with ESMTPS id xc3sm20593825igb.10.2013.03.12.10.09.13 (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 12 Mar 2013 10:09:17 -0700 (PDT) From: Haojian Zhuang To: linux@arm.linux.org.uk, linus.walleij@linaro.org, arnd@arndb.de, olof@lixom.net, rob.herring@calxeda.com, linux-arm-kernel@lists.infradead.org, pawel.moll@arm.com, swarren@nvidia.com, john.stultz@linaro.org, tglx@linutronix.de, mturquette@linaro.org Cc: patches@linaro.org, Haojian Zhuang Subject: [PATCH v2 05/14] ARM: integrator: use clocksource_of_init for sp804 Date: Wed, 13 Mar 2013 01:08:34 +0800 Message-Id: <1363108124-17484-6-git-send-email-haojian.zhuang@linaro.org> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1363108124-17484-1-git-send-email-haojian.zhuang@linaro.org> References: <1363108124-17484-1-git-send-email-haojian.zhuang@linaro.org> X-Gm-Message-State: ALoCoQmqOpztr9Gi/mrVDYY90v+gphzzQvAlAmGxZ0JiRNvwrz1WbV2q5c2eqHUlMxIOlTc3pv57 Remove all code to parse sp804 in integrator platform driver. Use clocksource_of_init() instead since these code are implemented in sp804 driver already. Signed-off-by: Haojian Zhuang --- arch/arm/boot/dts/integrator.dtsi | 3 +++ arch/arm/boot/dts/integratorap.dts | 15 +++++------ arch/arm/boot/dts/integratorcp.dts | 9 +++---- arch/arm/mach-integrator/Kconfig | 3 +++ arch/arm/mach-integrator/integrator_ap.c | 41 +----------------------------- arch/arm/mach-integrator/integrator_cp.c | 35 ++----------------------- 6 files changed, 20 insertions(+), 86 deletions(-) diff --git a/arch/arm/boot/dts/integrator.dtsi b/arch/arm/boot/dts/integrator.dtsi index 813b91d..749ac21 100644 --- a/arch/arm/boot/dts/integrator.dtsi +++ b/arch/arm/boot/dts/integrator.dtsi @@ -9,18 +9,21 @@ reg = <0x13000000 0x100>; interrupt-parent = <&pic>; interrupts = <5>; + status = "disabled"; }; timer@13000100 { reg = <0x13000100 0x100>; interrupt-parent = <&pic>; interrupts = <6>; + status = "disabled"; }; timer@13000200 { reg = <0x13000200 0x100>; interrupt-parent = <&pic>; interrupts = <7>; + status = "disabled"; }; pic@14000000 { diff --git a/arch/arm/boot/dts/integratorap.dts b/arch/arm/boot/dts/integratorap.dts index c9c3fa3..70e321c 100644 --- a/arch/arm/boot/dts/integratorap.dts +++ b/arch/arm/boot/dts/integratorap.dts @@ -9,11 +9,6 @@ model = "ARM Integrator/AP"; compatible = "arm,integrator-ap"; - aliases { - arm,timer-primary = &timer2; - arm,timer-secondary = &timer1; - }; - chosen { bootargs = "root=/dev/ram0 console=ttyAM0,38400n8 earlyprintk"; }; @@ -24,15 +19,19 @@ }; timer0: timer@13000000 { - compatible = "arm,integrator-timer"; + compatible = "arm,sp804", "arm,primecell"; }; timer1: timer@13000100 { - compatible = "arm,integrator-timer"; + compatible = "arm,sp804", "arm,primecell"; + arm,sp804-clockevent = <0>; + status = "ok"; }; timer2: timer@13000200 { - compatible = "arm,integrator-timer"; + compatible = "arm,sp804", "arm,primecell"; + arm,sp804-clocksource = <0>; + status = "ok"; }; pic: pic@14000000 { diff --git a/arch/arm/boot/dts/integratorcp.dts b/arch/arm/boot/dts/integratorcp.dts index 8b11939..19b2e3e 100644 --- a/arch/arm/boot/dts/integratorcp.dts +++ b/arch/arm/boot/dts/integratorcp.dts @@ -9,11 +9,6 @@ model = "ARM Integrator/CP"; compatible = "arm,integrator-cp"; - aliases { - arm,timer-primary = &timer2; - arm,timer-secondary = &timer1; - }; - chosen { bootargs = "root=/dev/ram0 console=ttyAMA0,38400n8 earlyprintk"; }; @@ -29,10 +24,14 @@ timer1: timer@13000100 { compatible = "arm,sp804", "arm,primecell"; + arm,sp804-clockevent = <0>; + status = "ok"; }; timer2: timer@13000200 { compatible = "arm,sp804", "arm,primecell"; + arm,sp804-clocksource = <0>; + status = "ok"; }; pic: pic@14000000 { diff --git a/arch/arm/mach-integrator/Kconfig b/arch/arm/mach-integrator/Kconfig index abeff25..031f43a 100644 --- a/arch/arm/mach-integrator/Kconfig +++ b/arch/arm/mach-integrator/Kconfig @@ -5,6 +5,7 @@ menu "Integrator Options" config ARCH_INTEGRATOR_AP bool "Support Integrator/AP and Integrator/PP2 platforms" select CLKSRC_MMIO + select CLKSRC_OF select MIGHT_HAVE_PCI select SERIAL_AMBA_PL010 select SERIAL_AMBA_PL010_CONSOLE @@ -15,6 +16,8 @@ config ARCH_INTEGRATOR_AP config ARCH_INTEGRATOR_CP bool "Support Integrator/CP platform" + select CLKSRC_MMIO + select CLKSRC_OF select ARCH_CINTEGRATOR select ARM_TIMER_SP804 select PLAT_VERSATILE_CLCD diff --git a/arch/arm/mach-integrator/integrator_ap.c b/arch/arm/mach-integrator/integrator_ap.c index c2112ff..2266944 100644 --- a/arch/arm/mach-integrator/integrator_ap.c +++ b/arch/arm/mach-integrator/integrator_ap.c @@ -425,45 +425,6 @@ void __init ap_init_early(void) #ifdef CONFIG_OF -static void __init ap_of_timer_init(void) -{ - struct device_node *node; - const char *path; - void __iomem *base; - int err; - int irq; - struct clk *clk; - unsigned long rate; - - clk = clk_get_sys("ap_timer", NULL); - BUG_ON(IS_ERR(clk)); - clk_prepare_enable(clk); - rate = clk_get_rate(clk); - - err = of_property_read_string(of_aliases, - "arm,timer-primary", &path); - if (WARN_ON(err)) - return; - node = of_find_node_by_path(path); - base = of_iomap(node, 0); - if (WARN_ON(!base)) - return; - writel(0, base + TIMER_CTRL); - integrator_clocksource_init(rate, base); - - err = of_property_read_string(of_aliases, - "arm,timer-secondary", &path); - if (WARN_ON(err)) - return; - node = of_find_node_by_path(path); - base = of_iomap(node, 0); - if (WARN_ON(!base)) - return; - irq = irq_of_parse_and_map(node, 0); - writel(0, base + TIMER_CTRL); - integrator_clockevent_init(rate, base, irq); -} - static const struct of_device_id fpga_irq_of_match[] __initconst = { { .compatible = "arm,versatile-fpga-irq", .data = fpga_irq_of_init, }, { /* Sentinel */ } @@ -582,7 +543,7 @@ DT_MACHINE_START(INTEGRATOR_AP_DT, "ARM Integrator/AP (Device Tree)") .init_early = ap_init_early, .init_irq = ap_init_irq_of, .handle_irq = fpga_handle_irq, - .init_time = ap_of_timer_init, + .init_time = clocksource_of_init, .init_machine = ap_init_of, .restart = integrator_restart, .dt_compat = ap_dt_board_compat, diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c index 40373ec..6e1c340 100644 --- a/arch/arm/mach-integrator/integrator_cp.c +++ b/arch/arm/mach-integrator/integrator_cp.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -251,38 +252,6 @@ static void __init intcp_init_early(void) #ifdef CONFIG_OF -static void __init cp_of_timer_init(void) -{ - struct device_node *node; - const char *path; - void __iomem *base; - int err; - int irq; - - err = of_property_read_string(of_aliases, - "arm,timer-primary", &path); - if (WARN_ON(err)) - return; - node = of_find_node_by_path(path); - base = of_iomap(node, 0); - if (WARN_ON(!base)) - return; - writel(0, base + TIMER_CTRL); - sp804_clocksource_init(base, node->name); - - err = of_property_read_string(of_aliases, - "arm,timer-secondary", &path); - if (WARN_ON(err)) - return; - node = of_find_node_by_path(path); - base = of_iomap(node, 0); - if (WARN_ON(!base)) - return; - irq = irq_of_parse_and_map(node, 0); - writel(0, base + TIMER_CTRL); - sp804_clockevents_init(base, irq, node->name); -} - static const struct of_device_id fpga_irq_of_match[] __initconst = { { .compatible = "arm,versatile-fpga-irq", .data = fpga_irq_of_init, }, { /* Sentinel */ } @@ -386,7 +355,7 @@ DT_MACHINE_START(INTEGRATOR_CP_DT, "ARM Integrator/CP (Device Tree)") .init_early = intcp_init_early, .init_irq = intcp_init_irq_of, .handle_irq = fpga_handle_irq, - .init_time = cp_of_timer_init, + .init_time = clocksource_of_init, .init_machine = intcp_init_of, .restart = integrator_restart, .dt_compat = intcp_dt_board_compat,