From: Mike Turquette <mturquette@ti.com>
To: paul@pwsan.com
Cc: rnayak@ti.com, linux-omap@vger.kernel.org,
linux-arm-kernel@vger.kernel.org, patches@linaro.org,
Mike Turquette <mturquette@ti.com>
Subject: [PATCH 06/26] ARM: OMAP2xxx: clock: add APLL rate recalculation functions
Date: Wed, 7 Nov 2012 17:12:41 -0800 [thread overview]
Message-ID: <1352337181-29427-7-git-send-email-mturquette@ti.com> (raw)
In-Reply-To: <1352337181-29427-1-git-send-email-mturquette@ti.com>
From: Paul Walmsley <paul@pwsan.com>
OMAP2420 and OMAP2430 chips each have two on-chip APLLs. When locked,
one APLL generates a 96 MHz rate; the other, a 54 MHz rate.
Previously we treated these clocks as fixed-rate clocks at the locked
rates, but this isn't quite right. The locked rate should be returned
when the APLL is locked, and a zero rate should be returned when the
APLL is stopped. This patch adds the infrastructure that will be used
by the CCF changes.
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Signed-off-by: Mike Turquette <mturquette@ti.com>
Cc: Rajendra Nayak <rnayak@ti.com>
---
arch/arm/mach-omap2/clkt2xxx_apll.c | 35 +++++++++++++++++++++++++++++++++++
arch/arm/mach-omap2/clock2xxx.h | 4 ++++
2 files changed, 39 insertions(+)
diff --git a/arch/arm/mach-omap2/clkt2xxx_apll.c b/arch/arm/mach-omap2/clkt2xxx_apll.c
index 83088c4..d8a850b 100644
--- a/arch/arm/mach-omap2/clkt2xxx_apll.c
+++ b/arch/arm/mach-omap2/clkt2xxx_apll.c
@@ -41,6 +41,27 @@ void __iomem *cm_idlest_pll;
/* Private functions */
+#ifdef CONFIG_COMMON_CLK
+/**
+ * omap2xxx_clk_apll_locked - is the APLL locked?
+ * @hw: struct clk_hw * of the APLL to check
+ *
+ * If the APLL IP block referred to by @hw indicates that it's locked,
+ * return true; otherwise, return false.
+ */
+static bool omap2xxx_clk_apll_locked(struct clk_hw *hw)
+{
+ struct clk_hw_omap *clk = to_clk_hw_omap(hw);
+ u32 r, apll_mask;
+
+ apll_mask = EN_APLL_LOCKED << clk->enable_bit;
+
+ r = omap2_cm_read_mod_reg(PLL_MOD, CM_CLKEN);
+
+ return ((r & apll_mask) == apll_mask) ? true : false;
+}
+#endif
+
/* Enable an APLL if off */
#ifdef CONFIG_COMMON_CLK
static int omap2_clk_apll_enable(struct clk_hw *hw, u32 status_mask)
@@ -147,6 +168,20 @@ static void omap2_clk_apll_disable(struct clk *clk)
omap2_cm_write_mod_reg(cval, PLL_MOD, CM_CLKEN);
}
+#ifdef CONFIG_COMMON_CLK
+unsigned long omap2_clk_apll54_recalc(struct clk_hw *hw,
+ unsigned long parent_rate)
+{
+ return (omap2xxx_clk_apll_locked(hw)) ? 54000000 : 0;
+}
+
+unsigned long omap2_clk_apll96_recalc(struct clk_hw *hw,
+ unsigned long parent_rate)
+{
+ return (omap2xxx_clk_apll_locked(hw)) ? 96000000 : 0;
+}
+#endif
+
/* Public data */
#ifdef CONFIG_COMMON_CLK
const struct clk_hw_omap_ops clkhwops_apll54 = {
diff --git a/arch/arm/mach-omap2/clock2xxx.h b/arch/arm/mach-omap2/clock2xxx.h
index 1ce94b6..f2b93e3 100644
--- a/arch/arm/mach-omap2/clock2xxx.h
+++ b/arch/arm/mach-omap2/clock2xxx.h
@@ -27,6 +27,10 @@ unsigned long omap2_dpllcore_recalc(struct clk_hw *hw,
int omap2_reprogram_dpllcore(struct clk_hw *clk, unsigned long rate,
unsigned long parent_rate);
unsigned long omap2xxx_clk_get_core_rate(struct clk_hw_omap *clk);
+unsigned long omap2_clk_apll54_recalc(struct clk_hw *hw,
+ unsigned long parent_rate);
+unsigned long omap2_clk_apll96_recalc(struct clk_hw *hw,
+ unsigned long parent_rate);
#else
unsigned long omap2_table_mpu_recalc(struct clk *clk);
int omap2_select_table_rate(struct clk *clk, unsigned long rate);
--
1.7.9.5
next prev parent reply other threads:[~2012-11-08 1:13 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-08 1:12 [PATCH v2 00/26] Move OMAP2+ over to common clk framework Mike Turquette
2012-11-08 1:12 ` [PATCH 01/26] ARM: OMAP: clock: Nuke plat/clock.c & reuse struct clk as clk_hw_omap Mike Turquette
2012-11-08 1:12 ` [PATCH 02/26] ARM: OMAP: hwmod: Fix up hwmod based clkdm accesses Mike Turquette
2012-11-12 22:15 ` Paul Walmsley
2012-11-08 1:12 ` [PATCH 03/26] ARM: OMAP4: clock: Convert to common clk Mike Turquette
2012-11-12 22:52 ` Paul Walmsley
2012-11-13 2:17 ` Paul Walmsley
2012-11-08 1:12 ` [PATCH 04/26] ARM: OMAP3: " Mike Turquette
2012-11-08 1:12 ` [PATCH 05/26] ARM: OMAP2: " Mike Turquette
2012-11-12 22:16 ` Paul Walmsley
2012-11-08 1:12 ` Mike Turquette [this message]
2012-11-08 1:12 ` [PATCH 07/26] ARM: OMAP: clock: list all clk_hw_omap clks to enable/disable autoidle Mike Turquette
2012-11-12 23:00 ` Paul Walmsley
2012-11-08 1:12 ` [PATCH 08/26] ARM: OMAP: clock: Define a function to enable clocks at init Mike Turquette
2012-11-12 23:01 ` Paul Walmsley
2012-11-08 1:12 ` [PATCH 09/26] ARM: OMAP2+: hwmod: Invoke init_clkdm before other init functions Mike Turquette
2012-11-08 1:12 ` [PATCH 10/26] ARM: OMAP: clock: Get rid of some clkdm assocations within clks Mike Turquette
2012-11-08 1:12 ` [PATCH 11/26] ARM: OMAP2+: clock: add OMAP CCF convenience macros to mach-omap2/clock.h Mike Turquette
2012-11-08 1:12 ` [PATCH 12/26] ARM: OMAP4: clock: Add 44xx data using common struct clk Mike Turquette
2012-11-13 1:37 ` Paul Walmsley
2012-11-13 2:16 ` Paul Walmsley
2012-11-08 1:12 ` [PATCH 13/26] ARM: AM33XX: clock: add clock data in common clock format Mike Turquette
2012-11-08 1:12 ` [PATCH 16/26] ARM: OMAP: clock: Switch to COMMON clk Mike Turquette
2012-11-08 1:12 ` [PATCH 17/26] ARM: OMAP: hwmod: Cleanup !CONFIG_COMMON_CLK parts Mike Turquette
2012-11-08 1:12 ` [PATCH 18/26] ARM: OMAP4: clock: " Mike Turquette
2012-11-08 1:12 ` [PATCH 20/26] ARM: omap3: " Mike Turquette
2012-11-08 1:12 ` [PATCH 22/26] ARM: AM33xx: clock: drop obsolete clock data Mike Turquette
2012-11-08 1:12 ` [PATCH 23/26] ARM: omap2: clock: Cleanup !CONFIG_COMMON_CLK parts Mike Turquette
2012-11-08 1:13 ` [PATCH 25/26] ARM: OMAP2+: clock: remove unnecessary declarations Mike Turquette
2012-11-08 1:13 ` [PATCH 26/26] ARM: OMAP2+: clock: Cleanup !CONFIG_COMMON_CLK parts Mike Turquette
2012-11-08 1:31 ` [PATCH v2 00/26] Move OMAP2+ over to common clk framework Mike Turquette
2012-11-08 1:42 ` Tony Lindgren
2012-11-08 1:54 ` Mike Turquette
2012-11-08 2:50 ` Paul Walmsley
2012-11-08 5:02 ` Rajendra Nayak
2012-11-08 5:19 ` Mike Turquette
2012-11-08 19:20 ` Kevin Hilman
[not found] ` <1352337181-29427-15-git-send-email-mturquette@ti.com>
2012-11-08 18:08 ` [PATCH 14/26] ARM: OMAP3: clock: Add 3xxx data using common struct clk Paul Walmsley
2012-11-08 21:52 ` Mike Turquette
2012-11-08 22:01 ` Paul Walmsley
2012-11-09 0:11 ` Paul Walmsley
2012-11-09 0:33 ` Paul Walmsley
2012-11-09 0:49 ` Paul Walmsley
2012-11-09 0:57 ` Mike Turquette
2012-11-08 23:31 ` [PATCH] ARM: OMAP2+: clockdomain: disabling unused clks Mike Turquette
2012-11-09 0:58 ` Paul Walmsley
2012-11-09 1:17 ` Mike Turquette
2012-11-09 19:06 ` Paul Walmsley
2012-11-09 19:08 ` Paul Walmsley
2012-11-09 19:40 ` Mike Turquette
2012-11-09 19:52 ` Paul Walmsley
2012-11-09 20:53 ` Paul Walmsley
2012-11-08 19:04 ` [PATCH v2 00/26] Move OMAP2+ over to common clk framework Vaibhav Hiremath
2012-11-09 21:12 ` Paul Walmsley
2012-11-09 22:09 ` Tony Lindgren
2012-11-09 22:18 ` Mike Turquette
2012-11-09 23:47 ` Paul Walmsley
2012-11-12 21:50 ` [PATCH] ARM: OMAP3+: DPLL: drop !CONFIG_COMMON_CLK sections Paul Walmsley
2012-11-12 22:30 ` Mike Turquette
[not found] ` <1352337181-29427-16-git-send-email-mturquette@ti.com>
[not found] ` <alpine.DEB.2.00.1211081532210.20703@utopia.booyaka.com>
2012-11-09 20:32 ` [PATCH 15/26] ARM: omap2: clock: Add 24xx data using common struct clk Paul Walmsley
2012-11-09 21:05 ` Mike Turquette
2012-11-09 21:22 ` Paul Walmsley
2012-11-09 22:21 ` Mike Turquette
2012-11-12 22:13 ` Paul Walmsley
2012-11-13 13:42 ` [PATCH v2 00/26] Move OMAP2+ over to common clk framework Laurent Pinchart
2012-11-13 16:43 ` Mike Turquette
2012-11-15 0:57 ` Laurent Pinchart
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=1352337181-29427-7-git-send-email-mturquette@ti.com \
--to=mturquette@ti.com \
--cc=linux-arm-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=patches@linaro.org \
--cc=paul@pwsan.com \
--cc=rnayak@ti.com \
/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).