diff options
author | Paul Walmsley <paul@pwsan.com> | 2012-05-02 02:12:38 -0600 |
---|---|---|
committer | Paul Walmsley <paul@pwsan.com> | 2012-05-02 02:12:38 -0600 |
commit | ae4f3d4ad0389b368893bb13166f97d00464e92c (patch) | |
tree | 2db345643a4c04de84d22c99dc92a8393f845515 | |
parent | f459d2e7870f6833cd9bec3bcf0bcb3d5078eb07 (diff) | |
download | omap-devel-hdq_experimental_idle_fix_3.5.tar.gz |
Do not automatically enable interface clock autoidle on HDQ_ICLK.hdq_experimental_idle_fix_3.5
Require the hwmod layer to use software gating on HDQ_ICLK.
This is because the CM FSM that handles HDQ_FCLK appears to not be working
as expected. This patch is experimental and for bug-testing purposes only.
-rw-r--r-- | arch/arm/mach-omap2/clock3xxx_data.c | 1 | ||||
-rw-r--r-- | arch/arm/plat-omap/clock.c | 4 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/plat/clock.h | 1 |
3 files changed, 5 insertions, 1 deletions
diff --git a/arch/arm/mach-omap2/clock3xxx_data.c b/arch/arm/mach-omap2/clock3xxx_data.c index 8fe7d709afa6fa..47593d66406f7e 100644 --- a/arch/arm/mach-omap2/clock3xxx_data.c +++ b/arch/arm/mach-omap2/clock3xxx_data.c @@ -1889,6 +1889,7 @@ static struct clk hdq_ick = { .enable_bit = OMAP3430_EN_HDQ_SHIFT, .clkdm_name = "core_l4_clkdm", .recalc = &followparent_recalc, + .flags = SWSUP_ICLK_IDLE, }; static struct clk mcspi4_ick = { diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c index 8506cbb7fea4a6..47aee48e97278b 100644 --- a/arch/arm/plat-omap/clock.c +++ b/arch/arm/plat-omap/clock.c @@ -347,7 +347,9 @@ int omap_clk_enable_autoidle_all(void) spin_lock_irqsave(&clockfw_lock, flags); list_for_each_entry(c, &clocks, node) - if (c->ops->allow_idle) + if (c->flags & SWSUP_ICLK_IDLE && c->ops->deny_idle) + c->ops->deny_idle(c); + else if (c->ops->allow_idle) c->ops->allow_idle(c); spin_unlock_irqrestore(&clockfw_lock, flags); diff --git a/arch/arm/plat-omap/include/plat/clock.h b/arch/arm/plat-omap/include/plat/clock.h index 240a7b9fd946ed..f4f6e7b6323eb5 100644 --- a/arch/arm/plat-omap/include/plat/clock.h +++ b/arch/arm/plat-omap/include/plat/clock.h @@ -191,6 +191,7 @@ struct dpll_data { #define ENABLE_ON_INIT (1 << 3) /* Enable upon framework init */ #define INVERT_ENABLE (1 << 4) /* 0 enables, 1 disables */ #define CLOCK_CLKOUTX2 (1 << 5) +#define SWSUP_ICLK_IDLE (1 << 6) /** * struct clk - OMAP struct clk |