Commit c8f77436 authored by Michal Simek's avatar Michal Simek

microblaze: Decrease time shifting values

Lower shifting values ensure that shifted 32bit counter
value doesn't exceed 64bit cycle variable too fast.
Signed-off-by: default avatarMichal Simek <monstr@monstr.eu>
parent 615748ae
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include <asm/prom.h> #include <asm/prom.h>
#include <asm/irq.h> #include <asm/irq.h>
#include <asm/system.h> #include <asm/system.h>
#include <linux/cnt32_to_63.h>
#ifdef CONFIG_SELFMOD_TIMER #ifdef CONFIG_SELFMOD_TIMER
#include <asm/selfmod.h> #include <asm/selfmod.h>
...@@ -135,7 +136,7 @@ static void microblaze_timer_set_mode(enum clock_event_mode mode, ...@@ -135,7 +136,7 @@ static void microblaze_timer_set_mode(enum clock_event_mode mode,
static struct clock_event_device clockevent_microblaze_timer = { static struct clock_event_device clockevent_microblaze_timer = {
.name = "microblaze_clockevent", .name = "microblaze_clockevent",
.features = CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_PERIODIC, .features = CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_PERIODIC,
.shift = 24, .shift = 8,
.rating = 300, .rating = 300,
.set_next_event = microblaze_timer_set_next_event, .set_next_event = microblaze_timer_set_next_event,
.set_mode = microblaze_timer_set_mode, .set_mode = microblaze_timer_set_mode,
...@@ -195,7 +196,7 @@ static cycle_t microblaze_cc_read(const struct cyclecounter *cc) ...@@ -195,7 +196,7 @@ static cycle_t microblaze_cc_read(const struct cyclecounter *cc)
static struct cyclecounter microblaze_cc = { static struct cyclecounter microblaze_cc = {
.read = microblaze_cc_read, .read = microblaze_cc_read,
.mask = CLOCKSOURCE_MASK(32), .mask = CLOCKSOURCE_MASK(32),
.shift = 24, .shift = 8,
}; };
int __init init_microblaze_timecounter(void) int __init init_microblaze_timecounter(void)
...@@ -213,7 +214,7 @@ static struct clocksource clocksource_microblaze = { ...@@ -213,7 +214,7 @@ static struct clocksource clocksource_microblaze = {
.rating = 300, .rating = 300,
.read = microblaze_read, .read = microblaze_read,
.mask = CLOCKSOURCE_MASK(32), .mask = CLOCKSOURCE_MASK(32),
.shift = 24, /* I can shift it */ .shift = 8, /* I can shift it */
.flags = CLOCK_SOURCE_IS_CONTINUOUS, .flags = CLOCK_SOURCE_IS_CONTINUOUS,
}; };
...@@ -302,7 +303,7 @@ unsigned long long notrace sched_clock(void) ...@@ -302,7 +303,7 @@ unsigned long long notrace sched_clock(void)
{ {
if (timer_initialized) { if (timer_initialized) {
struct clocksource *cs = &clocksource_microblaze; struct clocksource *cs = &clocksource_microblaze;
cycle_t cyc = cs->read(NULL); cycle_t cyc = cnt32_to_63(cs->read(NULL));
return clocksource_cyc2ns(cyc, cs->mult, cs->shift); return clocksource_cyc2ns(cyc, cs->mult, cs->shift);
} }
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment