Commit 30c9c5b157b70d0a2f1fd0f37b936e63bade0d58
1 parent
5d0ef6ae63
Exists in
smarc-l5.0.0_1.0.0-ga
and in
5 other branches
ARM: davinci: convert to common sched_clock() implementation
Davinci has its own sched_clock() implementation, which gets in the way of a single zImage. Moving to the common sched_clock framework makes the code slightly cleaner. Acked-by: Sekhar Nori <nsekhar@ti.com> Cc: Kevin Hilman <khilman@ti.com> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Showing 2 changed files with 8 additions and 17 deletions Side-by-side Diff
arch/arm/Kconfig
arch/arm/mach-davinci/time.c
... | ... | @@ -19,6 +19,7 @@ |
19 | 19 | #include <linux/err.h> |
20 | 20 | #include <linux/platform_device.h> |
21 | 21 | |
22 | +#include <asm/sched_clock.h> | |
22 | 23 | #include <asm/mach/irq.h> |
23 | 24 | #include <asm/mach/time.h> |
24 | 25 | |
25 | 26 | |
... | ... | @@ -274,19 +275,9 @@ |
274 | 275 | return (cycles_t)timer32_read(t); |
275 | 276 | } |
276 | 277 | |
277 | -/* | |
278 | - * Kernel assumes that sched_clock can be called early but may not have | |
279 | - * things ready yet. | |
280 | - */ | |
281 | -static cycle_t read_dummy(struct clocksource *cs) | |
282 | -{ | |
283 | - return 0; | |
284 | -} | |
285 | - | |
286 | - | |
287 | 278 | static struct clocksource clocksource_davinci = { |
288 | 279 | .rating = 300, |
289 | - .read = read_dummy, | |
280 | + .read = read_cycles, | |
290 | 281 | .mask = CLOCKSOURCE_MASK(32), |
291 | 282 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, |
292 | 283 | }; |
293 | 284 | |
... | ... | @@ -294,12 +285,9 @@ |
294 | 285 | /* |
295 | 286 | * Overwrite weak default sched_clock with something more precise |
296 | 287 | */ |
297 | -unsigned long long notrace sched_clock(void) | |
288 | +static u32 notrace davinci_read_sched_clock(void) | |
298 | 289 | { |
299 | - const cycle_t cyc = clocksource_davinci.read(&clocksource_davinci); | |
300 | - | |
301 | - return clocksource_cyc2ns(cyc, clocksource_davinci.mult, | |
302 | - clocksource_davinci.shift); | |
290 | + return timer32_read(&timers[TID_CLOCKSOURCE]); | |
303 | 291 | } |
304 | 292 | |
305 | 293 | /* |
306 | 294 | |
... | ... | @@ -399,11 +387,13 @@ |
399 | 387 | davinci_clock_tick_rate = clk_get_rate(timer_clk); |
400 | 388 | |
401 | 389 | /* setup clocksource */ |
402 | - clocksource_davinci.read = read_cycles; | |
403 | 390 | clocksource_davinci.name = id_to_name[clocksource_id]; |
404 | 391 | if (clocksource_register_hz(&clocksource_davinci, |
405 | 392 | davinci_clock_tick_rate)) |
406 | 393 | printk(err, clocksource_davinci.name); |
394 | + | |
395 | + setup_sched_clock(davinci_read_sched_clock, 32, | |
396 | + davinci_clock_tick_rate); | |
407 | 397 | |
408 | 398 | /* setup clockevent */ |
409 | 399 | clockevent_davinci.name = id_to_name[timers[TID_CLOCKEVENT].id]; |