forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-10 61598093bbdd283a7edc367d900f223070ead8d2
kernel/drivers/clk/ti/dpll.c
....@@ -39,6 +39,8 @@
3939 .set_rate_and_parent = &omap3_noncore_dpll_set_rate_and_parent,
4040 .determine_rate = &omap4_dpll_regm4xen_determine_rate,
4141 .get_parent = &omap2_init_dpll_parent,
42
+ .save_context = &omap3_core_dpll_save_context,
43
+ .restore_context = &omap3_core_dpll_restore_context,
4244 };
4345 #else
4446 static const struct clk_ops dpll_m4xen_ck_ops = {};
....@@ -62,6 +64,8 @@
6264 .set_rate_and_parent = &omap3_noncore_dpll_set_rate_and_parent,
6365 .determine_rate = &omap3_noncore_dpll_determine_rate,
6466 .get_parent = &omap2_init_dpll_parent,
67
+ .save_context = &omap3_noncore_dpll_save_context,
68
+ .restore_context = &omap3_noncore_dpll_restore_context,
6569 };
6670
6771 static const struct clk_ops dpll_no_gate_ck_ops = {
....@@ -72,6 +76,8 @@
7276 .set_parent = &omap3_noncore_dpll_set_parent,
7377 .set_rate_and_parent = &omap3_noncore_dpll_set_rate_and_parent,
7478 .determine_rate = &omap3_noncore_dpll_determine_rate,
79
+ .save_context = &omap3_noncore_dpll_save_context,
80
+ .restore_context = &omap3_noncore_dpll_restore_context
7581 };
7682 #else
7783 static const struct clk_ops dpll_core_ck_ops = {};
....@@ -159,11 +165,12 @@
159165 struct clk_hw_omap *clk_hw = to_clk_hw_omap(hw);
160166 struct dpll_data *dd = clk_hw->dpll_data;
161167 struct clk *clk;
168
+ const struct clk_init_data *init = hw->init;
162169
163170 clk = of_clk_get(node, 0);
164171 if (IS_ERR(clk)) {
165
- pr_debug("clk-ref missing for %s, retry later\n",
166
- node->name);
172
+ pr_debug("clk-ref missing for %pOFn, retry later\n",
173
+ node);
167174 if (!ti_clk_retry_init(node, hw, _register_dpll))
168175 return;
169176
....@@ -175,8 +182,8 @@
175182 clk = of_clk_get(node, 1);
176183
177184 if (IS_ERR(clk)) {
178
- pr_debug("clk-bypass missing for %s, retry later\n",
179
- node->name);
185
+ pr_debug("clk-bypass missing for %pOFn, retry later\n",
186
+ node);
180187 if (!ti_clk_retry_init(node, hw, _register_dpll))
181188 return;
182189
....@@ -186,20 +193,19 @@
186193 dd->clk_bypass = __clk_get_hw(clk);
187194
188195 /* register the clock */
189
- clk = ti_clk_register(NULL, &clk_hw->hw, node->name);
196
+ clk = ti_clk_register_omap_hw(NULL, &clk_hw->hw, node->name);
190197
191198 if (!IS_ERR(clk)) {
192
- omap2_init_clk_hw_omap_clocks(&clk_hw->hw);
193199 of_clk_add_provider(node, of_clk_src_simple_get, clk);
194
- kfree(clk_hw->hw.init->parent_names);
195
- kfree(clk_hw->hw.init);
200
+ kfree(init->parent_names);
201
+ kfree(init);
196202 return;
197203 }
198204
199205 cleanup:
200206 kfree(clk_hw->dpll_data);
201
- kfree(clk_hw->hw.init->parent_names);
202
- kfree(clk_hw->hw.init);
207
+ kfree(init->parent_names);
208
+ kfree(init);
203209 kfree(clk_hw);
204210 }
205211
....@@ -226,7 +232,7 @@
226232
227233 parent_name = of_clk_get_parent_name(node, 0);
228234 if (!parent_name) {
229
- pr_err("%s must have parent\n", node->name);
235
+ pr_err("%pOFn must have parent\n", node);
230236 return;
231237 }
232238
....@@ -259,14 +265,12 @@
259265 #endif
260266
261267 /* register the clock */
262
- clk = ti_clk_register(NULL, &clk_hw->hw, name);
268
+ clk = ti_clk_register_omap_hw(NULL, &clk_hw->hw, name);
263269
264
- if (IS_ERR(clk)) {
270
+ if (IS_ERR(clk))
265271 kfree(clk_hw);
266
- } else {
267
- omap2_init_clk_hw_omap_clocks(&clk_hw->hw);
272
+ else
268273 of_clk_add_provider(node, of_clk_src_simple_get, clk);
269
- }
270274 }
271275 #endif
272276
....@@ -288,13 +292,11 @@
288292 struct dpll_data *dd = NULL;
289293 u8 dpll_mode = 0;
290294
291
- dd = kzalloc(sizeof(*dd), GFP_KERNEL);
295
+ dd = kmemdup(ddt, sizeof(*dd), GFP_KERNEL);
292296 clk_hw = kzalloc(sizeof(*clk_hw), GFP_KERNEL);
293297 init = kzalloc(sizeof(*init), GFP_KERNEL);
294298 if (!dd || !clk_hw || !init)
295299 goto cleanup;
296
-
297
- memcpy(dd, ddt, sizeof(*dd));
298300
299301 clk_hw->dpll_data = dd;
300302 clk_hw->ops = &clkhwops_omap3_dpll;
....@@ -305,7 +307,7 @@
305307
306308 init->num_parents = of_clk_get_parent_count(node);
307309 if (!init->num_parents) {
308
- pr_err("%s must have parent(s)\n", node->name);
310
+ pr_err("%pOFn must have parent(s)\n", node);
309311 goto cleanup;
310312 }
311313
....@@ -404,7 +406,7 @@
404406
405407 if ((of_machine_is_compatible("ti,omap3630") ||
406408 of_machine_is_compatible("ti,omap36xx")) &&
407
- !strcmp(node->name, "dpll5_ck"))
409
+ of_node_name_eq(node, "dpll5_ck"))
408410 of_ti_dpll_setup(node, &omap3_dpll5_ck_ops, &dd);
409411 else
410412 of_ti_dpll_setup(node, &omap3_dpll_ck_ops, &dd);