From: lamikr Date: Fri, 26 May 2006 23:10:16 +0000 (-0700) Subject: [PATCH 2/3] aic23: omap-alsa-aic23.c clockrate config fix X-Git-Tag: v2.6.17-omap1~49 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=eada53176e713bd3cce36d1901b449aed965ae05;p=linux-2.6-omap-h63xx.git [PATCH 2/3] aic23: omap-alsa-aic23.c clockrate config fix 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 Signed-off-by: Tony Lindgren --- diff --git a/sound/arm/omap/omap-alsa-aic23.c b/sound/arm/omap/omap-alsa-aic23.c index 18b7395a03c..293c2d467c4 100644 --- a/sound/arm/omap/omap-alsa-aic23.c +++ b/sound/arm/omap/omap-alsa-aic23.c @@ -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