.. | .. |
---|
3 | 3 | #define __MACH_MMP_CLK_H |
---|
4 | 4 | |
---|
5 | 5 | #include <linux/clk-provider.h> |
---|
| 6 | +#include <linux/pm_domain.h> |
---|
6 | 7 | #include <linux/clkdev.h> |
---|
7 | 8 | |
---|
8 | 9 | #define APBC_NO_BUS_CTRL BIT(0) |
---|
.. | .. |
---|
16 | 17 | unsigned int den_mask; |
---|
17 | 18 | unsigned int num_shift; |
---|
18 | 19 | unsigned int den_shift; |
---|
| 20 | + unsigned int enable_mask; |
---|
19 | 21 | }; |
---|
20 | 22 | |
---|
21 | 23 | struct mmp_clk_factor_tbl { |
---|
.. | .. |
---|
97 | 99 | extern const struct clk_ops mmp_clk_mix_ops; |
---|
98 | 100 | extern struct clk *mmp_clk_register_mix(struct device *dev, |
---|
99 | 101 | const char *name, |
---|
100 | | - const char **parent_names, |
---|
| 102 | + const char * const *parent_names, |
---|
101 | 103 | u8 num_parents, |
---|
102 | 104 | unsigned long flags, |
---|
103 | 105 | struct mmp_clk_mix_config *config, |
---|
.. | .. |
---|
124 | 126 | u32 val_disable, unsigned int gate_flags, |
---|
125 | 127 | spinlock_t *lock); |
---|
126 | 128 | |
---|
127 | | - |
---|
128 | | -extern struct clk *mmp_clk_register_pll2(const char *name, |
---|
129 | | - const char *parent_name, unsigned long flags); |
---|
130 | 129 | extern struct clk *mmp_clk_register_apbc(const char *name, |
---|
131 | 130 | const char *parent_name, void __iomem *base, |
---|
132 | 131 | unsigned int delay, unsigned int apbc_flags, spinlock_t *lock); |
---|
.. | .. |
---|
196 | 195 | struct mmp_param_mux_clk { |
---|
197 | 196 | unsigned int id; |
---|
198 | 197 | char *name; |
---|
199 | | - const char **parent_name; |
---|
| 198 | + const char * const *parent_name; |
---|
200 | 199 | u8 num_parents; |
---|
201 | 200 | unsigned long flags; |
---|
202 | 201 | unsigned long offset; |
---|
.. | .. |
---|
224 | 223 | struct mmp_param_div_clk *clks, |
---|
225 | 224 | void __iomem *base, int size); |
---|
226 | 225 | |
---|
| 226 | +struct mmp_param_pll_clk { |
---|
| 227 | + unsigned int id; |
---|
| 228 | + char *name; |
---|
| 229 | + unsigned long default_rate; |
---|
| 230 | + unsigned long enable_offset; |
---|
| 231 | + u32 enable; |
---|
| 232 | + unsigned long offset; |
---|
| 233 | + u8 shift; |
---|
| 234 | + /* MMP3 specific: */ |
---|
| 235 | + unsigned long input_rate; |
---|
| 236 | + unsigned long postdiv_offset; |
---|
| 237 | + unsigned long postdiv_shift; |
---|
| 238 | +}; |
---|
| 239 | +void mmp_register_pll_clks(struct mmp_clk_unit *unit, |
---|
| 240 | + struct mmp_param_pll_clk *clks, |
---|
| 241 | + void __iomem *base, int size); |
---|
| 242 | + |
---|
227 | 243 | #define DEFINE_MIX_REG_INFO(w_d, s_d, w_m, s_m, fc) \ |
---|
228 | 244 | { \ |
---|
229 | 245 | .width_div = (w_d), \ |
---|
.. | .. |
---|
237 | 253 | int nr_clks); |
---|
238 | 254 | void mmp_clk_add(struct mmp_clk_unit *unit, unsigned int id, |
---|
239 | 255 | struct clk *clk); |
---|
| 256 | + |
---|
| 257 | +/* Power islands */ |
---|
| 258 | +#define MMP_PM_DOMAIN_NO_DISABLE BIT(0) |
---|
| 259 | + |
---|
| 260 | +struct generic_pm_domain *mmp_pm_domain_register(const char *name, |
---|
| 261 | + void __iomem *reg, |
---|
| 262 | + u32 power_on, u32 reset, u32 clock_enable, |
---|
| 263 | + unsigned int flags, spinlock_t *lock); |
---|
| 264 | + |
---|
240 | 265 | #endif |
---|