Messages in this thread | | | From | Martin Blumenstingl <> | Date | Fri, 2 Jul 2021 11:19:37 +0200 | Subject | Re: [PATCH v3 2/3] clk: divider: Switch from .round_rate to .determine_rate by default |
| |
Hi Stephen,
On Fri, Jul 2, 2021 at 3:02 AM Stephen Boyd <sboyd@kernel.org> wrote: [...] > My guess is that we have drivers copying the clk_ops from the > divider_ops structure and so they are copying over round_rate but not > determine_rate. I just learned something new - thanks for investigating this as well!
$ git grep "clk_divider_ops\.round_rate" drivers/ drivers/clk/bcm/clk-bcm2835.c: return clk_divider_ops.round_rate(hw, rate, parent_rate); drivers/clk/clk-stm32f4.c: return clk_divider_ops.round_rate(hw, rate, prate); drivers/clk/clk-stm32h7.c: return clk_divider_ops.round_rate(hw, rate, prate); drivers/clk/clk-stm32mp1.c: req->rate = clk_divider_ops.round_rate(hw, req->rate, &best_parent_rate); drivers/clk/imx/clk-divider-gate.c: return clk_divider_ops.round_rate(hw, rate, prate); $ git grep "clk_divider_ro_ops\.round_rate" drivers/ $
Changing these over to use clk_divider_ops.determine_rate doesn't seem too hard. The part that I am not sure about is how to organize the patches. 1) amend the changes to all relevant drivers (from above) to this patch 2) multiple patches: - adding .determine_rate to the default divider ops (but not removing .round_rate) - a single patch for each relevant driver (from above) - removing .round_rate from the default divider ops
Another approach is to first create clk_divider_determine_rate() (as done here) and export it. Then I could have one individual patch for each relevant driver (from above) to use: .determine_rate = clk_divider_determine_rate, Then finally I could remove clk_divider_round_rate() and switch over the default divider ops to .determine_rate as well.
Which way do you prefer?
Best regards, Martin
| |