diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-21 18:40:55 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-21 18:40:55 -0400 |
commit | 85b375a613085b78531ec86369a51c2f3b922f95 (patch) | |
tree | 716437d598de92bbd7acaf24622e9a7d74fc209a /include/asm-arm/arch-omap/clock.h | |
parent | ec965350bb98bd291eb34f6ecddfdcfc36da1e6e (diff) | |
parent | cf816ecb533ab96b883dfdc0db174598b5b5c4d2 (diff) |
Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm
* 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm: (212 commits)
[ARM] pxa: Phycore pcm-990-specific code for the PXA270 Quick Capture driver
[ARM] pxa: V4L2 soc_camera driver for PXA270
[ARM] pxa: restrict availability of pxa2xx PCMCIA drivers
[ARM] 5005/1: BAST: Fix kset_name initialiser
[ARM] 4967/1: Adds functions to set clkout rate for Samsung S3C2410
[ARM] 4988/1: Add GPIO lib support to the EP93xx
[ARM] Add initial sparsemem support
[ARM] pxa: initialise PXA devices before platform init code
[ARM] 5002/1: tosa: add two more leds
[ARM] 5004/1: Tosa: make several unreferenced structures static.
[ARM] 5003/1: Shut up sparse warnings
[ARM] 4977/2: soc - pxa2xx-ac97 - Add missing clk_enable()
[ARM] 4976/1: zylonite: Configure GPIO for WM9713 IRQ line
[ARM] 4974/1: Drop unused leds-tosa.
[ARM] 4973/1: Tosa: use leds-gpio driver.
[ARM] 4972/1: Tosa: convert scoop GPIOs usage to generic gpio code
[ARM] 4971/1: pxaficp_ir: provide startup and shutdown hooks
[ARM] pxa: lubbock: move mis-placed SPI info
[ARM] 4970/1: tosa: correct gpio used for wake up.
[ARM] 4966/1: magician: add MFP pin configuration
...
Diffstat (limited to 'include/asm-arm/arch-omap/clock.h')
-rw-r--r-- | include/asm-arm/arch-omap/clock.h | 75 |
1 files changed, 63 insertions, 12 deletions
diff --git a/include/asm-arm/arch-omap/clock.h b/include/asm-arm/arch-omap/clock.h index fa6881049903..57523bdb642b 100644 --- a/include/asm-arm/arch-omap/clock.h +++ b/include/asm-arm/arch-omap/clock.h | |||
@@ -14,6 +14,35 @@ | |||
14 | #define __ARCH_ARM_OMAP_CLOCK_H | 14 | #define __ARCH_ARM_OMAP_CLOCK_H |
15 | 15 | ||
16 | struct module; | 16 | struct module; |
17 | struct clk; | ||
18 | |||
19 | #if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) | ||
20 | |||
21 | struct clksel_rate { | ||
22 | u8 div; | ||
23 | u32 val; | ||
24 | u8 flags; | ||
25 | }; | ||
26 | |||
27 | struct clksel { | ||
28 | struct clk *parent; | ||
29 | const struct clksel_rate *rates; | ||
30 | }; | ||
31 | |||
32 | struct dpll_data { | ||
33 | void __iomem *mult_div1_reg; | ||
34 | u32 mult_mask; | ||
35 | u32 div1_mask; | ||
36 | # if defined(CONFIG_ARCH_OMAP3) | ||
37 | void __iomem *control_reg; | ||
38 | u32 enable_mask; | ||
39 | u8 auto_recal_bit; | ||
40 | u8 recal_en_bit; | ||
41 | u8 recal_st_bit; | ||
42 | # endif | ||
43 | }; | ||
44 | |||
45 | #endif | ||
17 | 46 | ||
18 | struct clk { | 47 | struct clk { |
19 | struct list_head node; | 48 | struct list_head node; |
@@ -25,8 +54,6 @@ struct clk { | |||
25 | __u32 flags; | 54 | __u32 flags; |
26 | void __iomem *enable_reg; | 55 | void __iomem *enable_reg; |
27 | __u8 enable_bit; | 56 | __u8 enable_bit; |
28 | __u8 rate_offset; | ||
29 | __u8 src_offset; | ||
30 | __s8 usecount; | 57 | __s8 usecount; |
31 | void (*recalc)(struct clk *); | 58 | void (*recalc)(struct clk *); |
32 | int (*set_rate)(struct clk *, unsigned long); | 59 | int (*set_rate)(struct clk *, unsigned long); |
@@ -34,6 +61,16 @@ struct clk { | |||
34 | void (*init)(struct clk *); | 61 | void (*init)(struct clk *); |
35 | int (*enable)(struct clk *); | 62 | int (*enable)(struct clk *); |
36 | void (*disable)(struct clk *); | 63 | void (*disable)(struct clk *); |
64 | #if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) | ||
65 | u8 fixed_div; | ||
66 | void __iomem *clksel_reg; | ||
67 | u32 clksel_mask; | ||
68 | const struct clksel *clksel; | ||
69 | const struct dpll_data *dpll_data; | ||
70 | #else | ||
71 | __u8 rate_offset; | ||
72 | __u8 src_offset; | ||
73 | #endif | ||
37 | }; | 74 | }; |
38 | 75 | ||
39 | struct clk_functions { | 76 | struct clk_functions { |
@@ -54,10 +91,12 @@ extern int clk_init(struct clk_functions * custom_clocks); | |||
54 | extern int clk_register(struct clk *clk); | 91 | extern int clk_register(struct clk *clk); |
55 | extern void clk_unregister(struct clk *clk); | 92 | extern void clk_unregister(struct clk *clk); |
56 | extern void propagate_rate(struct clk *clk); | 93 | extern void propagate_rate(struct clk *clk); |
94 | extern void recalculate_root_clocks(void); | ||
57 | extern void followparent_recalc(struct clk * clk); | 95 | extern void followparent_recalc(struct clk * clk); |
58 | extern void clk_allow_idle(struct clk *clk); | 96 | extern void clk_allow_idle(struct clk *clk); |
59 | extern void clk_deny_idle(struct clk *clk); | 97 | extern void clk_deny_idle(struct clk *clk); |
60 | extern int clk_get_usecount(struct clk *clk); | 98 | extern int clk_get_usecount(struct clk *clk); |
99 | extern void clk_enable_init_clocks(void); | ||
61 | 100 | ||
62 | /* Clock flags */ | 101 | /* Clock flags */ |
63 | #define RATE_CKCTL (1 << 0) /* Main fixed ratio clocks */ | 102 | #define RATE_CKCTL (1 << 0) /* Main fixed ratio clocks */ |
@@ -71,21 +110,33 @@ extern int clk_get_usecount(struct clk *clk); | |||
71 | #define CLOCK_NO_IDLE_PARENT (1 << 8) | 110 | #define CLOCK_NO_IDLE_PARENT (1 << 8) |
72 | #define DELAYED_APP (1 << 9) /* Delay application of clock */ | 111 | #define DELAYED_APP (1 << 9) /* Delay application of clock */ |
73 | #define CONFIG_PARTICIPANT (1 << 10) /* Fundamental clock */ | 112 | #define CONFIG_PARTICIPANT (1 << 10) /* Fundamental clock */ |
74 | #define CM_MPU_SEL1 (1 << 11) /* Domain divider/source */ | 113 | #define ENABLE_ON_INIT (1 << 11) /* Enable upon framework init */ |
75 | #define CM_DSP_SEL1 (1 << 12) | 114 | #define INVERT_ENABLE (1 << 12) /* 0 enables, 1 disables */ |
76 | #define CM_GFX_SEL1 (1 << 13) | 115 | /* bits 13-20 are currently free */ |
77 | #define CM_MODEM_SEL1 (1 << 14) | ||
78 | #define CM_CORE_SEL1 (1 << 15) /* Sets divider for many */ | ||
79 | #define CM_CORE_SEL2 (1 << 16) /* sets parent for GPT */ | ||
80 | #define CM_WKUP_SEL1 (1 << 17) | ||
81 | #define CM_PLL_SEL1 (1 << 18) | ||
82 | #define CM_PLL_SEL2 (1 << 19) | ||
83 | #define CM_SYSCLKOUT_SEL1 (1 << 20) | ||
84 | #define CLOCK_IN_OMAP310 (1 << 21) | 116 | #define CLOCK_IN_OMAP310 (1 << 21) |
85 | #define CLOCK_IN_OMAP730 (1 << 22) | 117 | #define CLOCK_IN_OMAP730 (1 << 22) |
86 | #define CLOCK_IN_OMAP1510 (1 << 23) | 118 | #define CLOCK_IN_OMAP1510 (1 << 23) |
87 | #define CLOCK_IN_OMAP16XX (1 << 24) | 119 | #define CLOCK_IN_OMAP16XX (1 << 24) |
88 | #define CLOCK_IN_OMAP242X (1 << 25) | 120 | #define CLOCK_IN_OMAP242X (1 << 25) |
89 | #define CLOCK_IN_OMAP243X (1 << 26) | 121 | #define CLOCK_IN_OMAP243X (1 << 26) |
122 | #define CLOCK_IN_OMAP343X (1 << 27) /* clocks common to all 343X */ | ||
123 | #define PARENT_CONTROLS_CLOCK (1 << 28) | ||
124 | #define CLOCK_IN_OMAP3430ES1 (1 << 29) /* 3430ES1 clocks only */ | ||
125 | #define CLOCK_IN_OMAP3430ES2 (1 << 30) /* 3430ES2 clocks only */ | ||
126 | |||
127 | /* Clksel_rate flags */ | ||
128 | #define DEFAULT_RATE (1 << 0) | ||
129 | #define RATE_IN_242X (1 << 1) | ||
130 | #define RATE_IN_243X (1 << 2) | ||
131 | #define RATE_IN_343X (1 << 3) /* rates common to all 343X */ | ||
132 | #define RATE_IN_3430ES2 (1 << 4) /* 3430ES2 rates only */ | ||
133 | |||
134 | #define RATE_IN_24XX (RATE_IN_242X | RATE_IN_243X) | ||
135 | |||
136 | |||
137 | /* CM_CLKSEL2_PLL.CORE_CLK_SRC options (24XX) */ | ||
138 | #define CORE_CLK_SRC_32K 0 | ||
139 | #define CORE_CLK_SRC_DPLL 1 | ||
140 | #define CORE_CLK_SRC_DPLL_X2 2 | ||
90 | 141 | ||
91 | #endif | 142 | #endif |