From: linux@arm.linux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 3/5] clk: introduce the common clock framework
Date: Thu, 1 Dec 2011 08:45:47 +0000 [thread overview]
Message-ID: <20111201084547.GD19739@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <alpine.DEB.2.00.1111291619110.6289@utopia.booyaka.com>
On Wed, Nov 30, 2011 at 06:20:50PM -0700, Paul Walmsley wrote:
> 1. When a clock user calls clk_enable() on a clock, the clock framework
> should prevent other users of the clock from changing the clock's rate.
> This should persist until the clock user calls clk_disable() (but see also
> #2 below). This will ensure that clock users can rely on the rate
> returned by clk_get_rate(), as long as it's called between clk_enable()
> and clk_disable(). And since the clock's rate is guaranteed to remain the
> same during this time, code that cannot tolerate clock rate changes
> without special handling (such as driver code for external I/O devices)
> will work safely without further modification.
So, if you have a PLL whose parent clock is not used by anything else.
You want to program it to a certain rate.
You call clk_disable() on the PLL clock. This walks up the tree and
disables the parent. You then try to set the rate using clk_set_rate().
clk_set_rate() in this circumstance can't wait for the PLL to lock
because it can't - there's no reference clock for it.
You then call clk_enable(). The PLL now takes its time to lock. You
can't sleep in clk_enable() because it might be called from atomic
contexts, so you have to spin waiting for this.
Overloading clk_disable/clk_enable in this way is a bad solution to
this problem.
next prev parent reply other threads:[~2011-12-01 8:45 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-22 1:40 [PATCH v3 0/5] common clk framework Mike Turquette
2011-11-22 1:40 ` [PATCH v3 1/5] clk: Kconfig: add entry for HAVE_CLK_PREPARE Mike Turquette
2011-11-26 0:51 ` Shawn Guo
2011-11-22 1:40 ` [PATCH v3 2/5] Documentation: common clk API Mike Turquette
2011-11-23 2:03 ` Saravana Kannan
2011-11-23 20:33 ` Turquette, Mike
2011-11-26 8:47 ` Shawn Guo
2011-11-27 1:43 ` Turquette, Mike
2011-11-22 1:40 ` [PATCH v3 3/5] clk: introduce the common clock framework Mike Turquette
2011-11-23 3:12 ` Saravana Kannan
2011-11-23 21:30 ` Turquette, Mike
2011-11-26 13:22 ` Shawn Guo
2011-11-27 6:00 ` Turquette, Mike
2011-12-01 1:20 ` Paul Walmsley
2011-12-01 5:53 ` Turquette, Mike
2011-12-01 6:39 ` Paul Walmsley
2011-12-01 14:42 ` Mark Brown
2011-12-01 18:25 ` Turquette, Mike
2011-12-01 18:30 ` Paul Walmsley
2011-12-01 18:32 ` Mark Brown
2011-12-01 22:03 ` Russell King - ARM Linux
2011-12-03 1:04 ` Paul Walmsley
2011-12-01 8:45 ` Russell King - ARM Linux [this message]
2011-12-02 17:13 ` Paul Walmsley
2011-12-02 20:23 ` Russell King - ARM Linux
2011-12-02 20:32 ` Uwe Kleine-König
2011-12-01 2:13 ` Paul Walmsley
2011-12-05 21:15 ` Paul Walmsley
2011-12-05 23:48 ` Russell King - ARM Linux
2011-12-06 1:37 ` Paul Walmsley
2011-12-06 6:28 ` Paul Walmsley
2011-12-05 23:40 ` Turquette, Mike
2011-11-22 1:40 ` [PATCH v3 4/5] clk: basic gateable and fixed-rate clks Mike Turquette
2011-11-22 13:11 ` Arnd Bergmann
2011-11-22 15:03 ` Mark Salter
2011-11-22 15:49 ` Arnd Bergmann
2011-11-26 13:48 ` Shawn Guo
2011-11-27 6:03 ` Turquette, Mike
2011-11-27 0:09 ` Shawn Guo
2011-11-22 1:40 ` [PATCH v3 5/5] clk: export tree topology and clk data via sysfs Mike Turquette
2011-11-22 13:07 ` Arnd Bergmann
2011-11-22 17:42 ` Mike Turquette
2011-11-22 15:49 ` Greg KH
2011-11-22 17:57 ` Mike Turquette
2011-11-22 19:13 ` Greg KH
2011-11-23 3:48 ` Saravana Kannan
2011-11-23 20:43 ` Turquette, Mike
2011-11-23 16:59 ` Tony Lindgren
2011-11-23 18:06 ` Russell King - ARM Linux
2011-11-23 18:55 ` Tony Lindgren
2011-11-23 19:09 ` Mark Brown
2011-11-23 19:19 ` Tony Lindgren
2011-11-23 22:42 ` Russell King - ARM Linux
2011-11-24 1:08 ` Tony Lindgren
[not found] ` <CACxGe6sOd6MiyYaok6BsihJtp-NNsm3WQf+aUPGMRFRpSLw2mQ@mail.gmail.com>
2011-11-22 18:01 ` Mike Turquette
2011-11-22 19:19 ` Grant Likely
2011-11-22 20:02 ` Arnd Bergmann
2011-11-22 20:19 ` Turquette, Mike
2011-11-22 15:42 ` [PATCH v3 0/5] common clk framework Greg KH
2011-11-22 17:45 ` Russell King - ARM Linux
2011-11-22 18:09 ` Mike Turquette
2011-11-22 19:12 ` Greg KH
2011-11-22 19:30 ` Mark Brown
2011-11-26 7:06 ` Shawn Guo
2011-11-27 1:12 ` Turquette, Mike
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=20111201084547.GD19739@n2100.arm.linux.org.uk \
--to=linux@arm.linux.org.uk \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).