[PATCH v3 3/7] clk: sunxi-ng: Implement multiplier maximum

Maxime Ripard maxime.ripard at free-electrons.com
Sat Jan 21 14:13:09 PST 2017


On Sat, Jan 21, 2017 at 09:27:42AM +0800, Chen-Yu Tsai wrote:
> On Fri, Jan 20, 2017 at 3:29 PM, Maxime Ripard
> <maxime.ripard at free-electrons.com> wrote:
> > Signed-off-by: Maxime Ripard <maxime.ripard at free-electrons.com>
> > ---
> >  drivers/clk/sunxi-ng/ccu_mult.c | 16 +++++++++++++---
> >  drivers/clk/sunxi-ng/ccu_mult.h | 10 ++++++----
> >  drivers/clk/sunxi-ng/ccu_nk.c   |  8 ++++----
> >  drivers/clk/sunxi-ng/ccu_nkm.c  |  8 ++++----
> >  drivers/clk/sunxi-ng/ccu_nkmp.c |  8 ++++----
> >  drivers/clk/sunxi-ng/ccu_nm.c   |  4 ++--
> >  6 files changed, 33 insertions(+), 21 deletions(-)
> >
> > diff --git a/drivers/clk/sunxi-ng/ccu_mult.c b/drivers/clk/sunxi-ng/ccu_mult.c
> > index 8b7ee7baa85b..8724c01171b1 100644
> > --- a/drivers/clk/sunxi-ng/ccu_mult.c
> > +++ b/drivers/clk/sunxi-ng/ccu_mult.c
> > @@ -40,8 +40,13 @@ static unsigned long ccu_mult_round_rate(struct ccu_mux_internal *mux,
> >         struct ccu_mult *cm = data;
> >         struct _ccu_mult _cm;
> >
> > -       _cm.min = 1;
> > -       _cm.max = 1 << cm->mult.width;
> > +       _cm.min = cm->mult.min;
> 
> This particular line should probably be in a separate patch fixing
> commit 2beaa601c849 ("clk: sunxi-ng: Implement minimum for multipliers")?
> It kind of sticks out, and doesn't match the commit message.

Indeed (also because there's no commit message, I'll fix that.)

> > +
> > +       if (cm->mult.max)
> > +               _cm.max = cm->mult.max;
> > +       else
> > +               _cm.max = (1 << cm->mult.width) + cm->mult.offset - 1;
> > +
> >         ccu_mult_find_best(parent_rate, rate, &_cm);
> >
> >         return parent_rate * _cm.mult;
> > @@ -114,7 +119,12 @@ static int ccu_mult_set_rate(struct clk_hw *hw, unsigned long rate,
> >                                                 &parent_rate);
> >
> >         _cm.min = cm->mult.min;
> > -       _cm.max = 1 << cm->mult.width;
> > +
> > +       if (cm->mult.max)
> > +               _cm.max = cm->mult.max;
> > +       else
> > +               _cm.max = (1 << cm->mult.width) + cm->mult.offset - 1;
> 
> The changes look good. Thinking about this more, you might need to
> adjust the default minimum to account for the offset as well? At
> the moment it doesn't really affect us, as the offset is either
> 1 or 0, which means a minimum of 1 is equally good. But leaving
> a potential error in there doesn't feel right.

I'm not sure we should really care, I'm not aware of any SoC that
would have such a clock, either in the "old" or "new" ones. I'm not
sure we should fix that isn't broken.

> Said change would be against patch 2, so
> 
> Acked-by: Chen-Yu Tsai <wens at csie.org>
> 
> for this patch once the first comment is addressed.

I'll do that change and respin the serie, thanks!
Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20170121/d293a654/attachment.sig>


More information about the linux-arm-kernel mailing list