All of lore.kernel.org
 help / color / mirror / Atom feed
From: Robert Hancock <robert.hancock@calian.com>
To: "sboyd@kernel.org" <sboyd@kernel.org>,
	"dev_public@wujek.eu" <dev_public@wujek.eu>,
	"mturquette@baylibre.com" <mturquette@baylibre.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-clk@vger.kernel.org" <linux-clk@vger.kernel.org>
Subject: Re: [PATCH] clk: si5341: fix reported clk_rate when output divider is 2
Date: Thu, 13 Jan 2022 22:29:41 +0000	[thread overview]
Message-ID: <d36fbe1176fd6182bd65c9a995fbf4614a112597.camel@calian.com> (raw)
In-Reply-To: <20220113212312.19D85C36AE3@smtp.kernel.org>

On Thu, 2022-01-13 at 13:23 -0800, Stephen Boyd wrote:
> +Robert
> 
> Please review
> 
> Quoting Adam Wujek (2021-12-03 06:12:07)
> > SI5341_OUT_CFG_RDIV_FORCE2 shall be checked first to distinguish whether
> > a divider for a given output is set to 2 (SI5341_OUT_CFG_RDIV_FORCE2
> > is set) or the output is disabled (SI5341_OUT_CFG_RDIV_FORCE2 not set,
> > SI5341_OUT_R_REG is set 0).
> > Before the change, divider set to 2 (SI5341_OUT_R_REG set to 0) was
> > interpreted as output is disabled.
> > 
> > Signed-off-by: Adam Wujek <dev_public@wujek.eu>
> > ---
> >  drivers/clk/clk-si5341.c | 16 +++++++++-------
> >  1 file changed, 9 insertions(+), 7 deletions(-)
> > 
> > diff --git a/drivers/clk/clk-si5341.c b/drivers/clk/clk-si5341.c
> > index b7641abe6747..15b1c90cafe5 100644
> > --- a/drivers/clk/clk-si5341.c
> > +++ b/drivers/clk/clk-si5341.c
> > @@ -798,6 +798,15 @@ static unsigned long
> > si5341_output_clk_recalc_rate(struct clk_hw *hw,
> >         u32 r_divider;
> >         u8 r[3];
> > 
> > +       err = regmap_read(output->data->regmap,
> > +                       SI5341_OUT_CONFIG(output), &val);
> > +       if (err < 0)
> > +               return err;
> > +
> > +       /* If SI5341_OUT_CFG_RDIV_FORCE2 is set, r_divider is 2 */
> > +       if (val & SI5341_OUT_CFG_RDIV_FORCE2)
> > +               return parent_rate / 2;
> > +
> >         err = regmap_bulk_read(output->data->regmap,
> >                         SI5341_OUT_R_REG(output), r, 3);
> >         if (err < 0)
> > @@ -814,13 +823,6 @@ static unsigned long
> > si5341_output_clk_recalc_rate(struct clk_hw *hw,
> >         r_divider += 1;
> >         r_divider <<= 1;
> > 
> > -       err = regmap_read(output->data->regmap,
> > -                       SI5341_OUT_CONFIG(output), &val);
> > -       if (err < 0)
> > -               return err;
> > -
> > -       if (val & SI5341_OUT_CFG_RDIV_FORCE2)
> > -               r_divider = 2;
> > 
> >         return parent_rate / r_divider;
> >  }

Looks reasonable to me. I guess this bug doesn't affect register settings that
were previously applied by this driver, as it always sets the RDIV to 1 when
setting the FORCE2 flag, but if the chip has power-up NVM configuration
generated by ClockBuilder etc. then this problem could show up.

Reviewed-by: Robert Hancock <robert.hancock@calian.com>

-- 
Robert Hancock
Senior Hardware Designer, Calian Advanced Technologies
www.calian.com

  reply	other threads:[~2022-01-13 22:29 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-03 14:12 [PATCH] clk: si5341: fix reported clk_rate when output divider is 2 Adam Wujek
2022-01-13 21:23 ` Stephen Boyd
2022-01-13 22:29   ` Robert Hancock [this message]
2022-01-25  0:51 ` Stephen Boyd

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d36fbe1176fd6182bd65c9a995fbf4614a112597.camel@calian.com \
    --to=robert.hancock@calian.com \
    --cc=dev_public@wujek.eu \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mturquette@baylibre.com \
    --cc=sboyd@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.