Commit e3a4fab0 authored by Thomas Gleixner's avatar Thomas Gleixner

mips: Use generic mult/shift factor calculation for clocks

Replace the MIPS functions of mult/shift factor calculation for clock
events and clock sources with inline functions which call the generic
functions. The minimum guaranteed conversion range is set to 4 seconds
which corresponds to the current MIPS implementation.
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Cc: Mikael Pettersson <mikpe@it.uu.se>
Acked-by: default avatarRalf Baechle <ralf@linux-mips.org>
Acked-by: default avatarLinus Walleij <linus.walleij@stericsson.com>
Cc: John Stultz <johnstul@us.ibm.com>
LKML-Reference: <20091111134229.807255074@linutronix.de>
parent 7d2f944a
...@@ -84,8 +84,16 @@ static inline int init_mips_clocksource(void) ...@@ -84,8 +84,16 @@ static inline int init_mips_clocksource(void)
#endif #endif
} }
extern void clocksource_set_clock(struct clocksource *cs, unsigned int clock); static inline void clocksource_set_clock(struct clocksource *cs,
extern void clockevent_set_clock(struct clock_event_device *cd, unsigned int clock)
unsigned int clock); {
clocksource_calc_mult_shift(cs, clock, 4);
}
static inline void clockevent_set_clock(struct clock_event_device *cd,
unsigned int clock)
{
clockevents_calc_mult_shift(cd, clock, 4);
}
#endif /* _ASM_TIME_H */ #endif /* _ASM_TIME_H */
...@@ -71,39 +71,6 @@ EXPORT_SYMBOL(perf_irq); ...@@ -71,39 +71,6 @@ EXPORT_SYMBOL(perf_irq);
unsigned int mips_hpt_frequency; unsigned int mips_hpt_frequency;
void __init clocksource_set_clock(struct clocksource *cs, unsigned int clock)
{
u64 temp;
u32 shift;
/* Find a shift value */
for (shift = 32; shift > 0; shift--) {
temp = (u64) NSEC_PER_SEC << shift;
do_div(temp, clock);
if ((temp >> 32) == 0)
break;
}
cs->shift = shift;
cs->mult = (u32) temp;
}
void __cpuinit clockevent_set_clock(struct clock_event_device *cd,
unsigned int clock)
{
u64 temp;
u32 shift;
/* Find a shift value */
for (shift = 32; shift > 0; shift--) {
temp = (u64) clock << shift;
do_div(temp, NSEC_PER_SEC);
if ((temp >> 32) == 0)
break;
}
cd->shift = shift;
cd->mult = (u32) temp;
}
/* /*
* This function exists in order to cause an error due to a duplicate * This function exists in order to cause an error due to a duplicate
* definition if platform code should have its own implementation. The hook * definition if platform code should have its own implementation. The hook
......
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