Message ID | 20201116075532.4019252-3-m.tretter@pengutronix.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | soc: xilinx: vcu: Convert driver to clock provider | expand |
Hi Stephen, On 16. 11. 20 8:55, Michael Tretter wrote: > If a driver registers a divider clock with a parent_hw instead of the > parent_name, the parent_hw is ignored and the clock does not have a > parent. > > Fix this by initializing the parents the same way they are initialized > for clock gates. > > Signed-off-by: Michael Tretter <m.tretter@pengutronix.de> > --- > drivers/clk/clk-divider.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/drivers/clk/clk-divider.c b/drivers/clk/clk-divider.c > index 8de12cb0c43d..f32157cb4013 100644 > --- a/drivers/clk/clk-divider.c > +++ b/drivers/clk/clk-divider.c > @@ -493,8 +493,13 @@ struct clk_hw *__clk_hw_register_divider(struct device *dev, > else > init.ops = &clk_divider_ops; > init.flags = flags; > - init.parent_names = (parent_name ? &parent_name: NULL); > - init.num_parents = (parent_name ? 1 : 0); > + init.parent_names = parent_name ? &parent_name : NULL; > + init.parent_hws = parent_hw ? &parent_hw : NULL; > + init.parent_data = parent_data; > + if (parent_name || parent_hw || parent_data) > + init.num_parents = 1; > + else > + init.num_parents = 0; > > /* struct clk_divider assignments */ > div->reg = reg; > Can you please review this patch? Thanks, Michal
Quoting Michael Tretter (2020-11-15 23:55:22) > If a driver registers a divider clock with a parent_hw instead of the > parent_name, the parent_hw is ignored and the clock does not have a > parent. > > Fix this by initializing the parents the same way they are initialized > for clock gates. > > Signed-off-by: Michael Tretter <m.tretter@pengutronix.de> Any fixes tag? with the proper fixes tag Reviewed-by: Stephen Boyd <sboyd@kernel.org>
diff --git a/drivers/clk/clk-divider.c b/drivers/clk/clk-divider.c index 8de12cb0c43d..f32157cb4013 100644 --- a/drivers/clk/clk-divider.c +++ b/drivers/clk/clk-divider.c @@ -493,8 +493,13 @@ struct clk_hw *__clk_hw_register_divider(struct device *dev, else init.ops = &clk_divider_ops; init.flags = flags; - init.parent_names = (parent_name ? &parent_name: NULL); - init.num_parents = (parent_name ? 1 : 0); + init.parent_names = parent_name ? &parent_name : NULL; + init.parent_hws = parent_hw ? &parent_hw : NULL; + init.parent_data = parent_data; + if (parent_name || parent_hw || parent_data) + init.num_parents = 1; + else + init.num_parents = 0; /* struct clk_divider assignments */ div->reg = reg;
If a driver registers a divider clock with a parent_hw instead of the parent_name, the parent_hw is ignored and the clock does not have a parent. Fix this by initializing the parents the same way they are initialized for clock gates. Signed-off-by: Michael Tretter <m.tretter@pengutronix.de> --- drivers/clk/clk-divider.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)