/**
 * __clocksource_register_scale - Used to install new clocksources
 * @cs:  clocksource to be registered
 * @scale: Scale factor multiplied against freq to get clocksource hz
 * @freq: clocksource frequency (cycles per second) divided by scale
 *
 * Returns -EBUSY if registration fails, zero otherwise.
 *
 * This *SHOULD NOT* be called directly! Please use the
 * clocksource_register_hz() or clocksource_register_khz helper functions.
 */
int __clocksource_register_scale(struct clocksource *cs, u32 scale, u32 freq)
{

 
 /* Initialize mult/shift and max_idle_ns */
 __clocksource_update_freq_scale(cs, scale, freq);
 /* Add clocksource to the clocksource list */
 mutex_lock(&clocksource_mutex);
 clocksource_enqueue(cs);
 clocksource_enqueue_watchdog(cs);
 clocksource_select();
 clocksource_select_watchdog(false);
 mutex_unlock(&clocksource_mutex);
 return 0;
}
EXPORT_SYMBOL_GPL(__clocksource_register_scale);