Merge tag 'omap-for-v3.13/fixes-for-merge-window-take2' of git://git.kernel.org/pub...
[deliverable/linux.git] / arch / arm / mach-omap2 / mcbsp.c
index 5d8768075dd977e4b92914c8141e9b7265588fee..b4ac3af1160c79b0ecc6c65391cbb6bab3ae6fd9 100644 (file)
@@ -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.
 #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,
This page took 0.048077 seconds and 5 git commands to generate.