Skip to content

Commit a8173c5

Browse files
Linus Walleijbebarino
authored andcommitted
clk: ux500: Rewrite PRCMU clocks to use clk_hw_*
This rewrites all the u8500 PRCMU clocks and helper functions to handle clocks using struct clk_hw rather than struct clk, as is normal for modern clock drivers. Use clk_hw_register(), of_clk_add_hw_provider() and stack all the clocks into a compile-time dynamic array of struct clk_hw_onecell_data. Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Link: https://lore.kernel.org/r/20220414221751.323525-5-linus.walleij@linaro.org Signed-off-by: Stephen Boyd <sboyd@kernel.org>
1 parent 00d08cd commit a8173c5

3 files changed

Lines changed: 183 additions & 209 deletions

File tree

drivers/clk/ux500/clk-prcmu.c

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -183,16 +183,16 @@ static const struct clk_ops clk_prcmu_opp_volt_scalable_ops = {
183183
.set_rate = clk_prcmu_set_rate,
184184
};
185185

186-
static struct clk *clk_reg_prcmu(const char *name,
187-
const char *parent_name,
188-
u8 cg_sel,
189-
unsigned long rate,
190-
unsigned long flags,
191-
const struct clk_ops *clk_prcmu_ops)
186+
static struct clk_hw *clk_reg_prcmu(const char *name,
187+
const char *parent_name,
188+
u8 cg_sel,
189+
unsigned long rate,
190+
unsigned long flags,
191+
const struct clk_ops *clk_prcmu_ops)
192192
{
193193
struct clk_prcmu *clk;
194194
struct clk_init_data clk_prcmu_init;
195-
struct clk *clk_reg;
195+
int ret;
196196

197197
if (!name) {
198198
pr_err("clk_prcmu: %s invalid arguments passed\n", __func__);
@@ -216,70 +216,70 @@ static struct clk *clk_reg_prcmu(const char *name,
216216
clk_prcmu_init.num_parents = (parent_name ? 1 : 0);
217217
clk->hw.init = &clk_prcmu_init;
218218

219-
clk_reg = clk_register(NULL, &clk->hw);
220-
if (IS_ERR_OR_NULL(clk_reg))
219+
ret = clk_hw_register(NULL, &clk->hw);
220+
if (ret)
221221
goto free_clk;
222222

223-
return clk_reg;
223+
return &clk->hw;
224224

225225
free_clk:
226226
kfree(clk);
227227
pr_err("clk_prcmu: %s failed to register clk\n", __func__);
228228
return ERR_PTR(-ENOMEM);
229229
}
230230

231-
struct clk *clk_reg_prcmu_scalable(const char *name,
232-
const char *parent_name,
233-
u8 cg_sel,
234-
unsigned long rate,
235-
unsigned long flags)
231+
struct clk_hw *clk_reg_prcmu_scalable(const char *name,
232+
const char *parent_name,
233+
u8 cg_sel,
234+
unsigned long rate,
235+
unsigned long flags)
236236
{
237237
return clk_reg_prcmu(name, parent_name, cg_sel, rate, flags,
238238
&clk_prcmu_scalable_ops);
239239
}
240240

241-
struct clk *clk_reg_prcmu_gate(const char *name,
242-
const char *parent_name,
243-
u8 cg_sel,
244-
unsigned long flags)
241+
struct clk_hw *clk_reg_prcmu_gate(const char *name,
242+
const char *parent_name,
243+
u8 cg_sel,
244+
unsigned long flags)
245245
{
246246
return clk_reg_prcmu(name, parent_name, cg_sel, 0, flags,
247247
&clk_prcmu_gate_ops);
248248
}
249249

250-
struct clk *clk_reg_prcmu_scalable_rate(const char *name,
251-
const char *parent_name,
252-
u8 cg_sel,
253-
unsigned long rate,
254-
unsigned long flags)
250+
struct clk_hw *clk_reg_prcmu_scalable_rate(const char *name,
251+
const char *parent_name,
252+
u8 cg_sel,
253+
unsigned long rate,
254+
unsigned long flags)
255255
{
256256
return clk_reg_prcmu(name, parent_name, cg_sel, rate, flags,
257257
&clk_prcmu_scalable_rate_ops);
258258
}
259259

260-
struct clk *clk_reg_prcmu_rate(const char *name,
261-
const char *parent_name,
262-
u8 cg_sel,
263-
unsigned long flags)
260+
struct clk_hw *clk_reg_prcmu_rate(const char *name,
261+
const char *parent_name,
262+
u8 cg_sel,
263+
unsigned long flags)
264264
{
265265
return clk_reg_prcmu(name, parent_name, cg_sel, 0, flags,
266266
&clk_prcmu_rate_ops);
267267
}
268268

269-
struct clk *clk_reg_prcmu_opp_gate(const char *name,
270-
const char *parent_name,
271-
u8 cg_sel,
272-
unsigned long flags)
269+
struct clk_hw *clk_reg_prcmu_opp_gate(const char *name,
270+
const char *parent_name,
271+
u8 cg_sel,
272+
unsigned long flags)
273273
{
274274
return clk_reg_prcmu(name, parent_name, cg_sel, 0, flags,
275275
&clk_prcmu_opp_gate_ops);
276276
}
277277

278-
struct clk *clk_reg_prcmu_opp_volt_scalable(const char *name,
279-
const char *parent_name,
280-
u8 cg_sel,
281-
unsigned long rate,
282-
unsigned long flags)
278+
struct clk_hw *clk_reg_prcmu_opp_volt_scalable(const char *name,
279+
const char *parent_name,
280+
u8 cg_sel,
281+
unsigned long rate,
282+
unsigned long flags)
283283
{
284284
return clk_reg_prcmu(name, parent_name, cg_sel, rate, flags,
285285
&clk_prcmu_opp_volt_scalable_ops);

drivers/clk/ux500/clk.h

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include <linux/types.h>
1414

1515
struct clk;
16+
struct clk_hw;
1617

1718
struct clk *clk_reg_prcc_pclk(const char *name,
1819
const char *parent_name,
@@ -26,38 +27,38 @@ struct clk *clk_reg_prcc_kclk(const char *name,
2627
u32 cg_sel,
2728
unsigned long flags);
2829

29-
struct clk *clk_reg_prcmu_scalable(const char *name,
30-
const char *parent_name,
31-
u8 cg_sel,
32-
unsigned long rate,
33-
unsigned long flags);
30+
struct clk_hw *clk_reg_prcmu_scalable(const char *name,
31+
const char *parent_name,
32+
u8 cg_sel,
33+
unsigned long rate,
34+
unsigned long flags);
3435

35-
struct clk *clk_reg_prcmu_gate(const char *name,
36-
const char *parent_name,
37-
u8 cg_sel,
38-
unsigned long flags);
36+
struct clk_hw *clk_reg_prcmu_gate(const char *name,
37+
const char *parent_name,
38+
u8 cg_sel,
39+
unsigned long flags);
3940

40-
struct clk *clk_reg_prcmu_scalable_rate(const char *name,
41-
const char *parent_name,
42-
u8 cg_sel,
43-
unsigned long rate,
44-
unsigned long flags);
41+
struct clk_hw *clk_reg_prcmu_scalable_rate(const char *name,
42+
const char *parent_name,
43+
u8 cg_sel,
44+
unsigned long rate,
45+
unsigned long flags);
4546

46-
struct clk *clk_reg_prcmu_rate(const char *name,
47-
const char *parent_name,
48-
u8 cg_sel,
49-
unsigned long flags);
47+
struct clk_hw *clk_reg_prcmu_rate(const char *name,
48+
const char *parent_name,
49+
u8 cg_sel,
50+
unsigned long flags);
5051

51-
struct clk *clk_reg_prcmu_opp_gate(const char *name,
52-
const char *parent_name,
53-
u8 cg_sel,
54-
unsigned long flags);
52+
struct clk_hw *clk_reg_prcmu_opp_gate(const char *name,
53+
const char *parent_name,
54+
u8 cg_sel,
55+
unsigned long flags);
5556

56-
struct clk *clk_reg_prcmu_opp_volt_scalable(const char *name,
57-
const char *parent_name,
58-
u8 cg_sel,
59-
unsigned long rate,
60-
unsigned long flags);
57+
struct clk_hw *clk_reg_prcmu_opp_volt_scalable(const char *name,
58+
const char *parent_name,
59+
u8 cg_sel,
60+
unsigned long rate,
61+
unsigned long flags);
6162

6263
struct clk *clk_reg_sysctrl_gate(struct device *dev,
6364
const char *name,

0 commit comments

Comments
 (0)