Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
clocks.h
Go to the documentation of this file.
1 /*
2  * Common Clock definitions for various kernel files
3  *
4  * Copyright 2007-2008 Analog Devices Inc.
5  *
6  * Licensed under the GPL-2 or later.
7  */
8 
9 #ifndef _BFIN_CLOCKS_H
10 #define _BFIN_CLOCKS_H
11 
12 #include <asm/dpmc.h>
13 
14 #ifdef CONFIG_CCLK_DIV_1
15 # define CONFIG_CCLK_ACT_DIV CCLK_DIV1
16 # define CONFIG_CCLK_DIV 1
17 #endif
18 
19 #ifdef CONFIG_CCLK_DIV_2
20 # define CONFIG_CCLK_ACT_DIV CCLK_DIV2
21 # define CONFIG_CCLK_DIV 2
22 #endif
23 
24 #ifdef CONFIG_CCLK_DIV_4
25 # define CONFIG_CCLK_ACT_DIV CCLK_DIV4
26 # define CONFIG_CCLK_DIV 4
27 #endif
28 
29 #ifdef CONFIG_CCLK_DIV_8
30 # define CONFIG_CCLK_ACT_DIV CCLK_DIV8
31 # define CONFIG_CCLK_DIV 8
32 #endif
33 
34 #ifndef CONFIG_PLL_BYPASS
35 # ifndef CONFIG_CLKIN_HALF
36 # define CONFIG_VCO_HZ (CONFIG_CLKIN_HZ * CONFIG_VCO_MULT)
37 # else
38 # define CONFIG_VCO_HZ ((CONFIG_CLKIN_HZ * CONFIG_VCO_MULT)/2)
39 # endif
40 
41 # define CONFIG_CCLK_HZ (CONFIG_VCO_HZ/CONFIG_CCLK_DIV)
42 # define CONFIG_SCLK_HZ (CONFIG_VCO_HZ/CONFIG_SCLK_DIV)
43 
44 #else
45 # define CONFIG_VCO_HZ (CONFIG_CLKIN_HZ)
46 # define CONFIG_CCLK_HZ (CONFIG_CLKIN_HZ)
47 # define CONFIG_SCLK_HZ (CONFIG_CLKIN_HZ)
48 # define CONFIG_VCO_MULT 0
49 #endif
50 
51 #include <linux/clk.h>
52 
53 struct clk_ops {
54  unsigned long (*get_rate)(struct clk *clk);
55  unsigned long (*round_rate)(struct clk *clk, unsigned long rate);
56  int (*set_rate)(struct clk *clk, unsigned long rate);
57  int (*enable)(struct clk *clk);
58  int (*disable)(struct clk *clk);
59 };
60 
61 struct clk {
62  struct clk *parent;
63  const char *name;
64  unsigned long rate;
66  u32 flags;
67  const struct clk_ops *ops;
68  void __iomem *reg;
71 };
72 
73 int clk_init(void);
74 #endif