diff options
Diffstat (limited to 'arch/arm/mach-omap2/mcbsp.c')
| -rw-r--r-- | arch/arm/mach-omap2/mcbsp.c | 16 | 
1 files changed, 8 insertions, 8 deletions
diff --git a/arch/arm/mach-omap2/mcbsp.c b/arch/arm/mach-omap2/mcbsp.c index 5d8768075dd..b4ac3af1160 100644 --- a/arch/arm/mach-omap2/mcbsp.c +++ b/arch/arm/mach-omap2/mcbsp.c @@ -25,6 +25,7 @@  #include "soc.h"  #include "omap_device.h" +#include "clock.h"  /*   * FIXME: Find a mechanism to enable/disable runtime the McBSP ICLK autoidle. @@ -33,22 +34,18 @@  #include "cm3xxx.h"  #include "cm-regbits-34xx.h" +static struct clk *mcbsp_iclks[5]; +  static int omap3_enable_st_clock(unsigned int id, bool enable)  { -	unsigned int w; -  	/*  	 * Sidetone uses McBSP ICLK - which must not idle when sidetones  	 * are enabled or sidetones start sounding ugly.  	 */ -	w = omap2_cm_read_mod_reg(OMAP3430_PER_MOD, CM_AUTOIDLE);  	if (enable) -		w &= ~(1 << (id - 2)); +		return omap2_clk_deny_idle(mcbsp_iclks[id]);  	else -		w |= 1 << (id - 2); -	omap2_cm_write_mod_reg(w, OMAP3430_PER_MOD, CM_AUTOIDLE); - -	return 0; +		return omap2_clk_allow_idle(mcbsp_iclks[id]);  }  static int __init omap_init_mcbsp(struct omap_hwmod *oh, void *unused) @@ -58,6 +55,7 @@ static int __init omap_init_mcbsp(struct omap_hwmod *oh, void *unused)  	struct omap_hwmod *oh_device[2];  	struct omap_mcbsp_platform_data *pdata = NULL;  	struct platform_device *pdev; +	char clk_name[11];  	sscanf(oh->name, "mcbsp%d", &id); @@ -99,6 +97,8 @@ 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; +		sprintf(clk_name, "mcbsp%d_ick", id); +		mcbsp_iclks[id] = clk_get(NULL, clk_name);  		count++;  	}  	pdev = omap_device_build_ss(name, id, oh_device, count, pdata,  | 
