Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / arch / metag / include / asm / clock.h
1 /*
2  * arch/metag/include/asm/clock.h
3  *
4  * Copyright (C) 2012 Imagination Technologies Ltd.
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  */
10
11 #ifndef _METAG_CLOCK_H_
12 #define _METAG_CLOCK_H_
13
14 #include <asm/mach/arch.h>
15
16 /**
17  * struct meta_clock_desc - Meta Core clock callbacks.
18  * @get_core_freq:      Get the frequency of the Meta core. If this is NULL, the
19  *                      core frequency will be determined like this:
20  *                      Meta 1: based on loops_per_jiffy.
21  *                      Meta 2: (EXPAND_TIMER_DIV + 1) MHz.
22  *                      If a "core" clock is provided by the device tree, it
23  *                      will override this function.
24  */
25 struct meta_clock_desc {
26         unsigned long           (*get_core_freq)(void);
27 };
28
29 extern struct meta_clock_desc _meta_clock;
30
31 /*
32  * Perform platform clock initialisation, reading clocks from device tree etc.
33  * Only accessible during boot.
34  */
35 void init_metag_clocks(void);
36
37 /*
38  * Set up the default clock, ensuring all callbacks are valid - only accessible
39  * during boot.
40  */
41 void setup_meta_clocks(struct meta_clock_desc *desc);
42
43 /**
44  * get_coreclock() - Get the frequency of the Meta core clock.
45  *
46  * Returns:     The Meta core clock frequency in Hz.
47  */
48 static inline unsigned long get_coreclock(void)
49 {
50         /*
51          * Use the current clock callback. If set correctly this will provide
52          * the most accurate frequency as it can be calculated directly from the
53          * PLL configuration. otherwise a default callback will have been set
54          * instead.
55          */
56         return _meta_clock.get_core_freq();
57 }
58
59 #endif /* _METAG_CLOCK_H_ */