From: andrew@lunn.ch (Andrew Lunn)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/5] clk: mvebu: Add core-divider clock
Date: Thu, 26 Sep 2013 10:24:04 +0200 [thread overview]
Message-ID: <20130926082404.GA18244@lunn.ch> (raw)
In-Reply-To: <20130925213730.GA19371@localhost>
Hi Ezequiel
> +static int clk_corediv_enable(struct clk_hw *hwclk)
> +{
> + struct clk_corediv *corediv = to_corediv_clk(hwclk);
> + struct clk_corediv_desc *desc = &corediv->desc;
> + u32 reg;
> +
> + reg = readl(corediv->reg);
> + reg |= (BIT(desc->fieldbit) << CORE_CLOCK_DIVIDER_ENABLE_OFFSET);
> + writel(reg, corediv->reg);
> + return 0;
> +}
Shouldn't there be spinlocks around these register accesses? At least
the core gate clk driver has a spinlock.
> +static long clk_corediv_round_rate(struct clk_hw *hwclk, unsigned long rate,
> + unsigned long *parent_rate)
> +{
> + /* Valid ratio are 1:4, 1:5, 1:6 and 1:8 */
> + u32 div;
> +
> + div = *parent_rate / rate;
> + if (div <= 4)
> + div = 4;
> + else if (div <= 5)
> + div = 5;
> + else if (div <= 6)
> + div = 6;
> + else
> + div = 8;
> +
> + return *parent_rate / div;
> +}
This looks odd. Is not the following clearer?
div = *parent_rate / rate;
if (div < 5)
div = 4;
else if (div > 6)
div = 8;
The CodingStyle might require some {} here?
+ /*
+ * Wait for clocks to settle down, and then clear all the
+ * ratios request and the reload request.
+ */
+ udelay(1000);
+ reg &= ~(CORE_CLOCK_DIVIDER_RATIO_MASK | CORE_CLOCK_DIVIDER_RATIO_RELOAD);
+ writel(reg, corediv->reg);
+ udelay(1000);
Documentation/timers/timers-howto.txt says:
SLEEPING FOR ~USECS OR SMALL MSECS ( 10us - 20ms):
* Use usleep_range
Andrew
WARNING: multiple messages have this Message-ID (diff)
From: Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
To: Ezequiel Garcia
<ezequiel.garcia-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
Jason Cooper <jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org>,
Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>,
Mike Turquette
<mturquette-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
Emilio Lopez <elopez93-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Gregory Clement
<gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
Lior Amsalem <alior-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org>,
Thomas Petazzoni
<thomas.petazzoni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
Tawfik Bayouk <tawfik-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org>,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH 1/5] clk: mvebu: Add core-divider clock
Date: Thu, 26 Sep 2013 10:24:04 +0200 [thread overview]
Message-ID: <20130926082404.GA18244@lunn.ch> (raw)
In-Reply-To: <20130925213730.GA19371@localhost>
Hi Ezequiel
> +static int clk_corediv_enable(struct clk_hw *hwclk)
> +{
> + struct clk_corediv *corediv = to_corediv_clk(hwclk);
> + struct clk_corediv_desc *desc = &corediv->desc;
> + u32 reg;
> +
> + reg = readl(corediv->reg);
> + reg |= (BIT(desc->fieldbit) << CORE_CLOCK_DIVIDER_ENABLE_OFFSET);
> + writel(reg, corediv->reg);
> + return 0;
> +}
Shouldn't there be spinlocks around these register accesses? At least
the core gate clk driver has a spinlock.
> +static long clk_corediv_round_rate(struct clk_hw *hwclk, unsigned long rate,
> + unsigned long *parent_rate)
> +{
> + /* Valid ratio are 1:4, 1:5, 1:6 and 1:8 */
> + u32 div;
> +
> + div = *parent_rate / rate;
> + if (div <= 4)
> + div = 4;
> + else if (div <= 5)
> + div = 5;
> + else if (div <= 6)
> + div = 6;
> + else
> + div = 8;
> +
> + return *parent_rate / div;
> +}
This looks odd. Is not the following clearer?
div = *parent_rate / rate;
if (div < 5)
div = 4;
else if (div > 6)
div = 8;
The CodingStyle might require some {} here?
+ /*
+ * Wait for clocks to settle down, and then clear all the
+ * ratios request and the reload request.
+ */
+ udelay(1000);
+ reg &= ~(CORE_CLOCK_DIVIDER_RATIO_MASK | CORE_CLOCK_DIVIDER_RATIO_RELOAD);
+ writel(reg, corediv->reg);
+ udelay(1000);
Documentation/timers/timers-howto.txt says:
SLEEPING FOR ~USECS OR SMALL MSECS ( 10us - 20ms):
* Use usleep_range
Andrew
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2013-09-26 8:24 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-25 21:28 [PATCH 0/5] Add Core Divider clock support for Armada 370/XP Ezequiel Garcia
2013-09-25 21:28 ` Ezequiel Garcia
2013-09-25 21:28 ` [PATCH 1/5] clk: mvebu: Add core-divider clock Ezequiel Garcia
2013-09-25 21:28 ` [PATCH 2/5] ARM: mvebu: Add Core Divider clock device-tree binding Ezequiel Garcia
2013-09-25 21:28 ` Ezequiel Garcia
2013-09-25 21:28 ` [PATCH 3/5] ARM: mvebu: Add a 2 GHz fixed-clock Armada 370/XP Ezequiel Garcia
2013-09-25 21:28 ` [PATCH 4/5] ARM: mvebu: Add the core-divider clock to " Ezequiel Garcia
2013-09-25 21:28 ` [PATCH 5/5] ARM: mvebu: Add NAND " Ezequiel Garcia
2013-09-25 21:37 ` [PATCH 0/5] Add Core Divider clock support for " Ezequiel Garcia
2013-09-25 21:37 ` Ezequiel Garcia
2013-09-26 7:38 ` Gregory CLEMENT
2013-09-26 7:38 ` Gregory CLEMENT
2013-09-26 15:26 ` Ezequiel Garcia
2013-09-26 15:26 ` Ezequiel Garcia
2013-09-26 15:47 ` Thomas Petazzoni
2013-09-26 15:47 ` Thomas Petazzoni
2013-09-26 16:00 ` Ezequiel Garcia
2013-09-26 16:00 ` Ezequiel Garcia
2013-09-26 16:12 ` Thomas Petazzoni
2013-09-26 16:12 ` Thomas Petazzoni
2013-09-26 8:24 ` Andrew Lunn [this message]
2013-09-26 8:24 ` [PATCH 1/5] clk: mvebu: Add core-divider clock Andrew Lunn
2013-09-26 15:12 ` Ezequiel Garcia
2013-09-26 15:12 ` Ezequiel Garcia
2013-09-26 15:56 ` Andrew Lunn
2013-09-26 15:56 ` Andrew Lunn
2013-09-26 16:55 ` Ben Dooks
2013-09-26 18:29 ` Ezequiel Garcia
2013-09-26 18:29 ` Ezequiel Garcia
2013-09-26 8:36 ` [PATCH 2/5] ARM: mvebu: Add Core Divider clock device-tree binding Andrew Lunn
2013-09-26 8:36 ` Andrew Lunn
2013-09-26 15:04 ` Ezequiel Garcia
2013-09-26 15:04 ` Ezequiel Garcia
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=20130926082404.GA18244@lunn.ch \
--to=andrew@lunn.ch \
--cc=linux-arm-kernel@lists.infradead.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.