/Ethereal-msm8939-beta9/arch/metag/kernel/clock.c
https://bitbucket.org/MilosStamenkovic95/etherealos · C · 53 lines · 20 code · 7 blank · 26 comment · 2 complexity · eaeba3c33d5b54e188981590abe0d409 MD5 · raw file
- /*
- * arch/metag/kernel/clock.c
- *
- * Copyright (C) 2012 Imagination Technologies Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
- #include <linux/delay.h>
- #include <linux/io.h>
- #include <asm/param.h>
- #include <asm/clock.h>
- struct meta_clock_desc _meta_clock;
- /* Default machine get_core_freq callback. */
- static unsigned long get_core_freq_default(void)
- {
- #ifdef CONFIG_METAG_META21
- /*
- * Meta 2 cores divide down the core clock for the Meta timers, so we
- * can estimate the core clock from the divider.
- */
- return (metag_in32(EXPAND_TIMER_DIV) + 1) * 1000000;
- #else
- /*
- * On Meta 1 we don't know the core clock, but assuming the Meta timer
- * is correct it can be estimated based on loops_per_jiffy.
- */
- return (loops_per_jiffy * HZ * 5) >> 1;
- #endif
- }
- /**
- * setup_meta_clocks() - Set up the Meta clock.
- * @desc: Clock descriptor usually provided by machine description
- *
- * Ensures all callbacks are valid.
- */
- void __init setup_meta_clocks(struct meta_clock_desc *desc)
- {
- /* copy callbacks */
- if (desc)
- _meta_clock = *desc;
- /* set fallback functions */
- if (!_meta_clock.get_core_freq)
- _meta_clock.get_core_freq = get_core_freq_default;
- }