"sclk_mac_lbtest",
};
-static struct rockchip_clk_provider *__init rk3188_common_clk_init(struct device_node *np)
+static struct rockchip_clk_provider *__init rk3188_common_clk_init(struct device_node *np,
+ unsigned long soc_nr_clks)
{
struct rockchip_clk_provider *ctx;
+ unsigned long common_nr_clks;
void __iomem *reg_base;
reg_base = of_iomap(np, 0);
return ERR_PTR(-ENOMEM);
}
- ctx = rockchip_clk_init(np, reg_base, CLK_NR_CLKS);
+ common_nr_clks = rockchip_clk_find_max_clk_id(common_clk_branches,
+ ARRAY_SIZE(common_clk_branches)) + 1;
+ ctx = rockchip_clk_init(np, reg_base, max(common_nr_clks, soc_nr_clks));
if (IS_ERR(ctx)) {
pr_err("%s: rockchip clk init failed\n", __func__);
iounmap(reg_base);
static void __init rk3066a_clk_init(struct device_node *np)
{
struct rockchip_clk_provider *ctx;
+ unsigned long soc_nr_clks;
- ctx = rk3188_common_clk_init(np);
+ soc_nr_clks = rockchip_clk_find_max_clk_id(rk3066a_clk_branches,
+ ARRAY_SIZE(rk3066a_clk_branches)) + 1;
+ ctx = rk3188_common_clk_init(np, soc_nr_clks);
if (IS_ERR(ctx))
return;
static void __init rk3188a_clk_init(struct device_node *np)
{
struct rockchip_clk_provider *ctx;
+ unsigned long soc_nr_clks;
struct clk *clk1, *clk2;
unsigned long rate;
int ret;
- ctx = rk3188_common_clk_init(np);
+ soc_nr_clks = rockchip_clk_find_max_clk_id(rk3188_clk_branches,
+ ARRAY_SIZE(rk3188_clk_branches)) + 1;
+ ctx = rk3188_common_clk_init(np, soc_nr_clks);
if (IS_ERR(ctx))
return;