Message ID | 1237376485324-git-send-email-ext-eero.nurkkala@nokia.com (mailing list archive) |
---|---|
State | Accepted, archived |
Commit | 58cf2f1425abfd3a449f9fe985e48be2d2555022 |
Delegated to: | Tony Lindgren |
Headers | show |
On Wed, 18 Mar 2009 12:41:25 +0100 "Nurkkala Eero.An (EXT-Offcode/Oulu)" <ext-Eero.Nurkkala@nokia.com> wrote: > From: Eero Nurkkala <ext-eero.nurkkala@nokia.com> > > McBSP clocks are being double enabled in the event the > McBSP is already active. Also, they are unnecessarily > disabled when there's no active McBSP in use. Fix this > phenomenom by enabling and disabling the clocks at the > proper location. > > Signed-off-by: Eero Nurkkala <ext-eero.nurkkala@nokia.com> > --- > arch/arm/plat-omap/mcbsp.c | 14 ++++++++------ > 1 files changed, 8 insertions(+), 6 deletions(-) > Acked-by: Jarkko Nikula <jarkko.nikula@nokia.com> -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
This patch has been applied to the linux-omap by youw fwiendly patch wobot. Commit: 58cf2f1425abfd3a449f9fe985e48be2d2555022 PatchWorks http://patchwork.kernel.org/patch/12822/ Git http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=commit;h=58cf2f1425abfd3a449f9fe985e48be2d2555022 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/arm/plat-omap/mcbsp.c b/arch/arm/plat-omap/mcbsp.c index 02b3f2d..e2e8b76 100644 --- a/arch/arm/plat-omap/mcbsp.c +++ b/arch/arm/plat-omap/mcbsp.c @@ -226,9 +226,6 @@ int omap_mcbsp_request(unsigned int id) if (mcbsp->pdata && mcbsp->pdata->ops && mcbsp->pdata->ops->request) mcbsp->pdata->ops->request(id); - for (i = 0; i < mcbsp->num_clks; i++) - clk_enable(mcbsp->clks[i]); - spin_lock(&mcbsp->lock); if (!mcbsp->free) { dev_err(mcbsp->dev, "McBSP%d is currently in use\n", @@ -240,6 +237,9 @@ int omap_mcbsp_request(unsigned int id) mcbsp->free = 0; spin_unlock(&mcbsp->lock); + for (i = 0; i < mcbsp->num_clks; i++) + clk_enable(mcbsp->clks[i]); + /* * Enable wakup behavior, smart idle and all wakeups * REVISIT: some wakeups may be unnecessary @@ -319,9 +319,6 @@ void omap_mcbsp_free(unsigned int id) if (mcbsp->pdata && mcbsp->pdata->ops && mcbsp->pdata->ops->free) mcbsp->pdata->ops->free(id); - for (i = mcbsp->num_clks - 1; i >= 0; i--) - clk_disable(mcbsp->clks[i]); - spin_lock(&mcbsp->lock); if (mcbsp->free) { dev_err(mcbsp->dev, "McBSP%d was not reserved\n", @@ -329,7 +326,12 @@ void omap_mcbsp_free(unsigned int id) spin_unlock(&mcbsp->lock); return; } + spin_unlock(&mcbsp->lock); + for (i = mcbsp->num_clks - 1; i >= 0; i--) + clk_disable(mcbsp->clks[i]); + + spin_lock(&mcbsp->lock); mcbsp->free = 1; spin_unlock(&mcbsp->lock);