From: Russell King - ARM Linux <linux@arm.linux.org.uk>
To: Tony Lindgren <tony@atomide.com>, linux-omap@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 37/40] ARM: omap: convert sched_clock() to use new infrastructure
Date: Fri, 17 Dec 2010 11:50:56 +0000 [thread overview]
Message-ID: <E1PTYps-0006k2-CG@rmk-PC.arm.linux.org.uk> (raw)
In-Reply-To: 20101217113223.GC9937@n2100.arm.linux.org.uk
Convert omap to use the new sched_clock() infrastructure for extending
32bit counters to full 64-bit nanoseconds.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
---
arch/arm/Kconfig | 1 +
arch/arm/plat-omap/counter_32k.c | 24 ++++++++++++++++++++++--
2 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 58e2fe3..726279f 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -839,6 +839,7 @@ config ARCH_OMAP
select ARCH_REQUIRE_GPIOLIB
select ARCH_HAS_CPUFREQ
select GENERIC_CLOCKEVENTS
+ select HAVE_SCHED_CLOCK
select ARCH_HAS_HOLES_MEMORYMODEL
help
Support for TI's OMAP platform (OMAP1/2/3/4).
diff --git a/arch/arm/plat-omap/counter_32k.c b/arch/arm/plat-omap/counter_32k.c
index aed301b..1b558ef 100644
--- a/arch/arm/plat-omap/counter_32k.c
+++ b/arch/arm/plat-omap/counter_32k.c
@@ -18,6 +18,8 @@
#include <linux/io.h>
#include <linux/sched.h>
+#include <asm/sched_clock.h>
+
#include <plat/common.h>
#include <plat/board.h>
@@ -110,10 +112,25 @@ static struct clocksource clocksource_32k = {
* Returns current time from boot in nsecs. It's OK for this to wrap
* around for now, as it's just a relative time stamp.
*/
+static DEFINE_CLOCK_DATA(cd);
+
+/*
+ * Constants generated by clocks_calc_mult_shift(m, s, 32768, NSEC_PER_SEC, 60).
+ * This gives a resolution of about 30us and a wrap period of about 36hrs.
+ */
+#define SC_MULT 4000000000u
+#define SC_SHIFT 17
+
unsigned long long notrace sched_clock(void)
{
- return clocksource_cyc2ns(clocksource_32k.read(&clocksource_32k),
- clocksource_32k.mult, clocksource_32k.shift);
+ u32 cyc = clocksource_32k.read(&clocksource_32k);
+ return cyc_to_fixed_sched_clock(&cd, cyc, (u32)~0, SC_MULT, SC_SHIFT);
+}
+
+static void notrace omap_update_sched_clock(void)
+{
+ u32 cyc = clocksource_32k.read(&clocksource_32k);
+ update_sched_clock(&cd, cyc, (u32)~0);
}
/**
@@ -171,6 +188,9 @@ static int __init omap_init_clocksource_32k(void)
if (clocksource_register_hz(&clocksource_32k, 32768))
printk(err, clocksource_32k.name);
+
+ init_fixed_sched_clock(&cd, omap_update_sched_clock, 32,
+ 32768, SC_MULT, SC_SHIFT);
}
return 0;
}
--
1.6.2.5
WARNING: multiple messages have this Message-ID (diff)
From: linux@arm.linux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 37/40] ARM: omap: convert sched_clock() to use new infrastructure
Date: Fri, 17 Dec 2010 11:50:56 +0000 [thread overview]
Message-ID: <E1PTYps-0006k2-CG@rmk-PC.arm.linux.org.uk> (raw)
In-Reply-To: 20101217113223.GC9937@n2100.arm.linux.org.uk
Convert omap to use the new sched_clock() infrastructure for extending
32bit counters to full 64-bit nanoseconds.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
---
arch/arm/Kconfig | 1 +
arch/arm/plat-omap/counter_32k.c | 24 ++++++++++++++++++++++--
2 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 58e2fe3..726279f 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -839,6 +839,7 @@ config ARCH_OMAP
select ARCH_REQUIRE_GPIOLIB
select ARCH_HAS_CPUFREQ
select GENERIC_CLOCKEVENTS
+ select HAVE_SCHED_CLOCK
select ARCH_HAS_HOLES_MEMORYMODEL
help
Support for TI's OMAP platform (OMAP1/2/3/4).
diff --git a/arch/arm/plat-omap/counter_32k.c b/arch/arm/plat-omap/counter_32k.c
index aed301b..1b558ef 100644
--- a/arch/arm/plat-omap/counter_32k.c
+++ b/arch/arm/plat-omap/counter_32k.c
@@ -18,6 +18,8 @@
#include <linux/io.h>
#include <linux/sched.h>
+#include <asm/sched_clock.h>
+
#include <plat/common.h>
#include <plat/board.h>
@@ -110,10 +112,25 @@ static struct clocksource clocksource_32k = {
* Returns current time from boot in nsecs. It's OK for this to wrap
* around for now, as it's just a relative time stamp.
*/
+static DEFINE_CLOCK_DATA(cd);
+
+/*
+ * Constants generated by clocks_calc_mult_shift(m, s, 32768, NSEC_PER_SEC, 60).
+ * This gives a resolution of about 30us and a wrap period of about 36hrs.
+ */
+#define SC_MULT 4000000000u
+#define SC_SHIFT 17
+
unsigned long long notrace sched_clock(void)
{
- return clocksource_cyc2ns(clocksource_32k.read(&clocksource_32k),
- clocksource_32k.mult, clocksource_32k.shift);
+ u32 cyc = clocksource_32k.read(&clocksource_32k);
+ return cyc_to_fixed_sched_clock(&cd, cyc, (u32)~0, SC_MULT, SC_SHIFT);
+}
+
+static void notrace omap_update_sched_clock(void)
+{
+ u32 cyc = clocksource_32k.read(&clocksource_32k);
+ update_sched_clock(&cd, cyc, (u32)~0);
}
/**
@@ -171,6 +188,9 @@ static int __init omap_init_clocksource_32k(void)
if (clocksource_register_hz(&clocksource_32k, 32768))
printk(err, clocksource_32k.name);
+
+ init_fixed_sched_clock(&cd, omap_update_sched_clock, 32,
+ 32768, SC_MULT, SC_SHIFT);
}
return 0;
}
--
1.6.2.5
next prev parent reply other threads:[~2010-12-17 11:51 UTC|newest]
Thread overview: 105+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-17 11:32 [PATCH 0/40] Complete set of clocksource/sched_clock patches Russell King - ARM Linux
2010-12-17 11:32 ` Russell King - ARM Linux
2010-12-17 11:32 ` Russell King - ARM Linux
2010-12-17 11:35 ` [PATCH 01/40] ARM: AT91: update clock source registration Russell King - ARM Linux
2010-12-17 13:01 ` Jean-Christophe PLAGNIOL-VILLARD
2010-12-17 11:35 ` [PATCH 02/40] ARM: bcmring: " Russell King - ARM Linux
2010-12-17 11:36 ` [PATCH 03/40] ARM: davinci: " Russell King - ARM Linux
2010-12-21 19:23 ` Kevin Hilman
2010-12-17 11:36 ` [PATCH 04/40] ARM: integrator: " Russell King - ARM Linux
2010-12-17 11:37 ` [PATCH 05/40] ARM: ixp4xx: " Russell King - ARM Linux
2010-12-17 11:37 ` [PATCH 06/40] ARM: lpc32xx: " Russell King - ARM Linux
2010-12-17 11:37 ` [PATCH 07/40] ARM: mmp: " Russell King - ARM Linux
2010-12-17 11:38 ` [PATCH 08/40] ARM: MSM: " Russell King - ARM Linux
2010-12-17 11:38 ` Russell King - ARM Linux
2010-12-17 21:23 ` David Brown
2010-12-17 21:23 ` David Brown
2010-12-17 11:38 ` [PATCH 09/40] ARM: netx: " Russell King - ARM Linux
2010-12-17 11:38 ` [PATCH 10/40] ARM: ns9xxx: " Russell King - ARM Linux
2010-12-17 11:39 ` [PATCH 11/40] ARM: omap: " Russell King - ARM Linux
2010-12-17 11:39 ` Russell King - ARM Linux
2010-12-17 11:39 ` [PATCH 12/40] ARM: PXA: " Russell King - ARM Linux
2010-12-17 11:39 ` [PATCH 13/40] ARM: s5pv310: " Russell King - ARM Linux
2010-12-17 11:39 ` Russell King - ARM Linux
2010-12-17 11:40 ` [PATCH 14/40] ARM: SA11x0: " Russell King - ARM Linux
2010-12-17 11:40 ` [PATCH 15/40] ARM: tcc8k: " Russell King - ARM Linux
2010-12-17 11:40 ` [PATCH 16/40] ARM: U300: " Russell King - ARM Linux
2010-12-17 11:41 ` [PATCH 17/40] ARM: nuc: " Russell King - ARM Linux
2010-12-17 13:21 ` Wan ZongShun
2010-12-17 11:41 ` [PATCH 18/40] ARM: iop: " Russell King - ARM Linux
2010-12-17 11:41 ` [PATCH 19/40] ARM: mxc: " Russell King - ARM Linux
2010-12-17 11:44 ` [PATCH 20/40] ARM: nomadik: " Russell King - ARM Linux
2010-12-17 11:44 ` [PATCH 21/40] ARM: spear: " Russell King - ARM Linux
2010-12-17 11:45 ` [PATCH 22/40] ARM: orion: " Russell King - ARM Linux
2010-12-17 11:46 ` [PATCH 23/40] ARM: stmp: " Russell King - ARM Linux
2010-12-17 11:46 ` [PATCH 24/40] ARM: realview/versatile: " Russell King - ARM Linux
2010-12-17 11:46 ` [PATCH 25/40] ARM: tegra: timer: Separate clocksource and sched_clock Russell King - ARM Linux
2010-12-17 11:47 ` [PATCH 26/40] ARM: ensure all sched_clock() implementations are notrace marked Russell King - ARM Linux
2010-12-17 11:47 ` Russell King - ARM Linux
2010-12-17 11:47 ` [PATCH 27/40] Fix rounding in clocks_calc_mult_shift() Russell King - ARM Linux
2010-12-17 11:47 ` [PATCH 28/40] ARM: sched_clock: provide common infrastructure for sched_clock() Russell King - ARM Linux
2010-12-17 18:51 ` Nicolas Pitre
2010-12-17 19:05 ` Russell King - ARM Linux
2010-12-17 19:18 ` Russell King - ARM Linux
2010-12-17 19:34 ` Nicolas Pitre
2010-12-17 19:37 ` Nicolas Pitre
2010-12-17 19:40 ` Russell King - ARM Linux
2010-12-17 19:59 ` Nicolas Pitre
2010-12-17 11:48 ` [PATCH 29/40] ARM: ixp4xx: convert sched_clock() to use new infrastructure Russell King - ARM Linux
2010-12-17 11:48 ` [PATCH 30/40] ARM: mmp: " Russell King - ARM Linux
2010-12-17 11:48 ` [PATCH 31/40] ARM: pxa: " Russell King - ARM Linux
2010-12-17 11:49 ` [PATCH 32/40] ARM: sa1100: " Russell King - ARM Linux
2010-12-17 11:49 ` [PATCH 33/40] ARM: tegra: " Russell King - ARM Linux
2010-12-22 7:23 ` Olof Johansson
2010-12-22 23:06 ` Russell King - ARM Linux
2010-12-17 11:49 ` [PATCH 34/40] ARM: u300: " Russell King - ARM Linux
2010-12-19 22:26 ` Linus Walleij
2010-12-17 11:50 ` [PATCH 35/40] ARM: iop: " Russell King - ARM Linux
2010-12-19 10:56 ` Russell King - ARM Linux
2010-12-17 11:50 ` [PATCH 36/40] ARM: nomadik: " Russell King - ARM Linux
2010-12-19 22:25 ` Linus Walleij
2010-12-17 11:50 ` Russell King - ARM Linux [this message]
2010-12-17 11:50 ` [PATCH 37/40] ARM: omap: " Russell King - ARM Linux
2010-12-17 11:51 ` [PATCH 38/40] ARM: orion: " Russell King - ARM Linux
2010-12-17 19:49 ` Nicolas Pitre
2010-12-17 11:51 ` [PATCH 39/40] ARM: versatile: " Russell King - ARM Linux
2010-12-17 11:51 ` [PATCH 40/40] ARM: vexpress: add sched_clock() for Versatile Express Russell King - ARM Linux
2010-12-17 14:04 ` [PATCH 0/40] Complete set of clocksource/sched_clock patches Santosh Shilimkar
2010-12-17 16:03 ` Will Deacon
2010-12-19 10:37 ` Mikael Pettersson
2010-12-19 10:37 ` Mikael Pettersson
2010-12-19 10:52 ` Russell King - ARM Linux
2010-12-19 10:52 ` Russell King - ARM Linux
2010-12-19 10:56 ` Russell King - ARM Linux
2010-12-19 10:56 ` Russell King - ARM Linux
2010-12-19 12:16 ` Mikael Pettersson
2010-12-19 12:16 ` Mikael Pettersson
2010-12-19 12:33 ` Mikael Pettersson
2010-12-19 12:33 ` Mikael Pettersson
2010-12-19 12:55 ` Russell King - ARM Linux
2010-12-19 12:55 ` Russell King - ARM Linux
2010-12-19 14:05 ` Mikael Pettersson
2010-12-19 14:05 ` Mikael Pettersson
2010-12-19 14:49 ` Russell King - ARM Linux
2010-12-19 14:49 ` Russell King - ARM Linux
2010-12-19 16:15 ` Mikael Pettersson
2010-12-19 16:15 ` Mikael Pettersson
2010-12-20 3:32 ` Eric Miao
2010-12-20 3:32 ` Eric Miao
2010-12-20 3:32 ` Eric Miao
2010-12-20 22:48 ` Russell King - ARM Linux
2010-12-20 22:48 ` Russell King - ARM Linux
2010-12-20 22:48 ` Russell King - ARM Linux
2010-12-21 19:24 ` Kevin Hilman
2010-12-21 19:24 ` Kevin Hilman
2010-12-21 19:24 ` Kevin Hilman
2010-12-22 7:24 ` Olof Johansson
2010-12-22 7:24 ` Olof Johansson
2010-12-22 7:24 ` Olof Johansson
2010-12-22 10:59 ` Jamie Iles
2010-12-22 10:59 ` Jamie Iles
2010-12-22 21:59 ` JD (Jiandong) Zheng
2011-01-08 9:05 ` Wan ZongShun
2011-01-08 9:05 ` Wan ZongShun
2011-01-08 9:23 ` Russell King - ARM Linux
2011-01-08 9:23 ` Russell King - ARM Linux
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=E1PTYps-0006k2-CG@rmk-PC.arm.linux.org.uk \
--to=linux@arm.linux.org.uk \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=tony@atomide.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.