mirror of
https://github.com/torvalds/linux.git
synced 2026-06-08 14:42:37 +02:00
Revert "clocksource: Provide a generic mult/shift factor calculation"
This reverts commit cfc80b6829.
This commit is contained in:
parent
ab47eea0bb
commit
2448a5573a
|
|
@ -130,13 +130,6 @@ extern int clockevents_program_event(struct clock_event_device *dev,
|
|||
|
||||
extern void clockevents_handle_noop(struct clock_event_device *dev);
|
||||
|
||||
static inline void
|
||||
clockevents_calc_mult_shift(struct clock_event_device *ce, u32 freq, u32 minsec)
|
||||
{
|
||||
return clocks_calc_mult_shift(&ce->mult, &ce->shift, NSEC_PER_SEC,
|
||||
freq, minsec);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_GENERIC_CLOCKEVENTS
|
||||
extern void clockevents_notify(unsigned long reason, void *arg);
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -281,16 +281,6 @@ extern void clocksource_resume(void);
|
|||
extern struct clocksource * __init __weak clocksource_default_clock(void);
|
||||
extern void clocksource_mark_unstable(struct clocksource *cs);
|
||||
|
||||
extern void
|
||||
clocks_calc_mult_shift(u32 *mult, u32 *shift, u32 from, u32 to, u32 minsec);
|
||||
|
||||
static inline void
|
||||
clocksource_calc_mult_shift(struct clocksource *cs, u32 freq, u32 minsec)
|
||||
{
|
||||
return clocks_calc_mult_shift(&cs->mult, &cs->shift, freq,
|
||||
NSEC_PER_SEC, minsec);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_GENERIC_TIME_VSYSCALL
|
||||
extern void
|
||||
update_vsyscall(struct timespec *ts, struct clocksource *c, u32 mult);
|
||||
|
|
|
|||
|
|
@ -107,59 +107,6 @@ u64 timecounter_cyc2time(struct timecounter *tc,
|
|||
}
|
||||
EXPORT_SYMBOL(timecounter_cyc2time);
|
||||
|
||||
/**
|
||||
* clocks_calc_mult_shift - calculate mult/shift factors for scaled math of clocks
|
||||
* @mult: pointer to mult variable
|
||||
* @shift: pointer to shift variable
|
||||
* @from: frequency to convert from
|
||||
* @to: frequency to convert to
|
||||
* @minsec: guaranteed runtime conversion range in seconds
|
||||
*
|
||||
* The function evaluates the shift/mult pair for the scaled math
|
||||
* operations of clocksources and clockevents.
|
||||
*
|
||||
* @to and @from are frequency values in HZ. For clock sources @to is
|
||||
* NSEC_PER_SEC == 1GHz and @from is the counter frequency. For clock
|
||||
* event @to is the counter frequency and @from is NSEC_PER_SEC.
|
||||
*
|
||||
* The @minsec conversion range argument controls the time frame in
|
||||
* seconds which must be covered by the runtime conversion with the
|
||||
* calculated mult and shift factors. This guarantees that no 64bit
|
||||
* overflow happens when the input value of the conversion is
|
||||
* multiplied with the calculated mult factor. Larger ranges may
|
||||
* reduce the conversion accuracy by chosing smaller mult and shift
|
||||
* factors.
|
||||
*/
|
||||
void
|
||||
clocks_calc_mult_shift(u32 *mult, u32 *shift, u32 from, u32 to, u32 minsec)
|
||||
{
|
||||
u64 tmp;
|
||||
u32 sft, sftacc= 32;
|
||||
|
||||
/*
|
||||
* Calculate the shift factor which is limiting the conversion
|
||||
* range:
|
||||
*/
|
||||
tmp = ((u64)minsec * from) >> 32;
|
||||
while (tmp) {
|
||||
tmp >>=1;
|
||||
sftacc--;
|
||||
}
|
||||
|
||||
/*
|
||||
* Find the conversion shift/mult pair which has the best
|
||||
* accuracy and fits the maxsec conversion range:
|
||||
*/
|
||||
for (sft = 32; sft > 0; sft--) {
|
||||
tmp = (u64) to << sft;
|
||||
do_div(tmp, from);
|
||||
if ((tmp >> sftacc) == 0)
|
||||
break;
|
||||
}
|
||||
*mult = tmp;
|
||||
*shift = sft;
|
||||
}
|
||||
|
||||
/*[Clocksource internal variables]---------
|
||||
* curr_clocksource:
|
||||
* currently selected clocksource.
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user