diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-29 19:53:48 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-29 19:53:48 -0400 |
commit | 12679a2d7e3bfbdc7586e3e86d1ca90c46659363 (patch) | |
tree | d9c00f2e599d1c3e04a349229a6a19906d01f99e /arch/arm/mach-davinci | |
parent | 1c036588772d01655d851f75dffc27c971e072e2 (diff) | |
parent | b0df89868006517417251e02cc4ce5d4b0165885 (diff) |
Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm
Pull more ARM updates from Russell King.
This got a fair number of conflicts with the <asm/system.h> split, but
also with some other sparse-irq and header file include cleanups. They
all looked pretty trivial, though.
* 'for-linus' of git://git.linaro.org/people/rmk/linux-arm: (59 commits)
ARM: fix Kconfig warning for HAVE_BPF_JIT
ARM: 7361/1: provide XIP_VIRT_ADDR for no-MMU builds
ARM: 7349/1: integrator: convert to sparse irqs
ARM: 7259/3: net: JIT compiler for packet filters
ARM: 7334/1: add jump label support
ARM: 7333/2: jump label: detect %c support for ARM
ARM: 7338/1: add support for early console output via semihosting
ARM: use set_current_blocked() and block_sigmask()
ARM: exec: remove redundant set_fs(USER_DS)
ARM: 7332/1: extract out code patch function from kprobes
ARM: 7331/1: extract out insn generation code from ftrace
ARM: 7330/1: ftrace: use canonical Thumb-2 wide instruction format
ARM: 7351/1: ftrace: remove useless memory checks
ARM: 7316/1: kexec: EOI active and mask all interrupts in kexec crash path
ARM: Versatile Express: add NO_IOPORT
ARM: get rid of asm/irq.h in asm/prom.h
ARM: 7319/1: Print debug info for SIGBUS in user faults
ARM: 7318/1: gic: refactor irq_start assignment
ARM: 7317/1: irq: avoid NULL check in for_each_irq_desc loop
ARM: 7315/1: perf: add support for the Cortex-A7 PMU
...
Diffstat (limited to 'arch/arm/mach-davinci')
-rw-r--r-- | arch/arm/mach-davinci/time.c | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c index e1969ce904dc..75da315b6587 100644 --- a/arch/arm/mach-davinci/time.c +++ b/arch/arm/mach-davinci/time.c | |||
@@ -19,11 +19,14 @@ | |||
19 | #include <linux/err.h> | 19 | #include <linux/err.h> |
20 | #include <linux/platform_device.h> | 20 | #include <linux/platform_device.h> |
21 | 21 | ||
22 | #include <mach/hardware.h> | 22 | #include <asm/sched_clock.h> |
23 | #include <asm/mach/irq.h> | 23 | #include <asm/mach/irq.h> |
24 | #include <asm/mach/time.h> | 24 | #include <asm/mach/time.h> |
25 | |||
25 | #include <mach/cputype.h> | 26 | #include <mach/cputype.h> |
27 | #include <mach/hardware.h> | ||
26 | #include <mach/time.h> | 28 | #include <mach/time.h> |
29 | |||
27 | #include "clock.h" | 30 | #include "clock.h" |
28 | 31 | ||
29 | static struct clock_event_device clockevent_davinci; | 32 | static struct clock_event_device clockevent_davinci; |
@@ -272,19 +275,9 @@ static cycle_t read_cycles(struct clocksource *cs) | |||
272 | return (cycles_t)timer32_read(t); | 275 | return (cycles_t)timer32_read(t); |
273 | } | 276 | } |
274 | 277 | ||
275 | /* | ||
276 | * Kernel assumes that sched_clock can be called early but may not have | ||
277 | * things ready yet. | ||
278 | */ | ||
279 | static cycle_t read_dummy(struct clocksource *cs) | ||
280 | { | ||
281 | return 0; | ||
282 | } | ||
283 | |||
284 | |||
285 | static struct clocksource clocksource_davinci = { | 278 | static struct clocksource clocksource_davinci = { |
286 | .rating = 300, | 279 | .rating = 300, |
287 | .read = read_dummy, | 280 | .read = read_cycles, |
288 | .mask = CLOCKSOURCE_MASK(32), | 281 | .mask = CLOCKSOURCE_MASK(32), |
289 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, | 282 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, |
290 | }; | 283 | }; |
@@ -292,12 +285,9 @@ static struct clocksource clocksource_davinci = { | |||
292 | /* | 285 | /* |
293 | * Overwrite weak default sched_clock with something more precise | 286 | * Overwrite weak default sched_clock with something more precise |
294 | */ | 287 | */ |
295 | unsigned long long notrace sched_clock(void) | 288 | static u32 notrace davinci_read_sched_clock(void) |
296 | { | 289 | { |
297 | const cycle_t cyc = clocksource_davinci.read(&clocksource_davinci); | 290 | return timer32_read(&timers[TID_CLOCKSOURCE]); |
298 | |||
299 | return clocksource_cyc2ns(cyc, clocksource_davinci.mult, | ||
300 | clocksource_davinci.shift); | ||
301 | } | 291 | } |
302 | 292 | ||
303 | /* | 293 | /* |
@@ -397,12 +387,14 @@ static void __init davinci_timer_init(void) | |||
397 | davinci_clock_tick_rate = clk_get_rate(timer_clk); | 387 | davinci_clock_tick_rate = clk_get_rate(timer_clk); |
398 | 388 | ||
399 | /* setup clocksource */ | 389 | /* setup clocksource */ |
400 | clocksource_davinci.read = read_cycles; | ||
401 | clocksource_davinci.name = id_to_name[clocksource_id]; | 390 | clocksource_davinci.name = id_to_name[clocksource_id]; |
402 | if (clocksource_register_hz(&clocksource_davinci, | 391 | if (clocksource_register_hz(&clocksource_davinci, |
403 | davinci_clock_tick_rate)) | 392 | davinci_clock_tick_rate)) |
404 | printk(err, clocksource_davinci.name); | 393 | printk(err, clocksource_davinci.name); |
405 | 394 | ||
395 | setup_sched_clock(davinci_read_sched_clock, 32, | ||
396 | davinci_clock_tick_rate); | ||
397 | |||
406 | /* setup clockevent */ | 398 | /* setup clockevent */ |
407 | clockevent_davinci.name = id_to_name[timers[TID_CLOCKEVENT].id]; | 399 | clockevent_davinci.name = id_to_name[timers[TID_CLOCKEVENT].id]; |
408 | clockevent_davinci.mult = div_sc(davinci_clock_tick_rate, NSEC_PER_SEC, | 400 | clockevent_davinci.mult = div_sc(davinci_clock_tick_rate, NSEC_PER_SEC, |