Skip to content

Commit bf32e7d

Browse files
Sylwester Nawrockibebarino
authored andcommitted
clk: samsung: Change signature of exynos5_subcmus_init() function
In order to make it easier in subsequent patch to create different subcmu lists for exynos5420 and exynos5800 SoCs the code is rewritten so we pass an array of pointers to the subcmus initialization function. Fixes: b06a532 ("clk: samsung: Add Exynos5 sub-CMU clock driver") Tested-by: Jaafar Ali <[email protected]> Signed-off-by: Sylwester Nawrocki <[email protected]> Link: https://lkml.kernel.org/r/[email protected] Reviewed-by: Marek Szyprowski <[email protected]> Signed-off-by: Stephen Boyd <[email protected]>
1 parent e1f1ae8 commit bf32e7d

File tree

4 files changed

+49
-36
lines changed

4 files changed

+49
-36
lines changed

drivers/clk/samsung/clk-exynos5-subcmu.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
#include "clk-exynos5-subcmu.h"
1515

1616
static struct samsung_clk_provider *ctx;
17-
static const struct exynos5_subcmu_info *cmu;
17+
static const struct exynos5_subcmu_info **cmu;
1818
static int nr_cmus;
1919

2020
static void exynos5_subcmu_clk_save(void __iomem *base,
@@ -56,17 +56,17 @@ static void exynos5_subcmu_defer_gate(struct samsung_clk_provider *ctx,
5656
* when OF-core populates all device-tree nodes.
5757
*/
5858
void exynos5_subcmus_init(struct samsung_clk_provider *_ctx, int _nr_cmus,
59-
const struct exynos5_subcmu_info *_cmu)
59+
const struct exynos5_subcmu_info **_cmu)
6060
{
6161
ctx = _ctx;
6262
cmu = _cmu;
6363
nr_cmus = _nr_cmus;
6464

6565
for (; _nr_cmus--; _cmu++) {
66-
exynos5_subcmu_defer_gate(ctx, _cmu->gate_clks,
67-
_cmu->nr_gate_clks);
68-
exynos5_subcmu_clk_save(ctx->reg_base, _cmu->suspend_regs,
69-
_cmu->nr_suspend_regs);
66+
exynos5_subcmu_defer_gate(ctx, (*_cmu)->gate_clks,
67+
(*_cmu)->nr_gate_clks);
68+
exynos5_subcmu_clk_save(ctx->reg_base, (*_cmu)->suspend_regs,
69+
(*_cmu)->nr_suspend_regs);
7070
}
7171
}
7272

@@ -163,9 +163,9 @@ static int __init exynos5_clk_probe(struct platform_device *pdev)
163163
if (of_property_read_string(np, "label", &name) < 0)
164164
continue;
165165
for (i = 0; i < nr_cmus; i++)
166-
if (strcmp(cmu[i].pd_name, name) == 0)
166+
if (strcmp(cmu[i]->pd_name, name) == 0)
167167
exynos5_clk_register_subcmu(&pdev->dev,
168-
&cmu[i], np);
168+
cmu[i], np);
169169
}
170170
return 0;
171171
}

drivers/clk/samsung/clk-exynos5-subcmu.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,6 @@ struct exynos5_subcmu_info {
2121
};
2222

2323
void exynos5_subcmus_init(struct samsung_clk_provider *ctx, int nr_cmus,
24-
const struct exynos5_subcmu_info *cmu);
24+
const struct exynos5_subcmu_info **cmu);
2525

2626
#endif

drivers/clk/samsung/clk-exynos5250.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -681,6 +681,10 @@ static const struct exynos5_subcmu_info exynos5250_disp_subcmu = {
681681
.pd_name = "DISP1",
682682
};
683683

684+
static const struct exynos5_subcmu_info *exynos5250_subcmus[] = {
685+
&exynos5250_disp_subcmu,
686+
};
687+
684688
static const struct samsung_pll_rate_table vpll_24mhz_tbl[] __initconst = {
685689
/* sorted in descending order */
686690
/* PLL_36XX_RATE(rate, m, p, s, k) */
@@ -843,7 +847,8 @@ static void __init exynos5250_clk_init(struct device_node *np)
843847

844848
samsung_clk_sleep_init(reg_base, exynos5250_clk_regs,
845849
ARRAY_SIZE(exynos5250_clk_regs));
846-
exynos5_subcmus_init(ctx, 1, &exynos5250_disp_subcmu);
850+
exynos5_subcmus_init(ctx, ARRAY_SIZE(exynos5250_subcmus),
851+
exynos5250_subcmus);
847852

848853
samsung_clk_of_add_provider(np, ctx);
849854

drivers/clk/samsung/clk-exynos5420.c

Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1281,32 +1281,40 @@ static struct exynos5_subcmu_reg_dump exynos5x_mfc_suspend_regs[] = {
12811281
{ DIV4_RATIO, 0, 0x3 }, /* DIV dout_mfc_blk */
12821282
};
12831283

1284-
static const struct exynos5_subcmu_info exynos5x_subcmus[] = {
1285-
{
1286-
.div_clks = exynos5x_disp_div_clks,
1287-
.nr_div_clks = ARRAY_SIZE(exynos5x_disp_div_clks),
1288-
.gate_clks = exynos5x_disp_gate_clks,
1289-
.nr_gate_clks = ARRAY_SIZE(exynos5x_disp_gate_clks),
1290-
.suspend_regs = exynos5x_disp_suspend_regs,
1291-
.nr_suspend_regs = ARRAY_SIZE(exynos5x_disp_suspend_regs),
1292-
.pd_name = "DISP",
1293-
}, {
1294-
.div_clks = exynos5x_gsc_div_clks,
1295-
.nr_div_clks = ARRAY_SIZE(exynos5x_gsc_div_clks),
1296-
.gate_clks = exynos5x_gsc_gate_clks,
1297-
.nr_gate_clks = ARRAY_SIZE(exynos5x_gsc_gate_clks),
1298-
.suspend_regs = exynos5x_gsc_suspend_regs,
1299-
.nr_suspend_regs = ARRAY_SIZE(exynos5x_gsc_suspend_regs),
1300-
.pd_name = "GSC",
1301-
}, {
1302-
.div_clks = exynos5x_mfc_div_clks,
1303-
.nr_div_clks = ARRAY_SIZE(exynos5x_mfc_div_clks),
1304-
.gate_clks = exynos5x_mfc_gate_clks,
1305-
.nr_gate_clks = ARRAY_SIZE(exynos5x_mfc_gate_clks),
1306-
.suspend_regs = exynos5x_mfc_suspend_regs,
1307-
.nr_suspend_regs = ARRAY_SIZE(exynos5x_mfc_suspend_regs),
1308-
.pd_name = "MFC",
1309-
},
1284+
static const struct exynos5_subcmu_info exynos5x_disp_subcmu = {
1285+
.div_clks = exynos5x_disp_div_clks,
1286+
.nr_div_clks = ARRAY_SIZE(exynos5x_disp_div_clks),
1287+
.gate_clks = exynos5x_disp_gate_clks,
1288+
.nr_gate_clks = ARRAY_SIZE(exynos5x_disp_gate_clks),
1289+
.suspend_regs = exynos5x_disp_suspend_regs,
1290+
.nr_suspend_regs = ARRAY_SIZE(exynos5x_disp_suspend_regs),
1291+
.pd_name = "DISP",
1292+
};
1293+
1294+
static const struct exynos5_subcmu_info exynos5x_gsc_subcmu = {
1295+
.div_clks = exynos5x_gsc_div_clks,
1296+
.nr_div_clks = ARRAY_SIZE(exynos5x_gsc_div_clks),
1297+
.gate_clks = exynos5x_gsc_gate_clks,
1298+
.nr_gate_clks = ARRAY_SIZE(exynos5x_gsc_gate_clks),
1299+
.suspend_regs = exynos5x_gsc_suspend_regs,
1300+
.nr_suspend_regs = ARRAY_SIZE(exynos5x_gsc_suspend_regs),
1301+
.pd_name = "GSC",
1302+
};
1303+
1304+
static const struct exynos5_subcmu_info exynos5x_mfc_subcmu = {
1305+
.div_clks = exynos5x_mfc_div_clks,
1306+
.nr_div_clks = ARRAY_SIZE(exynos5x_mfc_div_clks),
1307+
.gate_clks = exynos5x_mfc_gate_clks,
1308+
.nr_gate_clks = ARRAY_SIZE(exynos5x_mfc_gate_clks),
1309+
.suspend_regs = exynos5x_mfc_suspend_regs,
1310+
.nr_suspend_regs = ARRAY_SIZE(exynos5x_mfc_suspend_regs),
1311+
.pd_name = "MFC",
1312+
};
1313+
1314+
static const struct exynos5_subcmu_info *exynos5x_subcmus[] = {
1315+
&exynos5x_disp_subcmu,
1316+
&exynos5x_gsc_subcmu,
1317+
&exynos5x_mfc_subcmu,
13101318
};
13111319

13121320
static const struct samsung_pll_rate_table exynos5420_pll2550x_24mhz_tbl[] __initconst = {

0 commit comments

Comments
 (0)