Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 342454
b: refs/heads/master
c: 23fb8ba
h: refs/heads/master
v: v3
  • Loading branch information
Rajendra Nayak authored and Paul Walmsley committed Nov 13, 2012
1 parent 28138e5 commit 35414bb
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 7a2bd1cc3926327c0393deb52e8300af75b1c9e1
refs/heads/master: 23fb8ba3a8f55f28a7a89b64b3711fcf72239d7f
59 changes: 59 additions & 0 deletions trunk/arch/arm/mach-omap2/clock.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ static DEFINE_SPINLOCK(clockfw_lock);
#endif

#ifdef CONFIG_COMMON_CLK
static LIST_HEAD(clk_hw_omap_clocks);

/*
* Used for clocks that have the same value as the parent clock,
Expand Down Expand Up @@ -521,6 +522,64 @@ static int __init omap_clk_setup(char *str)
}
__setup("mpurate=", omap_clk_setup);

/**
* omap2_init_clk_hw_omap_clocks - initialize an OMAP clock
* @clk: struct clk * to initialize
*
* Add an OMAP clock @clk to the internal list of OMAP clocks. Used
* temporarily for autoidle handling, until this support can be
* integrated into the common clock framework code in some way. No
* return value.
*/
void omap2_init_clk_hw_omap_clocks(struct clk *clk)
{
struct clk_hw_omap *c;

if (__clk_get_flags(clk) & CLK_IS_BASIC)
return;

c = to_clk_hw_omap(__clk_get_hw(clk));
list_add(&c->node, &clk_hw_omap_clocks);
}

/**
* omap2_clk_enable_autoidle_all - enable autoidle on all OMAP clocks that
* support it
*
* Enable clock autoidle on all OMAP clocks that have allow_idle
* function pointers associated with them. This function is intended
* to be temporary until support for this is added to the common clock
* code. Returns 0.
*/
int omap2_clk_enable_autoidle_all(void)
{
struct clk_hw_omap *c;

list_for_each_entry(c, &clk_hw_omap_clocks, node)
if (c->ops && c->ops->allow_idle)
c->ops->allow_idle(c);
return 0;
}

/**
* omap2_clk_disable_autoidle_all - disable autoidle on all OMAP clocks that
* support it
*
* Disable clock autoidle on all OMAP clocks that have allow_idle
* function pointers associated with them. This function is intended
* to be temporary until support for this is added to the common clock
* code. Returns 0.
*/
int omap2_clk_disable_autoidle_all(void)
{
struct clk_hw_omap *c;

list_for_each_entry(c, &clk_hw_omap_clocks, node)
if (c->ops && c->ops->deny_idle)
c->ops->deny_idle(c);
return 0;
}

const struct clk_hw_omap_ops clkhwops_wait = {
.find_idlest = omap2_clk_dflt_find_idlest,
.find_companion = omap2_clk_dflt_find_companion,
Expand Down
3 changes: 3 additions & 0 deletions trunk/arch/arm/mach-omap2/clock.h
Original file line number Diff line number Diff line change
Expand Up @@ -535,6 +535,9 @@ void omap2_clk_dflt_find_companion(struct clk_hw_omap *clk,
void omap2_clk_dflt_find_idlest(struct clk_hw_omap *clk,
void __iomem **idlest_reg,
u8 *idlest_bit, u8 *idlest_val);
void omap2_init_clk_hw_omap_clocks(struct clk *clk);
int omap2_clk_enable_autoidle_all(void);
int omap2_clk_disable_autoidle_all(void);
#else
int omap2_dflt_clk_enable(struct clk *clk);
void omap2_dflt_clk_disable(struct clk *clk);
Expand Down
27 changes: 27 additions & 0 deletions trunk/arch/arm/mach-omap2/io.c
Original file line number Diff line number Diff line change
Expand Up @@ -407,6 +407,9 @@ void __init omap2420_init_late(void)
omap_mux_late_init();
omap2_common_pm_late_init();
omap2_pm_init();
#ifdef CONFIG_COMMON_CLK
omap2_clk_enable_autoidle_all();
#endif
}
#endif

Expand Down Expand Up @@ -436,6 +439,9 @@ void __init omap2430_init_late(void)
omap_mux_late_init();
omap2_common_pm_late_init();
omap2_pm_init();
#ifdef CONFIG_COMMON_CLK
omap2_clk_enable_autoidle_all();
#endif
}
#endif

Expand Down Expand Up @@ -509,41 +515,59 @@ void __init omap3_init_late(void)
omap_mux_late_init();
omap2_common_pm_late_init();
omap3_pm_init();
#ifdef CONFIG_COMMON_CLK
omap2_clk_enable_autoidle_all();
#endif
}

void __init omap3430_init_late(void)
{
omap_mux_late_init();
omap2_common_pm_late_init();
omap3_pm_init();
#ifdef CONFIG_COMMON_CLK
omap2_clk_enable_autoidle_all();
#endif
}

void __init omap35xx_init_late(void)
{
omap_mux_late_init();
omap2_common_pm_late_init();
omap3_pm_init();
#ifdef CONFIG_COMMON_CLK
omap2_clk_enable_autoidle_all();
#endif
}

void __init omap3630_init_late(void)
{
omap_mux_late_init();
omap2_common_pm_late_init();
omap3_pm_init();
#ifdef CONFIG_COMMON_CLK
omap2_clk_enable_autoidle_all();
#endif
}

void __init am35xx_init_late(void)
{
omap_mux_late_init();
omap2_common_pm_late_init();
omap3_pm_init();
#ifdef CONFIG_COMMON_CLK
omap2_clk_enable_autoidle_all();
#endif
}

void __init ti81xx_init_late(void)
{
omap_mux_late_init();
omap2_common_pm_late_init();
omap3_pm_init();
#ifdef CONFIG_COMMON_CLK
omap2_clk_enable_autoidle_all();
#endif
}
#endif

Expand Down Expand Up @@ -597,6 +621,9 @@ void __init omap4430_init_late(void)
omap_mux_late_init();
omap2_common_pm_late_init();
omap4_pm_init();
#ifdef CONFIG_COMMON_CLK
omap2_clk_enable_autoidle_all();
#endif
}
#endif

Expand Down

0 comments on commit 35414bb

Please sign in to comment.