diff options
Diffstat (limited to 'arch/arm/mach-omap2/clockdomain.h')
-rw-r--r-- | arch/arm/mach-omap2/clockdomain.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/clockdomain.h b/arch/arm/mach-omap2/clockdomain.h index 5823584d9cd7..1e50c88b8a07 100644 --- a/arch/arm/mach-omap2/clockdomain.h +++ b/arch/arm/mach-omap2/clockdomain.h | |||
@@ -17,9 +17,11 @@ | |||
17 | #define __ARCH_ARM_MACH_OMAP2_CLOCKDOMAIN_H | 17 | #define __ARCH_ARM_MACH_OMAP2_CLOCKDOMAIN_H |
18 | 18 | ||
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | #include <linux/spinlock.h> | ||
20 | 21 | ||
21 | #include "powerdomain.h" | 22 | #include "powerdomain.h" |
22 | #include <plat/clock.h> | 23 | #include <plat/clock.h> |
24 | #include <plat/omap_hwmod.h> | ||
23 | #include <plat/cpu.h> | 25 | #include <plat/cpu.h> |
24 | 26 | ||
25 | /* | 27 | /* |
@@ -82,6 +84,9 @@ struct clkdm_dep { | |||
82 | const struct omap_chip_id omap_chip; | 84 | const struct omap_chip_id omap_chip; |
83 | }; | 85 | }; |
84 | 86 | ||
87 | /* Possible flags for struct clockdomain._flags */ | ||
88 | #define _CLKDM_FLAG_HWSUP_ENABLED BIT(0) | ||
89 | |||
85 | /** | 90 | /** |
86 | * struct clockdomain - OMAP clockdomain | 91 | * struct clockdomain - OMAP clockdomain |
87 | * @name: clockdomain name | 92 | * @name: clockdomain name |
@@ -89,6 +94,7 @@ struct clkdm_dep { | |||
89 | * @clktrctrl_reg: CLKSTCTRL reg for the given clock domain | 94 | * @clktrctrl_reg: CLKSTCTRL reg for the given clock domain |
90 | * @clktrctrl_mask: CLKTRCTRL/AUTOSTATE field mask in CM_CLKSTCTRL reg | 95 | * @clktrctrl_mask: CLKTRCTRL/AUTOSTATE field mask in CM_CLKSTCTRL reg |
91 | * @flags: Clockdomain capability flags | 96 | * @flags: Clockdomain capability flags |
97 | * @_flags: Flags for use only by internal clockdomain code | ||
92 | * @dep_bit: Bit shift of this clockdomain's PM_WKDEP/CM_SLEEPDEP bit | 98 | * @dep_bit: Bit shift of this clockdomain's PM_WKDEP/CM_SLEEPDEP bit |
93 | * @prcm_partition: (OMAP4 only) PRCM partition ID for this clkdm's registers | 99 | * @prcm_partition: (OMAP4 only) PRCM partition ID for this clkdm's registers |
94 | * @cm_inst: (OMAP4 only) CM instance register offset | 100 | * @cm_inst: (OMAP4 only) CM instance register offset |
@@ -113,6 +119,7 @@ struct clockdomain { | |||
113 | } pwrdm; | 119 | } pwrdm; |
114 | const u16 clktrctrl_mask; | 120 | const u16 clktrctrl_mask; |
115 | const u8 flags; | 121 | const u8 flags; |
122 | u8 _flags; | ||
116 | const u8 dep_bit; | 123 | const u8 dep_bit; |
117 | const u8 prcm_partition; | 124 | const u8 prcm_partition; |
118 | const s16 cm_inst; | 125 | const s16 cm_inst; |
@@ -122,6 +129,7 @@ struct clockdomain { | |||
122 | const struct omap_chip_id omap_chip; | 129 | const struct omap_chip_id omap_chip; |
123 | atomic_t usecount; | 130 | atomic_t usecount; |
124 | struct list_head node; | 131 | struct list_head node; |
132 | spinlock_t lock; | ||
125 | }; | 133 | }; |
126 | 134 | ||
127 | /** | 135 | /** |
@@ -177,12 +185,15 @@ int clkdm_clear_all_sleepdeps(struct clockdomain *clkdm); | |||
177 | 185 | ||
178 | void clkdm_allow_idle(struct clockdomain *clkdm); | 186 | void clkdm_allow_idle(struct clockdomain *clkdm); |
179 | void clkdm_deny_idle(struct clockdomain *clkdm); | 187 | void clkdm_deny_idle(struct clockdomain *clkdm); |
188 | bool clkdm_in_hwsup(struct clockdomain *clkdm); | ||
180 | 189 | ||
181 | int clkdm_wakeup(struct clockdomain *clkdm); | 190 | int clkdm_wakeup(struct clockdomain *clkdm); |
182 | int clkdm_sleep(struct clockdomain *clkdm); | 191 | int clkdm_sleep(struct clockdomain *clkdm); |
183 | 192 | ||
184 | int clkdm_clk_enable(struct clockdomain *clkdm, struct clk *clk); | 193 | int clkdm_clk_enable(struct clockdomain *clkdm, struct clk *clk); |
185 | int clkdm_clk_disable(struct clockdomain *clkdm, struct clk *clk); | 194 | int clkdm_clk_disable(struct clockdomain *clkdm, struct clk *clk); |
195 | int clkdm_hwmod_enable(struct clockdomain *clkdm, struct omap_hwmod *oh); | ||
196 | int clkdm_hwmod_disable(struct clockdomain *clkdm, struct omap_hwmod *oh); | ||
186 | 197 | ||
187 | extern void __init omap2xxx_clockdomains_init(void); | 198 | extern void __init omap2xxx_clockdomains_init(void); |
188 | extern void __init omap3xxx_clockdomains_init(void); | 199 | extern void __init omap3xxx_clockdomains_init(void); |