]> pilppa.com Git - linux-2.6-omap-h63xx.git/commitdiff
[PATCH 2/3] aic23: omap-alsa-aic23.c clockrate config fix
authorlamikr <lamikr@cc.jyu.fi>
Fri, 26 May 2006 23:10:16 +0000 (16:10 -0700)
committerTony Lindgren <tony@atomide.com>
Fri, 26 May 2006 23:10:16 +0000 (16:10 -0700)
Do not try to change the clockrate if it is already ok. This fixes the
driver for omap-innovator which uses fixed clockrate.

Signed-off-by: Mika Laitio <lamikr@cc.jyu.fi>
Signed-off-by: Tony Lindgren <tony@atomide.com>
sound/arm/omap/omap-alsa-aic23.c

index 18b7395a03c3acbdcbf14729d9905856fc84b017..293c2d467c472f303a8700dfb0d5cb73a9b49184 100644 (file)
@@ -212,6 +212,8 @@ void aic23_clock_setup(void)
  */
 int aic23_clock_on(void)
 {
+       uint    curRate;
+
        if (clk_get_usecount(aic23_mclk) > 0) {
                /* MCLK is already in use */
                printk(KERN_WARNING
@@ -219,13 +221,14 @@ int aic23_clock_on(void)
                       (uint) clk_get_rate(aic23_mclk),
                       CODEC_CLOCK);
        }
-       
-       if (clk_set_rate(aic23_mclk, CODEC_CLOCK)) {
-               printk(KERN_ERR
-                      "Cannot set MCLK for AIC23 CODEC\n");
-               return -ECANCELED;
+       curRate = (uint)clk_get_rate(aic23_mclk);
+       if (curRate != CODEC_CLOCK) {
+               if (clk_set_rate(aic23_mclk, CODEC_CLOCK)) {
+                       printk(KERN_ERR
+                              "Cannot set MCLK for AIC23 CODEC\n");
+                       return -ECANCELED;
+               }
        }
-
        clk_enable(aic23_mclk);
 
        printk(KERN_DEBUG
@@ -239,6 +242,7 @@ int aic23_clock_on(void)
                          ~ADC_OFF & ~MIC_OFF & ~LINE_OFF);     
        return 0;
 }
+
 /*
  * Do some sanity check, turn clock off and then turn
  *  codec audio off