From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932820AbcE3IYp (ORCPT ); Mon, 30 May 2016 04:24:45 -0400 Received: from bear.ext.ti.com ([198.47.19.11]:33723 "EHLO bear.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932758AbcE3IYn (ORCPT ); Mon, 30 May 2016 04:24:43 -0400 From: Peter Ujfalusi To: , , , , CC: , , , , , Subject: [PATCH v5 3/7] ARM: OMAP3: McBSP: New callback for McBSP2/3 ICLK idle configuration Date: Mon, 30 May 2016 11:23:46 +0300 Message-ID: <20160530082350.24285-4-peter.ujfalusi@ti.com> X-Mailer: git-send-email 2.8.3 In-Reply-To: <20160530082350.24285-1-peter.ujfalusi@ti.com> References: <20160530082350.24285-1-peter.ujfalusi@ti.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org McBSP2/3 module's sidetone module operates using the module's ICLK clock. When the Sidetone is in use the interface clock of the module must not idle. The new callback expects to receive the *clk of the module's ick and not the id number of the McBSP. This will allow us more cleanups and going to simplify the ICLK handling. Signed-off-by: Peter Ujfalusi --- arch/arm/mach-omap2/mcbsp.c | 12 ++++++++++++ include/linux/platform_data/asoc-ti-mcbsp.h | 1 + 2 files changed, 13 insertions(+) diff --git a/arch/arm/mach-omap2/mcbsp.c b/arch/arm/mach-omap2/mcbsp.c index b4ac3af1160c..959cb4cb1062 100644 --- a/arch/arm/mach-omap2/mcbsp.c +++ b/arch/arm/mach-omap2/mcbsp.c @@ -48,6 +48,17 @@ static int omap3_enable_st_clock(unsigned int id, bool enable) return omap2_clk_allow_idle(mcbsp_iclks[id]); } +static int omap3_mcbsp_force_ick_on(struct clk *clk, bool force_on) +{ + if (!clk) + return 0; + + if (force_on) + return omap2_clk_deny_idle(clk); + else + return omap2_clk_allow_idle(clk); +} + static int __init omap_init_mcbsp(struct omap_hwmod *oh, void *unused) { int id, count = 1; @@ -97,6 +108,7 @@ static int __init omap_init_mcbsp(struct omap_hwmod *oh, void *unused) oh_device[1] = omap_hwmod_lookup(( (struct omap_mcbsp_dev_attr *)(oh->dev_attr))->sidetone); pdata->enable_st_clock = omap3_enable_st_clock; + pdata->force_ick_on = omap3_mcbsp_force_ick_on; sprintf(clk_name, "mcbsp%d_ick", id); mcbsp_iclks[id] = clk_get(NULL, clk_name); count++; diff --git a/include/linux/platform_data/asoc-ti-mcbsp.h b/include/linux/platform_data/asoc-ti-mcbsp.h index 3c73c045f8da..73e5e832fa23 100644 --- a/include/linux/platform_data/asoc-ti-mcbsp.h +++ b/include/linux/platform_data/asoc-ti-mcbsp.h @@ -45,6 +45,7 @@ struct omap_mcbsp_platform_data { bool has_wakeup; /* Wakeup capability */ bool has_ccr; /* Transceiver has configuration control registers */ int (*enable_st_clock)(unsigned int, bool); + int (*force_ick_on)(struct clk *clk, bool force_on); }; /** -- 2.8.3