Hi Balbi, That clk_enable() is for sys_clkout, which is the MCLK for the CODEC. I am following n810.c file itself. But I m talking about omap_mcbsp_request(0), which will only be called when we do an aplay, by the platform driver of the omap(sound/soc/omap/ompa-mcbsp.c). But before this the unused clocks are switched off by clock.c in arch/arm/mach-omap1/clocks.c. And when i call the omap_mcbsp_request(), the entire system hangs... Arun On Wed, Sep 3, 2008 at 7:39 PM, Felipe Balbi <felipe.balbi@xxxxxxxxx> wrote: > On Wed, Sep 03, 2008 at 07:32:51PM +0530, ext Arun KS wrote: >> Hi all, >> >> I am trying to write an ASOC driver for tlv320aic23 on 5912osk. >> When i do an aplay, the system is hanging. >> Later i found that it is hanging when mcbsp1 is requested in funcion >> omap_mcbsp_dai_startup in file sound/soc/omap/omap-mcbsp.c >> >> The reason is that the unused clocks are switched off during booting. >> >> So i decided to disable the option (reset unused clocks during boot) from >> system type -> TI OMAP Implementations in menuconfig. >> >> But still its not working. >> >> When i give omap_mcbsp_request(0) in init function of my machine >> driver, i m able >> to get the requested mcbsp. > > Take a look at sound/soc/omap/n810.c, under n810_startup() it calls > clk_enable(). > > Maybe you should do the same. But since tlv320aic23 is used by more than > one machine you could make the clk_enable be board specific. > > But one step at a time, take a look here: > > 71 static int n810_startup(struct snd_pcm_substream *substream) > 72 { > 73 struct snd_soc_pcm_runtime *rtd = substream->private_data; > 74 struct snd_soc_codec *codec = rtd->socdev->codec; > 75 > 76 n810_ext_control(codec); > 77 return clk_enable(sys_clkout2); > 78 } > > -- > balbi > -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html