All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 3/4] iop: enable generic time
@ 2009-09-26 19:51 Mikael Pettersson
  0 siblings, 0 replies; only message in thread
From: Mikael Pettersson @ 2009-09-26 19:51 UTC (permalink / raw)
  To: linux-arm-kernel

This updates the IOP platform to use the kernel's generic time
framework. With clockevent support in place, this reduces to
selecting GENERIC_TIME and removing the platform's private timer
->offset() operation (iop_gettimeoffset).

Tested on n2100, compile-tested for all plat-iop machines.

Signed-off-by: Mikael Pettersson <mikpe@it.uu.se>
---
Changes v1 -> v2:
* rebased on 2.6.31 and v2 of the iop clockevents patch

 arch/arm/Kconfig                          |    1 +
 arch/arm/include/asm/hardware/iop3xx.h    |    1 -
 arch/arm/mach-iop13xx/include/mach/time.h |    1 -
 arch/arm/mach-iop13xx/iq81340mc.c         |    1 -
 arch/arm/mach-iop13xx/iq81340sc.c         |    1 -
 arch/arm/mach-iop32x/em7210.c             |    1 -
 arch/arm/mach-iop32x/glantank.c           |    1 -
 arch/arm/mach-iop32x/iq31244.c            |    1 -
 arch/arm/mach-iop32x/iq80321.c            |    1 -
 arch/arm/mach-iop32x/n2100.c              |    1 -
 arch/arm/mach-iop33x/iq80331.c            |    1 -
 arch/arm/mach-iop33x/iq80332.c            |    1 -
 arch/arm/plat-iop/time.c                  |   29 -----------------------------
 13 files changed, 1 insertion(+), 40 deletions(-)

diff -rupN linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/Kconfig linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/Kconfig
--- linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/Kconfig	2009-09-21 10:27:20.000000000 +0200
+++ linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/Kconfig	2009-09-21 10:28:27.000000000 +0200
@@ -737,6 +737,7 @@ config ARCH_ACORN
 config PLAT_IOP
 	bool
 	select GENERIC_CLOCKEVENTS
+	select GENERIC_TIME
 
 config PLAT_ORION
 	bool
diff -rupN linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/include/asm/hardware/iop3xx.h linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/include/asm/hardware/iop3xx.h
--- linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/include/asm/hardware/iop3xx.h	2009-09-21 10:27:20.000000000 +0200
+++ linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/include/asm/hardware/iop3xx.h	2009-09-21 10:28:27.000000000 +0200
@@ -233,7 +233,6 @@ extern int iop3xx_get_init_atu(void);
 void iop3xx_map_io(void);
 void iop_init_cp6_handler(void);
 void iop_init_time(unsigned long tickrate);
-unsigned long iop_gettimeoffset(void);
 
 static inline u32 read_tmr0(void)
 {
diff -rupN linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/mach-iop13xx/include/mach/time.h linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/mach-iop13xx/include/mach/time.h
--- linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/mach-iop13xx/include/mach/time.h	2009-09-21 10:27:20.000000000 +0200
+++ linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/mach-iop13xx/include/mach/time.h	2009-09-21 10:28:27.000000000 +0200
@@ -20,7 +20,6 @@
 #define IOP13XX_CORE_FREQ_1200		(5 << 16)
 
 void iop_init_time(unsigned long tickrate);
-unsigned long iop_gettimeoffset(void);
 
 static inline unsigned long iop13xx_core_freq(void)
 {
diff -rupN linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/mach-iop13xx/iq81340mc.c linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/mach-iop13xx/iq81340mc.c
--- linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/mach-iop13xx/iq81340mc.c	2008-10-11 10:43:49.000000000 +0200
+++ linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/mach-iop13xx/iq81340mc.c	2009-09-21 10:28:27.000000000 +0200
@@ -87,7 +87,6 @@ static void __init iq81340mc_timer_init(
 
 static struct sys_timer iq81340mc_timer = {
        .init       = iq81340mc_timer_init,
-       .offset     = iop_gettimeoffset,
 };
 
 MACHINE_START(IQ81340MC, "Intel IQ81340MC")
diff -rupN linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/mach-iop13xx/iq81340sc.c linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/mach-iop13xx/iq81340sc.c
--- linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/mach-iop13xx/iq81340sc.c	2008-10-11 10:43:49.000000000 +0200
+++ linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/mach-iop13xx/iq81340sc.c	2009-09-21 10:28:27.000000000 +0200
@@ -89,7 +89,6 @@ static void __init iq81340sc_timer_init(
 
 static struct sys_timer iq81340sc_timer = {
        .init       = iq81340sc_timer_init,
-       .offset     = iop_gettimeoffset,
 };
 
 MACHINE_START(IQ81340SC, "Intel IQ81340SC")
diff -rupN linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/mach-iop32x/em7210.c linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/mach-iop32x/em7210.c
--- linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/mach-iop32x/em7210.c	2008-10-11 10:43:49.000000000 +0200
+++ linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/mach-iop32x/em7210.c	2009-09-21 10:28:27.000000000 +0200
@@ -42,7 +42,6 @@ static void __init em7210_timer_init(voi
 
 static struct sys_timer em7210_timer = {
 	.init		= em7210_timer_init,
-	.offset		= iop_gettimeoffset,
 };
 
 /*
diff -rupN linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/mach-iop32x/glantank.c linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/mach-iop32x/glantank.c
--- linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/mach-iop32x/glantank.c	2008-12-25 15:54:13.000000000 +0100
+++ linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/mach-iop32x/glantank.c	2009-09-21 10:28:27.000000000 +0200
@@ -47,7 +47,6 @@ static void __init glantank_timer_init(v
 
 static struct sys_timer glantank_timer = {
 	.init		= glantank_timer_init,
-	.offset		= iop_gettimeoffset,
 };
 
 
diff -rupN linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/mach-iop32x/iq31244.c linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/mach-iop32x/iq31244.c
--- linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/mach-iop32x/iq31244.c	2008-12-25 15:54:13.000000000 +0100
+++ linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/mach-iop32x/iq31244.c	2009-09-21 10:28:27.000000000 +0200
@@ -78,7 +78,6 @@ static void __init iq31244_timer_init(vo
 
 static struct sys_timer iq31244_timer = {
 	.init		= iq31244_timer_init,
-	.offset		= iop_gettimeoffset,
 };
 
 
diff -rupN linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/mach-iop32x/iq80321.c linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/mach-iop32x/iq80321.c
--- linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/mach-iop32x/iq80321.c	2008-12-25 15:54:13.000000000 +0100
+++ linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/mach-iop32x/iq80321.c	2009-09-21 10:28:27.000000000 +0200
@@ -46,7 +46,6 @@ static void __init iq80321_timer_init(vo
 
 static struct sys_timer iq80321_timer = {
 	.init		= iq80321_timer_init,
-	.offset		= iop_gettimeoffset,
 };
 
 
diff -rupN linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/mach-iop32x/n2100.c linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/mach-iop32x/n2100.c
--- linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/mach-iop32x/n2100.c	2008-12-25 15:54:13.000000000 +0100
+++ linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/mach-iop32x/n2100.c	2009-09-21 10:28:27.000000000 +0200
@@ -53,7 +53,6 @@ static void __init n2100_timer_init(void
 
 static struct sys_timer n2100_timer = {
 	.init		= n2100_timer_init,
-	.offset		= iop_gettimeoffset,
 };
 
 
diff -rupN linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/mach-iop33x/iq80331.c linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/mach-iop33x/iq80331.c
--- linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/mach-iop33x/iq80331.c	2008-12-25 15:54:13.000000000 +0100
+++ linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/mach-iop33x/iq80331.c	2009-09-21 10:28:27.000000000 +0200
@@ -48,7 +48,6 @@ static void __init iq80331_timer_init(vo
 
 static struct sys_timer iq80331_timer = {
 	.init		= iq80331_timer_init,
-	.offset		= iop_gettimeoffset,
 };
 
 
diff -rupN linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/mach-iop33x/iq80332.c linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/mach-iop33x/iq80332.c
--- linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/mach-iop33x/iq80332.c	2008-12-25 15:54:13.000000000 +0100
+++ linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/mach-iop33x/iq80332.c	2009-09-21 10:28:27.000000000 +0200
@@ -48,7 +48,6 @@ static void __init iq80332_timer_init(vo
 
 static struct sys_timer iq80332_timer = {
 	.init		= iq80332_timer_init,
-	.offset		= iop_gettimeoffset,
 };
 
 
diff -rupN linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/plat-iop/time.c linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/plat-iop/time.c
--- linux-2.6.31.arm-iop-2-clockevents-v2/arch/arm/plat-iop/time.c	2009-09-21 10:27:20.000000000 +0200
+++ linux-2.6.31.arm-iop-3-generictime-v2/arch/arm/plat-iop/time.c	2009-09-21 10:28:27.000000000 +0200
@@ -140,33 +140,6 @@ static void __init iop_clockevent_set_hz
 	       ce->name, ce->shift, ce->mult);
 }
 
-static unsigned long ticks_per_usec;
-static unsigned long next_jiffy_time;
-
-unsigned long iop_gettimeoffset(void)
-{
-	unsigned long offset, temp;
-
-	/* enable cp6, if necessary, to avoid taking the overhead of an
-	 * undefined instruction trap
-	 */
-	asm volatile (
-	"mrc	p15, 0, %0, c15, c1, 0\n\t"
-	"tst	%0, #(1 << 6)\n\t"
-	"orreq	%0, %0, #(1 << 6)\n\t"
-	"mcreq	p15, 0, %0, c15, c1, 0\n\t"
-#ifdef CONFIG_CPU_XSCALE
-	"mrceq	p15, 0, %0, c15, c1, 0\n\t"
-	"moveq	%0, %0\n\t"
-	"subeq	pc, pc, #4\n\t"
-#endif
-	: "=r"(temp) : : "cc");
-
-	offset = next_jiffy_time - read_tcr1();
-
-	return offset / ticks_per_usec;
-}
-
 static irqreturn_t
 iop_timer_interrupt(int irq, void *dev_id)
 {
@@ -196,8 +169,6 @@ void __init iop_init_time(unsigned long 
 	u32 timer_ctl;
 
 	ticks_per_jiffy = (tick_rate + HZ/2) / HZ;
-	ticks_per_usec = tick_rate / 1000000;
-	next_jiffy_time = 0xffffffff;
 	iop_tick_rate = tick_rate;
 
 	timer_ctl = IOP_TMR_EN | IOP_TMR_PRIVILEGED |

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2009-09-26 19:51 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-09-26 19:51 [PATCH v2 3/4] iop: enable generic time Mikael Pettersson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.