Skip to contentSkip to conversation

clocksource: move PXA timer to clocksource framework

PATCH In review Robert Jarzmik 3 participants 13 messages Jul 14, 2014 – Sep 26, 2014

Subsystems (4)
lore
Share & tools
lore

Robert Jarzmik

author maintainer
#0 lore raw

PATCH v3 1/4 clocksource: move PXA timer to clocksource framework

Move time.c from arch/arm/mach-pxa/time.c to
drivers/clocksource/pxa_timer.c.

---
 arch/arm/mach-pxa/Makefile                                  | 2 +-
 drivers/clocksource/Makefile                                | 1 +
 arch/arm/mach-pxa/time.c => drivers/clocksource/pxa_timer.c | 0
 3 files changed, 2 insertions(+), 1 deletion(-)
 rename arch/arm/mach-pxa/time.c => drivers/clocksource/pxa_timer.c (100%)
arch/arm/mach-pxa/Makefile +1 -1
index 648867a..2fe1824 100644
@@ -4,7 +4,7 @@
 
 # Common support (must be linked before board specific support)
 obj-y				+= clock.o devices.o generic.o irq.o \
-				   time.o reset.o
+				   reset.o
 obj-$(CONFIG_PM)		+= pm.o sleep.o standby.o
 
 # Generic drivers that other drivers may depend upon
drivers/clocksource/Makefile +1 -0
index 800b130..fc61ef8 100644
@@ -19,6 +19,7 @@ obj-$(CONFIG_ARCH_BCM2835)	+= bcm2835_timer.o
 obj-$(CONFIG_ARCH_MARCO)	+= timer-marco.o
 obj-$(CONFIG_ARCH_MOXART)	+= moxart_timer.o
 obj-$(CONFIG_ARCH_MXS)		+= mxs_timer.o
+obj-$(CONFIG_ARCH_PXA)		+= pxa_timer.o
 obj-$(CONFIG_ARCH_PRIMA2)	+= timer-prima2.o
 obj-$(CONFIG_ARCH_U300)		+= timer-u300.o
 obj-$(CONFIG_SUN4I_TIMER)	+= sun4i_timer.o
drivers/clocksource/pxa_timer.c renamed from arch/arm/mach-pxa/time.c +0 -0
similarity index 100%
rename from arch/arm/mach-pxa/time.c
rename to drivers/clocksource/pxa_timer.c
Signature · 1 line
2.0.0.rc2
author maintainer
#1 lore raw

PATCH v3 2/4 clocksource: add device-tree support for PXA timer

Add device-tree support to PXA platforms.
The driver still needs to maintain backward non device-tree compatibility as well, which implies :
- a non device-tree init function
- a static registers base address in the driver

---
Since V1: Daniel's review:
- comments for registers
- registers clean-up
- mach includes removed
- panic() removed

---
 drivers/clocksource/pxa_timer.c | 137 +++++++++++++++++++++++++++++-----------
 1 file changed, 101 insertions(+), 36 deletions(-)
drivers/clocksource/pxa_timer.c +101 -36
index fca174e..941f3f3 100644
@@ -15,14 +15,30 @@
 #include <linux/kernel.h>
 #include <linux/init.h>
 #include <linux/interrupt.h>
+#include <linux/clk.h>
 #include <linux/clockchips.h>
+#include <linux/of_address.h>
+#include <linux/of_irq.h>
 #include <linux/sched_clock.h>
 
 #include <asm/div64.h>
-#include <asm/mach/irq.h>
-#include <asm/mach/time.h>
-#include <mach/regs-ost.h>
-#include <mach/irqs.h>
+
+#define OSMR0		0x00	/* OS Timer 0 Match Register */
+#define OSMR1		0x04	/* OS Timer 1 Match Register */
+#define OSMR2		0x08	/* OS Timer 2 Match Register */
+#define OSMR3		0x0C	/* OS Timer 3 Match Register */
+
+#define OSCR		0x10	/* OS Timer Counter Register */
+#define OSSR		0x14	/* OS Timer Status Register */
+#define OWER		0x18	/* OS Timer Watchdog Enable Register */
+#define OIER		0x1C	/* OS Timer Interrupt Enable Register */
+
+#define OSSR_M3		(1 << 3)	/* Match status channel 3 */
+#define OSSR_M2		(1 << 2)	/* Match status channel 2 */
+#define OSSR_M1		(1 << 1)	/* Match status channel 1 */
+#define OSSR_M0		(1 << 0)	/* Match status channel 0 */
+
+#define OIER_E0		(1 << 0)	/* Interrupt enable channel 0 */
 
 /*
  * This is PXA's sched_clock implementation. This has a resolution
@@ -33,9 +49,14 @@
  * calls to sched_clock() which should always be the case in practice.
  */
 
+#define timer_readl(reg) readl_relaxed(timer_base + (reg))
+#define timer_writel(val, reg) writel_relaxed((val), timer_base + (reg))
+
+static void __iomem *timer_base;
+
 static u64 notrace pxa_read_sched_clock(void)
 {
-	return readl_relaxed(OSCR);
+	return timer_readl(OSCR);
 }
 
 
@@ -47,8 +68,8 @@ pxa_ost0_interrupt(int irq, void *dev_id)
 	struct clock_event_device *c = dev_id;
 
 	/* Disarm the compare/match, signal the event. */
-	writel_relaxed(readl_relaxed(OIER) & ~OIER_E0, OIER);
-	writel_relaxed(OSSR_M0, OSSR);
+	timer_writel(timer_readl(OIER) & ~OIER_E0, OIER);
+	timer_writel(OSSR_M0, OSSR);
 	c->event_handler(c);
 
 	return IRQ_HANDLED;
@@ -59,10 +80,10 @@ pxa_osmr0_set_next_event(unsigned long delta, struct clock_event_device *dev)
 {
 	unsigned long next, oscr;
 
-	writel_relaxed(readl_relaxed(OIER) | OIER_E0, OIER);
-	next = readl_relaxed(OSCR) + delta;
-	writel_relaxed(next, OSMR0);
-	oscr = readl_relaxed(OSCR);
+	timer_writel(timer_readl(OIER) | OIER_E0, OIER);
+	next = timer_readl(OSCR) + delta;
+	timer_writel(next, OSMR0);
+	oscr = timer_readl(OSCR);
 
 	return (signed)(next - oscr) <= MIN_OSCR_DELTA ? -ETIME : 0;
 }
@@ -72,15 +93,15 @@ pxa_osmr0_set_mode(enum clock_event_mode mode, struct clock_event_device *dev)
 {
 	switch (mode) {
 	case CLOCK_EVT_MODE_ONESHOT:
-		writel_relaxed(readl_relaxed(OIER) & ~OIER_E0, OIER);
-		writel_relaxed(OSSR_M0, OSSR);
+		timer_writel(timer_readl(OIER) & ~OIER_E0, OIER);
+		timer_writel(OSSR_M0, OSSR);
 		break;
 
 	case CLOCK_EVT_MODE_UNUSED:
 	case CLOCK_EVT_MODE_SHUTDOWN:
 		/* initializing, released, or preparing for suspend */
-		writel_relaxed(readl_relaxed(OIER) & ~OIER_E0, OIER);
-		writel_relaxed(OSSR_M0, OSSR);
+		timer_writel(timer_readl(OIER) & ~OIER_E0, OIER);
+		timer_writel(OSSR_M0, OSSR);
 		break;
 
 	case CLOCK_EVT_MODE_RESUME:
@@ -94,12 +115,12 @@ static unsigned long osmr[4], oier, oscr;
 
 static void pxa_timer_suspend(struct clock_event_device *cedev)
 {
-	osmr[0] = readl_relaxed(OSMR0);
-	osmr[1] = readl_relaxed(OSMR1);
-	osmr[2] = readl_relaxed(OSMR2);
-	osmr[3] = readl_relaxed(OSMR3);
-	oier = readl_relaxed(OIER);
-	oscr = readl_relaxed(OSCR);
+	osmr[0] = timer_readl(OSMR0);
+	osmr[1] = timer_readl(OSMR1);
+	osmr[2] = timer_readl(OSMR2);
+	osmr[3] = timer_readl(OSMR3);
+	oier = timer_readl(OIER);
+	oscr = timer_readl(OSCR);
 }
 
 static void pxa_timer_resume(struct clock_event_device *cedev)
@@ -113,12 +134,12 @@ static void pxa_timer_resume(struct clock_event_device *cedev)
 	if (osmr[0] - oscr < MIN_OSCR_DELTA)
 		osmr[0] += MIN_OSCR_DELTA;
 
-	writel_relaxed(osmr[0], OSMR0);
-	writel_relaxed(osmr[1], OSMR1);
-	writel_relaxed(osmr[2], OSMR2);
-	writel_relaxed(osmr[3], OSMR3);
-	writel_relaxed(oier, OIER);
-	writel_relaxed(oscr, OSCR);
+	timer_writel(osmr[0], OSMR0);
+	timer_writel(osmr[1], OSMR1);
+	timer_writel(osmr[2], OSMR2);
+	timer_writel(osmr[3], OSMR3);
+	timer_writel(oier, OIER);
+	timer_writel(oscr, OSCR);
 }
 #else
 #define pxa_timer_suspend NULL
@@ -142,21 +163,65 @@ static struct irqaction pxa_ost0_irq = {
 	.dev_id		= &ckevt_pxa_osmr0,
 };
 
-void __init pxa_timer_init(void)
+static void pxa_timer_common_init(int irq, unsigned long clock_tick_rate)
 {
-	unsigned long clock_tick_rate = get_clock_tick_rate();
-
-	writel_relaxed(0, OIER);
-	writel_relaxed(OSSR_M0 | OSSR_M1 | OSSR_M2 | OSSR_M3, OSSR);
+	timer_writel(0, OIER);
+	timer_writel(OSSR_M0 | OSSR_M1 | OSSR_M2 | OSSR_M3, OSSR);
 
 	sched_clock_register(pxa_read_sched_clock, 32, clock_tick_rate);
 
 	ckevt_pxa_osmr0.cpumask = cpumask_of(0);
 
-	setup_irq(IRQ_OST0, &pxa_ost0_irq);
+	setup_irq(irq, &pxa_ost0_irq);
 
-	clocksource_mmio_init(OSCR, "oscr0", clock_tick_rate, 200, 32,
-		clocksource_mmio_readl_up);
+	clocksource_mmio_init(timer_base + OSCR, "oscr0", clock_tick_rate, 200,
+			      32, clocksource_mmio_readl_up);
 	clockevents_config_and_register(&ckevt_pxa_osmr0, clock_tick_rate,
-		MIN_OSCR_DELTA * 2, 0x7fffffff);
+					MIN_OSCR_DELTA * 2, 0x7fffffff);
+}
+
+static void __init pxa_timer_dt_init(struct device_node *np)
+{
+	struct clk *clk;
+	int irq;
+
+	/* timer registers are shared with watchdog timer */
+	timer_base = of_iomap(np, 0);
+	if (!timer_base)
+		panic("%s: unable to map resource\n", np->name);
+
+	clk = of_clk_get(np, 0);
+	if (IS_ERR(clk)) {
+		pr_crit("%s: unable to get clk\n", np->name);
+		return;
+	}
+	clk_prepare_enable(clk);
+
+	/* we are only interested in OS-timer0 irq */
+	irq = irq_of_parse_and_map(np, 0);
+	if (irq <= 0) {
+		pr_crit("%s: unable to parse OS-timer0 irq\n", np->name);
+		return;
+	}
+
+	pxa_timer_common_init(irq, clk_get_rate(clk));
+}
+CLOCKSOURCE_OF_DECLARE(pxa_timer, "marvell,pxa-timer", pxa_timer_dt_init);
+
+/*
+ * Legacy timer init for non device-tree boards.
+ */
+void __init pxa_timer_nodt_init(int irq, void __iomem *base,
+	unsigned long clock_tick_rate)
+{
+	struct clk *clk;
+
+	timer_base = base;
+	clk = clk_get(NULL, "OSTIMER0");
+	if (clk && !IS_ERR(clk))
+		clk_prepare_enable(clk);
+	else
+		pr_crit("%s: unable to get clk\n", __func__);
+
+	pxa_timer_common_init(irq, clock_tick_rate);
 }
Signature · 1 line
2.0.0.rc2
author maintainer
#2 lore raw

PATCH v3 3/4 arm: pxa: add CLKSRC_OF dependency

In reply to Robert Jarzmik

Select CLKSRC_OF for PXA architectures.

---
 arch/arm/Kconfig | 1 +
 1 file changed, 1 insertion(+)
arch/arm/Kconfig +1 -0
index 87b63fd..472dea1 100644
@@ -644,6 +644,7 @@ config ARCH_PXA
 	select AUTO_ZRELADDR
 	select CLKDEV_LOOKUP
 	select CLKSRC_MMIO
+	select CLKSRC_OF
 	select GENERIC_CLOCKEVENTS
 	select GPIO_PXA
 	select HAVE_IDE
Signature · 1 line
2.0.0.rc2
author maintainer
#3 lore raw

PATCH v3 4/4 arm: pxa: add non device-tree timer link to clocksource

In reply to Robert Jarzmik

As clocksource pxa_timer was moved to clocksource framework, the pxa_timer initialization needs to be a bit amended, to pass the necessary informations to clocksource, ie :
- the timer interrupt (mach specific)
- the timer registers base (ditto)
- the timer clockrate

---
Since V2: Arnd's comment : moved extern declaration into .h file

---
 arch/arm/mach-pxa/generic.c | 11 +++++++++++
 include/clocksource/pxa.h   | 18 ++++++++++++++++++
 2 files changed, 29 insertions(+)
 create mode 100644 include/clocksource/pxa.h
arch/arm/mach-pxa/generic.c +11 -0
index 4225417..6f38e1a 100644
@@ -25,11 +25,13 @@
 #include <asm/mach/map.h>
 #include <asm/mach-types.h>
 
+#include <mach/irqs.h>
 #include <mach/reset.h>
 #include <mach/smemc.h>
 #include <mach/pxa3xx-regs.h>
 
 #include "generic.h"
+#include <clocksource/pxa.h>
 
 void clear_reset_status(unsigned int mask)
 {
@@ -57,6 +59,15 @@ unsigned long get_clock_tick_rate(void)
 EXPORT_SYMBOL(get_clock_tick_rate);
 
 /*
+ * For non device-tree builds, keep legacy timer init
+ */
+void pxa_timer_init(void)
+{
+	pxa_timer_nodt_init(IRQ_OST0, io_p2v(0x40a00000),
+			    get_clock_tick_rate());
+}
+
+/*
  * Get the clock frequency as reflected by CCCR and the turbo flag.
  * We assume these values have been applied via a fcs.
  * If info is not 0 we also display the current settings.
include/clocksource/pxa.h new file +18 -0
new file mode 100644
index 0000000..1efbe5a
@@ -0,0 +1,18 @@
+/*
+ * PXA clocksource, clockevents, and OST interrupt handlers.
+ *
+ * Copyright (C) 2014 Robert Jarzmik
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ */
+
+#ifndef _CLOCKSOURCE_PXA_H
+#define _CLOCKSOURCE_PXA_H
+
+extern void pxa_timer_nodt_init(int irq, void __iomem *base,
+			   unsigned long clock_tick_rate);
+
+#endif
Signature · 1 line
2.0.0.rc2
#4 lore raw

Re: [PATCH v3 4/4] arm: pxa: add non device-tree timer link to clocksource

Quoted 7 lines · Robert Jarzmik

As clocksource pxa_timer was moved to clocksource framework, the pxa_timer initialization needs to be a bit amended, to pass the necessary informations to clocksource, ie :
- the timer interrupt (mach specific)
- the timer registers base (ditto)
- the timer clockrate

Quoted 5 lines

---
Since V2: Arnd's comment : moved extern declaration into .h file
---

Shall I take the patches 4-5 also ?

Arnd ?

Thanks

-- Daniel

Quoted 64 lines
  arch/arm/mach-pxa/generic.c | 11 +++++++++++
  include/clocksource/pxa.h   | 18 ++++++++++++++++++
  2 files changed, 29 insertions(+)

create mode 100644 include/clocksource/pxa.h

arch/arm/mach-pxa/generic.c +11 -0
index 4225417..6f38e1a 100644
@@ -25,11 +25,13 @@
  #include <asm/mach/map.h>
  #include <asm/mach-types.h>
 
+#include <mach/irqs.h>
  #include <mach/reset.h>
  #include <mach/smemc.h>
  #include <mach/pxa3xx-regs.h>
 
  #include "generic.h"
+#include <clocksource/pxa.h>
 
  void clear_reset_status(unsigned int mask)
  {
@@ -57,6 +59,15 @@ unsigned long get_clock_tick_rate(void)
  EXPORT_SYMBOL(get_clock_tick_rate);
 
  /*
+ * For non device-tree builds, keep legacy timer init
+ */
+void pxa_timer_init(void)
+{
+	pxa_timer_nodt_init(IRQ_OST0, io_p2v(0x40a00000),
+			    get_clock_tick_rate());
+}
+
+/*
   * Get the clock frequency as reflected by CCCR and the turbo flag.
   * We assume these values have been applied via a fcs.
   * If info is not 0 we also display the current settings.
include/clocksource/pxa.h new file +18 -0
new file mode 100644
index 0000000..1efbe5a
@@ -0,0 +1,18 @@
+/*
+ * PXA clocksource, clockevents, and OST interrupt handlers.
+ *
+ * Copyright (C) 2014 Robert Jarzmik
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ */
+
+#ifndef _CLOCKSOURCE_PXA_H
+#define _CLOCKSOURCE_PXA_H
+
+extern void pxa_timer_nodt_init(int irq, void __iomem *base,
+			   unsigned long clock_tick_rate);
+
+#endif
Signature · 5 lines
  <http://www.linaro.org/> Linaro.org ? Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
author maintainer
#5 lore raw

Re: [PATCH v3 4/4] arm: pxa: add non device-tree timer link to clocksource

Quoted 8 lines · Daniel Lezcano
Quoted 7 lines · Robert Jarzmik

As clocksource pxa_timer was moved to clocksource framework, the pxa_timer initialization needs to be a bit amended, to pass the necessary informations to clocksource, ie :
- the timer interrupt (mach specific)
- the timer registers base (ditto)
- the timer clockrate

Quoted 7 lines
Quoted 5 lines

---
Since V2: Arnd's comment : moved extern declaration into .h file
---

Shall I take the patches 4-5 also ?

Mmm you mean patch 4 I think.
Then I'd like you too, because it's linked in the serie, and without it the former non-DT platforms break, hence I'd like all the serie to go through 1 tree.

Yet we'd need Haojian's ack here. Haojian, would you give your blessing on the serie and agree that Daniel carries all the patches including patch 4/4 ?

Cheers.

--
Robert

#6 lore raw

PATCH 1/1 ARM: pxa: fix section mismatch warning for pxa_timer_nodt_init

commit a38b1f60b5245a3 ("ARM: pxa: Add non device-tree timer link to clocksource") introduced a harmless section mismatch warning for all pxa platforms, by introducing a new pxa_timer_init() function that is not marked __init but that calls pxa_timer_nodt_init(), which is. The function is only called at init time, so it is safe to also annotate it this way.

---
Daniel, please apply on top of Robert's patch series.

arch/arm/mach-pxa/generic.c +1 -1
index 630fa916bbc6..04b013fbc98f 100644
@@ -61,7 +61,7 @@ EXPORT_SYMBOL(get_clock_tick_rate);
 /*
  * For non device-tree builds, keep legacy timer init
  */
-void pxa_timer_init(void)
+void __init pxa_timer_init(void)
 {
 	pxa_timer_nodt_init(IRQ_OST0, io_p2v(0x40a00000),
 			    get_clock_tick_rate());
author maintainer Acked-by on v1 1/1
#7 lore raw

Re: [PATCH ] ARM: pxa: fix section mismatch warning for pxa_timer_nodt_init

Quoted 8 lines · Arnd Bergmann

commit a38b1f60b5245a3 ("ARM: pxa: Add non device-tree timer link to clocksource") introduced a harmless section mismatch warning for all pxa platforms, by introducing a new pxa_timer_init() function that is not marked __init but that calls pxa_timer_nodt_init(), which is. The function is only called at init time, so it is safe to also annotate it this way.

Indeed.

Cheers.

--
Robert

#8 lore raw

Re: [PATCH ] ARM: pxa: fix section mismatch warning for pxa_timer_nodt_init

In reply to Arnd Bergmann
Quoted 10 lines · Arnd Bergmann

commit a38b1f60b5245a3 ("ARM: pxa: Add non device-tree timer link to clocksource") introduced a harmless section mismatch warning for all pxa platforms, by introducing a new pxa_timer_init() function that is not marked __init but that calls pxa_timer_nodt_init(), which is. The function is only called at init time, so it is safe to also annotate it this way.

---
Daniel, please apply on top of Robert's patch series.

Applied thanks!

-- Daniel

Quoted 15 lines
arch/arm/mach-pxa/generic.c +1 -1
index 630fa916bbc6..04b013fbc98f 100644
@@ -61,7 +61,7 @@ EXPORT_SYMBOL(get_clock_tick_rate);
  /*
   * For non device-tree builds, keep legacy timer init
   */
-void pxa_timer_init(void)
+void __init pxa_timer_init(void)
  {
  	pxa_timer_nodt_init(IRQ_OST0, io_p2v(0x40a00000),
  			    get_clock_tick_rate());
Signature · 5 lines
  <http://www.linaro.org/> Linaro.org ? Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
#9 lore raw

Re: [PATCH ] ARM: pxa: fix section mismatch warning for pxa_timer_nodt_init

In reply to Arnd Bergmann
Quoted 9 lines · On Saturday 26 July 2014 20:50:36 Arnd Bergmann wrote:

commit a38b1f60b5245a3 ("ARM: pxa: Add non device-tree timer link to clocksource") introduced a harmless section mismatch warning for all pxa platforms, by introducing a new pxa_timer_init() function that is not marked __init but that calls pxa_timer_nodt_init(), which is. The function is only called at init time, so it is safe to also annotate it this way.

Apparently this is not merged yet, should we take it through arm-soc?

arch/arm/mach-pxa/generic.c +1 -1
index 630fa916bbc6..04b013fbc98f 100644
@@ -61,7 +61,7 @@ EXPORT_SYMBOL(get_clock_tick_rate);
 /*
  * For non device-tree builds, keep legacy timer init
  */
-void pxa_timer_init(void)
+void __init pxa_timer_init(void)
 {
        pxa_timer_nodt_init(IRQ_OST0, io_p2v(0x40a00000),
                            get_clock_tick_rate());
author maintainer
#10 lore raw

Re : Re: [PATCH ] ARM: pxa: fix section mismatch warning for pxa_timer_nodt_init

Yes please Arnd, I'm still out for 1.5 week, so it would be great if you take that through your tree with my ack. Thanks.

Robert

PS: I know, top-posting is madness, but I'm really limited by technology right now.

----- Mail d'origine -----
De: Arnd Bergmann <[email protected]>
?: Robert Jarzmik <[email protected]>
Cc: Haojian Zhuang <[email protected]>, Daniel Lezcano <[email protected]>, linux-arm-kernel at lists.infradead.org, linux-kernel at vger.kernel.org, devicetree at vger.kernel.org, Thomas Gleixner <[email protected]>, arm at kernel.org Envoy?: Sun, 07 Sep 2014 23:06:05 +0200 (CEST)
Objet: Re: [PATCH ] ARM: pxa: fix section mismatch warning for pxa_timer_nodt_init

Quoted 9 lines · On Saturday 26 July 2014 20:50:36 Arnd Bergmann wrote:

commit a38b1f60b5245a3 ("ARM: pxa: Add non device-tree timer link to clocksource") introduced a harmless section mismatch warning for all pxa platforms, by introducing a new pxa_timer_init() function that is not marked __init but that calls pxa_timer_nodt_init(), which is. The function is only called at init time, so it is safe to also annotate it this way.

Apparently this is not merged yet, should we take it through arm-soc?

arch/arm/mach-pxa/generic.c +1 -1
index 630fa916bbc6..04b013fbc98f 100644
@@ -61,7 +61,7 @@ EXPORT_SYMBOL(get_clock_tick_rate);
 /*
 * For non device-tree builds, keep legacy timer init
 */
-void pxa_timer_init(void)
+void __init pxa_timer_init(void)
 {
 pxa_timer_nodt_init(IRQ_OST0, io_p2v(0x40a00000),
 get_clock_tick_rate());
#11 lore raw

Re: [PATCH v3 4/4] arm: pxa: add non device-tree timer link to clocksource

In reply to Robert Jarzmik
Quoted 16 lines · Robert Jarzmik
Quoted 14 lines · Daniel Lezcano
Quoted 12 lines · Robert Jarzmik

As clocksource pxa_timer was moved to clocksource framework, the pxa_timer initialization needs to be a bit amended, to pass the necessary informations to clocksource, ie :
- the timer interrupt (mach specific)
- the timer registers base (ditto)
- the timer clockrate

---
Since V2: Arnd's comment : moved extern declaration into .h file
---

Quoted 8 lines
Quoted 1 line

Shall I take the patches 4-5 also ?

Mmm you mean patch 4 I think.
Then I'd like you too, because it's linked in the serie, and without it the former non-DT platforms break, hence I'd like all the serie to go through 1 tree.

Yet we'd need Haojian's ack here. Haojian, would you give your blessing on the serie and agree that Daniel carries all the patches including patch 4/4 ?

Hi,

May be I missed it but I don't see the Haojian's ack.

Thanks
-- Daniel

Signature · 5 lines
  <http://www.linaro.org/> Linaro.org ? Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
author maintainer
#12 lore raw

Re: [PATCH v3 4/4] arm: pxa: add non device-tree timer link to clocksource

Quoted 18 lines · Daniel Lezcano
Quoted 10 lines · Robert Jarzmik
Quoted 8 lines · Daniel Lezcano
Quoted 7 lines · Robert Jarzmik

As clocksource pxa_timer was moved to clocksource framework, the pxa_timer initialization needs to be a bit amended, to pass the necessary informations to clocksource, ie :
- the timer interrupt (mach specific)
- the timer registers base (ditto)
- the timer clockrate

Quoted 6 lines
Quoted 6 lines
Quoted 5 lines

---
Since V2: Arnd's comment : moved extern declaration into .h file
---

Quoted 6 lines

Hi,

May be I missed it but I don't see the Haojian's ack.

Thanks
-- Daniel

You're right, I scanned through my mail and didn't find the ack. Haojian, would you review this one please ?

It's here :
http://lists.infradead.org/pipermail/linux-arm-kernel/2014-July/272311.html

Cheers.

Signature · 1 line
Robert