From: Rajendra Nayak <rnayak@ti.com> To: linux-omap@vger.kernel.org Cc: paul@pwsan.com, b-cousson@ti.com, khilman@ti.com, santosh.shilimkar@ti.com, linux-arm-kernel@lists.infradead.org, Rajendra Nayak <rnayak@ti.com> Subject: [PATCH v2 3/7] omap: clock: Add allow_idle/deny_idle support in clkops Date: Thu, 10 Feb 2011 14:46:36 +0530 [thread overview] Message-ID: <1297329400-5936-4-git-send-email-rnayak@ti.com> (raw) In-Reply-To: <1297329400-5936-3-git-send-email-rnayak@ti.com> On OMAP various clock nodes (dpll's, mx post dividers, interface clocks) support hardware level autogating which can be controlled from software. Support such functionality by adding two new function pointer allow_idle and deny_idle in the clkops structure. These function pointers can be populated for any clock node which supports hardware level autogating. Also add 2 new functions (omap_clk_enable_auotidle and omap_clk_disable_autoidle) which can be called from architecture specific PM core code, if hardware level autogating (for all supported clock nodes) is to be enabled or disabled. Signed-off-by: Rajendra Nayak <rnayak@ti.com> --- arch/arm/plat-omap/clock.c | 26 ++++++++++++++++++++++++++ arch/arm/plat-omap/include/plat/clock.h | 6 ++++++ 2 files changed, 32 insertions(+), 0 deletions(-) diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c index fc62fb5..6889c5a 100644 --- a/arch/arm/plat-omap/clock.c +++ b/arch/arm/plat-omap/clock.c @@ -335,6 +335,32 @@ struct clk *omap_clk_get_by_name(const char *name) return ret; } +void omap_clk_enable_autoidle(void) +{ + struct clk *c; + + mutex_lock(&clocks_mutex); + + list_for_each_entry(c, &clocks, node) + if (c->ops->allow_idle) + c->ops->allow_idle(c); + + mutex_unlock(&clocks_mutex); +} + +void omap_clk_disable_autoidle(void) +{ + struct clk *c; + + mutex_lock(&clocks_mutex); + + list_for_each_entry(c, &clocks, node) + if (c->ops->deny_idle) + c->ops->deny_idle(c); + + mutex_unlock(&clocks_mutex); +} + /* * Low level helpers */ diff --git a/arch/arm/plat-omap/include/plat/clock.h b/arch/arm/plat-omap/include/plat/clock.h index 8eb0ada..167f1e0 100644 --- a/arch/arm/plat-omap/include/plat/clock.h +++ b/arch/arm/plat-omap/include/plat/clock.h @@ -25,6 +25,8 @@ struct clockdomain; * @disable: fn ptr that enables the current clock in hardware * @find_idlest: function returning the IDLEST register for the clock's IP blk * @find_companion: function returning the "companion" clk reg for the clock + * @allow_idle: fn ptr that enables autoidle for the current clock in hardware + * @deny_idle: fn ptr that disables autoidle for the current clock in hardware * * A "companion" clk is an accompanying clock to the one being queried * that must be enabled for the IP module connected to the clock to @@ -42,6 +44,8 @@ struct clkops { u8 *, u8 *); void (*find_companion)(struct clk *, void __iomem **, u8 *); + void (*allow_idle)(struct clk *); + void (*deny_idle)(struct clk *); }; #ifdef CONFIG_ARCH_OMAP2PLUS @@ -292,6 +296,8 @@ extern void clk_init_cpufreq_table(struct cpufreq_frequency_table **table); extern void clk_exit_cpufreq_table(struct cpufreq_frequency_table **table); #endif extern struct clk *omap_clk_get_by_name(const char *name); +extern void omap_clk_enable_autoidle(void); +extern void omap_clk_disable_autoidle(void); extern const struct clkops clkops_null; -- 1.7.0.4
WARNING: multiple messages have this Message-ID (diff)
From: rnayak@ti.com (Rajendra Nayak) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 3/7] omap: clock: Add allow_idle/deny_idle support in clkops Date: Thu, 10 Feb 2011 14:46:36 +0530 [thread overview] Message-ID: <1297329400-5936-4-git-send-email-rnayak@ti.com> (raw) In-Reply-To: <1297329400-5936-3-git-send-email-rnayak@ti.com> On OMAP various clock nodes (dpll's, mx post dividers, interface clocks) support hardware level autogating which can be controlled from software. Support such functionality by adding two new function pointer allow_idle and deny_idle in the clkops structure. These function pointers can be populated for any clock node which supports hardware level autogating. Also add 2 new functions (omap_clk_enable_auotidle and omap_clk_disable_autoidle) which can be called from architecture specific PM core code, if hardware level autogating (for all supported clock nodes) is to be enabled or disabled. Signed-off-by: Rajendra Nayak <rnayak@ti.com> --- arch/arm/plat-omap/clock.c | 26 ++++++++++++++++++++++++++ arch/arm/plat-omap/include/plat/clock.h | 6 ++++++ 2 files changed, 32 insertions(+), 0 deletions(-) diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c index fc62fb5..6889c5a 100644 --- a/arch/arm/plat-omap/clock.c +++ b/arch/arm/plat-omap/clock.c @@ -335,6 +335,32 @@ struct clk *omap_clk_get_by_name(const char *name) return ret; } +void omap_clk_enable_autoidle(void) +{ + struct clk *c; + + mutex_lock(&clocks_mutex); + + list_for_each_entry(c, &clocks, node) + if (c->ops->allow_idle) + c->ops->allow_idle(c); + + mutex_unlock(&clocks_mutex); +} + +void omap_clk_disable_autoidle(void) +{ + struct clk *c; + + mutex_lock(&clocks_mutex); + + list_for_each_entry(c, &clocks, node) + if (c->ops->deny_idle) + c->ops->deny_idle(c); + + mutex_unlock(&clocks_mutex); +} + /* * Low level helpers */ diff --git a/arch/arm/plat-omap/include/plat/clock.h b/arch/arm/plat-omap/include/plat/clock.h index 8eb0ada..167f1e0 100644 --- a/arch/arm/plat-omap/include/plat/clock.h +++ b/arch/arm/plat-omap/include/plat/clock.h @@ -25,6 +25,8 @@ struct clockdomain; * @disable: fn ptr that enables the current clock in hardware * @find_idlest: function returning the IDLEST register for the clock's IP blk * @find_companion: function returning the "companion" clk reg for the clock + * @allow_idle: fn ptr that enables autoidle for the current clock in hardware + * @deny_idle: fn ptr that disables autoidle for the current clock in hardware * * A "companion" clk is an accompanying clock to the one being queried * that must be enabled for the IP module connected to the clock to @@ -42,6 +44,8 @@ struct clkops { u8 *, u8 *); void (*find_companion)(struct clk *, void __iomem **, u8 *); + void (*allow_idle)(struct clk *); + void (*deny_idle)(struct clk *); }; #ifdef CONFIG_ARCH_OMAP2PLUS @@ -292,6 +296,8 @@ extern void clk_init_cpufreq_table(struct cpufreq_frequency_table **table); extern void clk_exit_cpufreq_table(struct cpufreq_frequency_table **table); #endif extern struct clk *omap_clk_get_by_name(const char *name); +extern void omap_clk_enable_autoidle(void); +extern void omap_clk_disable_autoidle(void); extern const struct clkops clkops_null; -- 1.7.0.4
next prev parent reply other threads:[~2011-02-10 9:16 UTC|newest] Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top 2011-02-10 9:16 [PATCH v2 0/7] clock/dpll autoidle support Rajendra Nayak 2011-02-10 9:16 ` Rajendra Nayak 2011-02-10 9:16 ` [PATCH v2 1/7] omap: clock: Check for enable/disable ops support Rajendra Nayak 2011-02-10 9:16 ` Rajendra Nayak 2011-02-10 9:16 ` [PATCH v2 2/7] omap3: dpll: Populate clkops for dpll1_ck Rajendra Nayak 2011-02-10 9:16 ` Rajendra Nayak 2011-02-10 9:16 ` Rajendra Nayak [this message] 2011-02-10 9:16 ` [PATCH v2 3/7] omap: clock: Add allow_idle/deny_idle support in clkops Rajendra Nayak 2011-02-10 9:16 ` [PATCH v2 4/7] omap: dpll: Add allow_idle/deny_idle support for all DPLL's Rajendra Nayak 2011-02-10 9:16 ` Rajendra Nayak 2011-02-10 9:16 ` [PATCH v2 5/7] omap: dpll: Enable all OMAP3/4 dpll autoidle late at boot Rajendra Nayak 2011-02-10 9:16 ` Rajendra Nayak 2011-02-10 9:16 ` [PATCH v2 6/7] omap4: dpll: Add dpll api to control GATE_CTRL Rajendra Nayak 2011-02-10 9:16 ` Rajendra Nayak 2011-02-10 9:16 ` [PATCH v2 7/7] omap4: dpll: Enable auto gate control for all MX postdividers Rajendra Nayak 2011-02-10 9:16 ` Rajendra Nayak 2011-02-13 1:10 ` Paul Walmsley 2011-02-13 1:10 ` Paul Walmsley 2011-02-14 12:34 ` Rajendra Nayak 2011-02-14 12:34 ` Rajendra Nayak 2011-02-13 1:08 ` [PATCH v2 6/7] omap4: dpll: Add dpll api to control GATE_CTRL Paul Walmsley 2011-02-13 1:08 ` Paul Walmsley 2011-02-13 0:42 ` [PATCH v2 5/7] omap: dpll: Enable all OMAP3/4 dpll autoidle late at boot Paul Walmsley 2011-02-13 0:42 ` Paul Walmsley 2011-02-14 12:32 ` Rajendra Nayak 2011-02-14 12:32 ` Rajendra Nayak 2011-02-14 16:52 ` Paul Walmsley 2011-02-14 16:52 ` Paul Walmsley 2011-02-16 22:37 ` Paul Walmsley 2011-02-16 22:37 ` Paul Walmsley 2011-02-13 0:28 ` [PATCH v2 4/7] omap: dpll: Add allow_idle/deny_idle support for all DPLL's Paul Walmsley 2011-02-13 0:28 ` Paul Walmsley 2011-02-14 12:29 ` Rajendra Nayak 2011-02-14 12:29 ` Rajendra Nayak 2011-02-14 16:51 ` Paul Walmsley 2011-02-14 16:51 ` Paul Walmsley 2011-02-13 0:04 ` [PATCH v2 3/7] omap: clock: Add allow_idle/deny_idle support in clkops Paul Walmsley 2011-02-13 0:04 ` Paul Walmsley 2011-02-13 0:25 ` Paul Walmsley 2011-02-13 0:25 ` Paul Walmsley 2011-02-14 12:23 ` Rajendra Nayak 2011-02-14 12:23 ` Rajendra Nayak 2011-02-14 16:50 ` Paul Walmsley 2011-02-14 16:50 ` Paul Walmsley 2011-02-13 1:17 ` [PATCH v2 0/7] clock/dpll autoidle support Paul Walmsley 2011-02-13 1:17 ` Paul Walmsley
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=1297329400-5936-4-git-send-email-rnayak@ti.com \ --to=rnayak@ti.com \ --cc=b-cousson@ti.com \ --cc=khilman@ti.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-omap@vger.kernel.org \ --cc=paul@pwsan.com \ --cc=santosh.shilimkar@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: linkBe 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.