From patchwork Wed Mar 18 11:41:25 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: ext-eero.nurkkala@nokia.com X-Patchwork-Id: 12822 X-Patchwork-Delegate: tony@atomide.com Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n2IBjk23002787 for ; Wed, 18 Mar 2009 11:45:46 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750979AbZCRLpq (ORCPT ); Wed, 18 Mar 2009 07:45:46 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754693AbZCRLpq (ORCPT ); Wed, 18 Mar 2009 07:45:46 -0400 Received: from smtp.nokia.com ([192.100.105.134]:54914 "EHLO mgw-mx09.nokia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750979AbZCRLpp (ORCPT ); Wed, 18 Mar 2009 07:45:45 -0400 Received: from esebh106.NOE.Nokia.com (esebh106.ntc.nokia.com [172.21.138.213]) by mgw-mx09.nokia.com (Switch-3.2.6/Switch-3.2.6) with ESMTP id n2IBjPpd014508 for ; Wed, 18 Mar 2009 06:45:43 -0500 Received: from vaebh104.NOE.Nokia.com ([10.160.244.30]) by esebh106.NOE.Nokia.com with Microsoft SMTPSVC(6.0.3790.3959); Wed, 18 Mar 2009 13:44:53 +0200 Received: from mgw-int02.ntc.nokia.com ([172.21.143.97]) by vaebh104.NOE.Nokia.com over TLS secured channel with Microsoft SMTPSVC(6.0.3790.3959); Wed, 18 Mar 2009 13:44:53 +0200 Received: from localhost.localdomain (ouped118146.nmp.nokia.com [172.23.118.146]) by mgw-int02.ntc.nokia.com (Switch-3.2.5/Switch-3.2.5) with ESMTP id n2IBiqTB011015; Wed, 18 Mar 2009 13:44:52 +0200 From: ext-eero.nurkkala@nokia.com To: linux-omap@vger.kernel.org Cc: Eero Nurkkala Subject: [PATCHv2] OMAP: McBSP: Do not enable or disable clocks on failed path Date: Wed, 18 Mar 2009 13:41:25 +0200 Message-Id: <1237376485324-git-send-email-ext-eero.nurkkala@nokia.com> X-Mailer: git-send-email 1.5.2 X-OriginalArrivalTime: 18 Mar 2009 11:44:53.0496 (UTC) FILETIME=[F3EF9780:01C9A7BE] X-Nokia-AV: Clean Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org From: Eero Nurkkala 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 Acked-by: Jarkko Nikula --- arch/arm/plat-omap/mcbsp.c | 14 ++++++++------ 1 files changed, 8 insertions(+), 6 deletions(-) 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);