Hi Laurent,>+ return -EINVAL;Do you really need the clk_in_isc DT node ? I would have assumed that the
>+
>+ parent_names = kcalloc(num_parents, sizeof(char *), GFP_KERNEL);
>+ if (!parent_names)
>+ return -ENOMEM;
>+
>+ of_clk_parent_fill(np, parent_names, num_parents);
>+
>+ init.parent_names = parent_names;
>+ init.num_parents = num_parents;
>+ init.name = clk_name;
>+ init.ops = &isc_clk_ops;
>+ init.flags = CLK_SET_RATE_GATE | CLK_SET_PARENT_GATE;
>+
>+ isc_clk = &isc->isc_clks[id];
>+ isc_clk->hw.init = &init;
>+ isc_clk->regmap = regmap;
>+ isc_clk->lock = lock;
>+ isc_clk->id = id;
>+
>+ isc_clk->clk = clk_register(NULL, &isc_clk->hw);
>+ if (!IS_ERR(isc_clk->clk))
>+ of_clk_add_provider(np, of_clk_src_simple_get, isc_clk->clk);
>+ else {
>+ dev_err(isc->dev, "%s: clock register fail\n", clk_name);
>+ ret = PTR_ERR(isc_clk->clk);
>+ goto free_parent_names;
>+ }
>+
>+free_parent_names:
>+ kfree(parent_names);
>+ return ret;
>+}
>+
>+static int isc_clk_init(struct isc_device *isc)
>+{
>+ struct device_node *np = of_get_child_by_name(isc->dev->of_node,
>+ "clk_in_isc");
clock topology inside the ISC is fixed, and that it would be enough to just
specify the three parent clocks in the ISC DT node and create the two internal
clocks in the driver without needing a DT description.