From: "Heiko Stübner" <heiko@sntech.de>
To: Sylwester Nawrocki <s.nawrocki@samsung.com>
Cc: Kukjin Kim <kgene.kim@samsung.com>,
mturquette@linaro.org, linux-arm-kernel@lists.infradead.org,
linux-samsung-soc@vger.kernel.org,
Thomas Abraham <thomas.abraham@linaro.org>,
Sylwester Nawrocki <sylvester.nawrocki@gmail.com>,
t.figa@samsung.com
Subject: Re: [PATCH 1/7] clk: samsung: add plls used in s3c2416 and s3c2443
Date: Tue, 12 Mar 2013 13:21:34 +0100 [thread overview]
Message-ID: <201303121321.34338.heiko@sntech.de> (raw)
In-Reply-To: <513F1B42.7000201@samsung.com>
Am Dienstag, 12. März 2013, 13:10:42 schrieb Sylwester Nawrocki:
> Hi,
>
> On 03/12/2013 01:42 AM, Heiko Stübner wrote:
> > This adds support for pll2126x, pll3000x, pll6552x and pll6553x.
> >
> > Signed-off-by: Heiko Stuebner <heiko@sntech.de>
> > ---
> >
> > drivers/clk/samsung/clk-pll.c | 376
> > +++++++++++++++++++++++++++++++++++++++++ drivers/clk/samsung/clk-pll.h
> > | 8 +
> > 2 files changed, 384 insertions(+), 0 deletions(-)
> >
> > diff --git a/drivers/clk/samsung/clk-pll.c
> > b/drivers/clk/samsung/clk-pll.c index 4b24511..b772f9e 100644
> > --- a/drivers/clk/samsung/clk-pll.c
> > +++ b/drivers/clk/samsung/clk-pll.c
> > @@ -400,6 +400,97 @@ struct clk * __init
> > samsung_clk_register_pll46xx(const char *name,
>
> ...
>
> > +struct samsung_clk_pll2126x {
> > + struct clk_hw hw;
> > + const void __iomem *con_reg;
> > +};
> > +
> > +#define to_clk_pll2126x(_hw) container_of(_hw, struct
> > samsung_clk_pll2126x, hw) +
> > +static unsigned long samsung_pll2126x_recalc_rate(struct clk_hw *hw,
> > + unsigned long parent_rate)
> > +{
> > + struct samsung_clk_pll2126x *pll = to_clk_pll2126x(hw);
> > + u32 pll_con, mdiv, pdiv, sdiv;
> > + u64 fvco = parent_rate;
> > +
> > + pll_con = __raw_readl(pll->con_reg);
> > + mdiv = (pll_con >> PLL2126X_MDIV_SHIFT) & PLL2126X_MDIV_MASK;
> > + pdiv = (pll_con >> PLL2126X_PDIV_SHIFT) & PLL2126X_PDIV_MASK;
> > + sdiv = (pll_con >> PLL2126X_SDIV_SHIFT) & PLL2126X_SDIV_MASK;
> > +
> > + fvco *= (mdiv + 8);
> > + do_div(fvco, (pdiv + 2) << sdiv);
> > +
> > + return (unsigned long)fvco;
> > +}
> > +
> > +/* todo: implement pll2126x clock round rate operation */
> > +static long samsung_pll2126x_round_rate(struct clk_hw *hw,
> > + unsigned long drate, unsigned long *prate)
> > +{
> > + return -ENOTSUPP;
> > +}
>
> If you look at __clk_round_rate() in drivers/clk/clk.c it calls
> clk->ops->round_rate() recursively on the parent clock if
> CLK_SET_RATE_PARENT flag is set. But if the clock provides round_rate
> operation __clk_round_rate() will use it and will cast -ENOTSUPP
> you return above to unsigned long. Unless you want to loose some hair
> later and waste time on debugging I suggest to either remove all these
> callbacks that return -ENOSUPP or implement them properly right away.
Thanks for the hint ... this is what I rightfully get for mindlessly copying
from the other plls in the file;-) .
What about the other plls in the pll-file, they should be affected in the same
way, right?
> I'm just wondering why __clk_round_rate() return value type is unsigned
> long despite the struct clk_ops round_rate return long, which might
> indicate the negative values round_rate might callback are properly
> handled by the clk core code.
>
> Somewhat similar situation is with clk_mux_get_parent() in clk-mux.c
> which can return -EINVAL which is then casted to u8.
>
> I still have sending a patch for clk_mux_get_parent() on my todo list.
> I guess we could just put a WARN_ON() there and return 0.
>
> > +/* todo: implement pll2126x clock set rate */
> > +static int samsung_pll2126x_set_rate(struct clk_hw *hw, unsigned long
> > drate, + unsigned long prate)
> > +{
> > + return -ENOTSUPP;
> > +}
> > +
> > +static const struct clk_ops samsung_pll2126x_clk_ops = {
> > + .recalc_rate = samsung_pll2126x_recalc_rate,
> > + .round_rate = samsung_pll2126x_round_rate,
> > + .set_rate = samsung_pll2126x_set_rate,
> > +};
>
> --
>
> Thanks,
> Sylwester
WARNING: multiple messages have this Message-ID (diff)
From: heiko@sntech.de (Heiko Stübner)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/7] clk: samsung: add plls used in s3c2416 and s3c2443
Date: Tue, 12 Mar 2013 13:21:34 +0100 [thread overview]
Message-ID: <201303121321.34338.heiko@sntech.de> (raw)
In-Reply-To: <513F1B42.7000201@samsung.com>
Am Dienstag, 12. M?rz 2013, 13:10:42 schrieb Sylwester Nawrocki:
> Hi,
>
> On 03/12/2013 01:42 AM, Heiko St?bner wrote:
> > This adds support for pll2126x, pll3000x, pll6552x and pll6553x.
> >
> > Signed-off-by: Heiko Stuebner <heiko@sntech.de>
> > ---
> >
> > drivers/clk/samsung/clk-pll.c | 376
> > +++++++++++++++++++++++++++++++++++++++++ drivers/clk/samsung/clk-pll.h
> > | 8 +
> > 2 files changed, 384 insertions(+), 0 deletions(-)
> >
> > diff --git a/drivers/clk/samsung/clk-pll.c
> > b/drivers/clk/samsung/clk-pll.c index 4b24511..b772f9e 100644
> > --- a/drivers/clk/samsung/clk-pll.c
> > +++ b/drivers/clk/samsung/clk-pll.c
> > @@ -400,6 +400,97 @@ struct clk * __init
> > samsung_clk_register_pll46xx(const char *name,
>
> ...
>
> > +struct samsung_clk_pll2126x {
> > + struct clk_hw hw;
> > + const void __iomem *con_reg;
> > +};
> > +
> > +#define to_clk_pll2126x(_hw) container_of(_hw, struct
> > samsung_clk_pll2126x, hw) +
> > +static unsigned long samsung_pll2126x_recalc_rate(struct clk_hw *hw,
> > + unsigned long parent_rate)
> > +{
> > + struct samsung_clk_pll2126x *pll = to_clk_pll2126x(hw);
> > + u32 pll_con, mdiv, pdiv, sdiv;
> > + u64 fvco = parent_rate;
> > +
> > + pll_con = __raw_readl(pll->con_reg);
> > + mdiv = (pll_con >> PLL2126X_MDIV_SHIFT) & PLL2126X_MDIV_MASK;
> > + pdiv = (pll_con >> PLL2126X_PDIV_SHIFT) & PLL2126X_PDIV_MASK;
> > + sdiv = (pll_con >> PLL2126X_SDIV_SHIFT) & PLL2126X_SDIV_MASK;
> > +
> > + fvco *= (mdiv + 8);
> > + do_div(fvco, (pdiv + 2) << sdiv);
> > +
> > + return (unsigned long)fvco;
> > +}
> > +
> > +/* todo: implement pll2126x clock round rate operation */
> > +static long samsung_pll2126x_round_rate(struct clk_hw *hw,
> > + unsigned long drate, unsigned long *prate)
> > +{
> > + return -ENOTSUPP;
> > +}
>
> If you look at __clk_round_rate() in drivers/clk/clk.c it calls
> clk->ops->round_rate() recursively on the parent clock if
> CLK_SET_RATE_PARENT flag is set. But if the clock provides round_rate
> operation __clk_round_rate() will use it and will cast -ENOTSUPP
> you return above to unsigned long. Unless you want to loose some hair
> later and waste time on debugging I suggest to either remove all these
> callbacks that return -ENOSUPP or implement them properly right away.
Thanks for the hint ... this is what I rightfully get for mindlessly copying
from the other plls in the file;-) .
What about the other plls in the pll-file, they should be affected in the same
way, right?
> I'm just wondering why __clk_round_rate() return value type is unsigned
> long despite the struct clk_ops round_rate return long, which might
> indicate the negative values round_rate might callback are properly
> handled by the clk core code.
>
> Somewhat similar situation is with clk_mux_get_parent() in clk-mux.c
> which can return -EINVAL which is then casted to u8.
>
> I still have sending a patch for clk_mux_get_parent() on my todo list.
> I guess we could just put a WARN_ON() there and return 0.
>
> > +/* todo: implement pll2126x clock set rate */
> > +static int samsung_pll2126x_set_rate(struct clk_hw *hw, unsigned long
> > drate, + unsigned long prate)
> > +{
> > + return -ENOTSUPP;
> > +}
> > +
> > +static const struct clk_ops samsung_pll2126x_clk_ops = {
> > + .recalc_rate = samsung_pll2126x_recalc_rate,
> > + .round_rate = samsung_pll2126x_round_rate,
> > + .set_rate = samsung_pll2126x_set_rate,
> > +};
>
> --
>
> Thanks,
> Sylwester
next prev parent reply other threads:[~2013-03-12 12:21 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-12 0:41 [PATCH 0/7] ARM: S3C24XX: Convert S3C2416 to common clock framework Heiko Stübner
2013-03-12 0:41 ` Heiko Stübner
2013-03-12 0:42 ` [PATCH 1/7] clk: samsung: add plls used in s3c2416 and s3c2443 Heiko Stübner
2013-03-12 0:42 ` Heiko Stübner
2013-03-12 11:27 ` Russell King - ARM Linux
2013-03-12 11:27 ` Russell King - ARM Linux
2013-03-12 12:10 ` Sylwester Nawrocki
2013-03-12 12:10 ` Sylwester Nawrocki
2013-03-12 12:21 ` Heiko Stübner [this message]
2013-03-12 12:21 ` Heiko Stübner
2013-03-12 13:17 ` Sylwester Nawrocki
2013-03-12 13:17 ` Sylwester Nawrocki
2013-03-12 0:42 ` [PATCH 2/7] ARM: S3C24XX: add soc_is_s3c2416 and soc_is_s3c2443 Heiko Stübner
2013-03-12 0:42 ` Heiko Stübner
2013-03-12 0:43 ` [PATCH 3/7] ARM: S3C24XX: enable legacy clock code only when SAMSUNG_CLOCK selected Heiko Stübner
2013-03-12 0:43 ` Heiko Stübner
2013-03-12 0:43 ` [PATCH 4/7] clk: samsung: add clock-driver for s3c2416, s3c2443 and s3c2450 Heiko Stübner
2013-03-12 0:43 ` Heiko Stübner
2013-03-12 0:44 ` [PATCH 5/7] DO_NOT_APPLY: add clock driver for Samsung pwm clocks Heiko Stübner
2013-03-12 0:44 ` Heiko Stübner
2013-03-12 0:45 ` [PATCH 6/7] ARM: SAMSUNG: use clk_prepare_enable in samsung-time Heiko Stübner
2013-03-12 0:45 ` Heiko Stübner
2013-03-13 16:59 ` Pankaj Jangra
2013-03-13 16:59 ` Pankaj Jangra
2013-03-13 23:16 ` Heiko Stübner
2013-03-13 23:16 ` Heiko Stübner
2013-03-12 0:46 ` [PATCH 7/7] DO_NOT_APPLY: convert s3c2416 to use the common clock framework Heiko Stübner
2013-03-12 0:46 ` Heiko Stübner
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=201303121321.34338.heiko@sntech.de \
--to=heiko@sntech.de \
--cc=kgene.kim@samsung.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=mturquette@linaro.org \
--cc=s.nawrocki@samsung.com \
--cc=sylvester.nawrocki@gmail.com \
--cc=t.figa@samsung.com \
--cc=thomas.abraham@linaro.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.