forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-10 37f49e37ab4cb5d0bc4c60eb5c6d4dd57db767bb
kernel/drivers/clk/mmp/clk.h
....@@ -3,6 +3,7 @@
33 #define __MACH_MMP_CLK_H
44
55 #include <linux/clk-provider.h>
6
+#include <linux/pm_domain.h>
67 #include <linux/clkdev.h>
78
89 #define APBC_NO_BUS_CTRL BIT(0)
....@@ -16,6 +17,7 @@
1617 unsigned int den_mask;
1718 unsigned int num_shift;
1819 unsigned int den_shift;
20
+ unsigned int enable_mask;
1921 };
2022
2123 struct mmp_clk_factor_tbl {
....@@ -97,7 +99,7 @@
9799 extern const struct clk_ops mmp_clk_mix_ops;
98100 extern struct clk *mmp_clk_register_mix(struct device *dev,
99101 const char *name,
100
- const char **parent_names,
102
+ const char * const *parent_names,
101103 u8 num_parents,
102104 unsigned long flags,
103105 struct mmp_clk_mix_config *config,
....@@ -124,9 +126,6 @@
124126 u32 val_disable, unsigned int gate_flags,
125127 spinlock_t *lock);
126128
127
-
128
-extern struct clk *mmp_clk_register_pll2(const char *name,
129
- const char *parent_name, unsigned long flags);
130129 extern struct clk *mmp_clk_register_apbc(const char *name,
131130 const char *parent_name, void __iomem *base,
132131 unsigned int delay, unsigned int apbc_flags, spinlock_t *lock);
....@@ -196,7 +195,7 @@
196195 struct mmp_param_mux_clk {
197196 unsigned int id;
198197 char *name;
199
- const char **parent_name;
198
+ const char * const *parent_name;
200199 u8 num_parents;
201200 unsigned long flags;
202201 unsigned long offset;
....@@ -224,6 +223,23 @@
224223 struct mmp_param_div_clk *clks,
225224 void __iomem *base, int size);
226225
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
+
227243 #define DEFINE_MIX_REG_INFO(w_d, s_d, w_m, s_m, fc) \
228244 { \
229245 .width_div = (w_d), \
....@@ -237,4 +253,13 @@
237253 int nr_clks);
238254 void mmp_clk_add(struct mmp_clk_unit *unit, unsigned int id,
239255 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
+
240265 #endif