/* * arch/metag/include/asm/clock.h * * 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. */ #ifndef _METAG_CLOCK_H_ #define _METAG_CLOCK_H_ #include /** * struct meta_clock_desc - Meta Core clock callbacks. * @get_core_freq: Get the frequency of the Meta core. If this is NULL, the * core frequency will be determined like this: * Meta 1: based on loops_per_jiffy. * Meta 2: (EXPAND_TIMER_DIV + 1) MHz. * If a "core" clock is provided by the device tree, it * will override this function. */ struct meta_clock_desc { unsigned long (*get_core_freq)(void); }; extern struct meta_clock_desc _meta_clock; /* * Perform platform clock initialisation, reading clocks from device tree etc. * Only accessible during boot. */ void init_metag_clocks(void); /* * Set up the default clock, ensuring all callbacks are valid - only accessible * during boot. */ void setup_meta_clocks(struct meta_clock_desc *desc); /** * get_coreclock() - Get the frequency of the Meta core clock. * * Returns: The Meta core clock frequency in Hz. */ static inline unsigned long get_coreclock(void) { /* * Use the current clock callback. If set correctly this will provide * the most accurate frequency as it can be calculated directly from the * PLL configuration. otherwise a default callback will have been set * instead. */ return _meta_clock.get_core_freq(); } #endif /* _METAG_CLOCK_H_ */