Messages in this thread | | | Subject | Re: [PATCH v3 2/3] clk: divider: Switch from .round_rate to .determine_rate by default | From | Stephen Boyd <> | Date | Fri, 02 Jul 2021 13:59:10 -0700 |
| |
Quoting Martin Blumenstingl (2021-07-02 02:19:37) > 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? >
I'd prefer we leave round_rate assigned in clk_divider_ops and clk_divider_ro_ops but then also assign the determine_rate function. We have some duplication but that's OK. Then make individual patches to migrate each driver over to the new clk op.
We could stack a final patch on top to remove the round_rate function from clk divider. Unfortunately, if some driver wants to use round_rate then it will fail in interesting ways. Probably best to live with it until we decide to drop round_rate entirely. Patches to convert all the round_rate code over to determine_rate would be welcome in the meantime.
| |