[alsa-devel] cs46xx thinkpad resume fix - #bug1946

Takashi Iwai tiwai at suse.de
Thu Jul 19 11:34:27 CEST 2007


At Wed, 18 Jul 2007 00:26:42 +0200,
Pavel Kysilka wrote:
> 
> On Tue Jul 17, 2007 at 12:50:21PM +0200, Takashi Iwai wrote:
> 
>   Hi Takashi,
> 
> good news below.
> 
> > At Mon, 16 Jul 2007 11:24:45 +0200,
> > I wrote:
> > > 
> > > 
> <cut/>
> > > Oh, thanks for hunting this long-standing bug!
> > > 
> > > I think, however, it cannot be applied as it is.
> > > First, snd_cs46xx_start_dsp() calls cs46xx_dsp_load_module(), and the
> > > latter function isn't designed for the PM resume.  We'd need a special
> > > resume function just for clearing area & reloading the dsp images
> > > according to the already loaded DSP modules.
> > > 
> > > Second, __devinit prefix for snd_cs46xx_start_dsp() has to be removed
> > > if it's called from the PM handler.
> > 
> > Looking at the code more deeply, I suspect whether it really works
> > when CONFIG_SND_CS46XX_NEW_DSP=y.  snd_cs46xx_start_dsp() involves
> > with many calls that add SCBs and co, which will eventually overflow.
> > 
> > I made a patch blindly to do the resume work in a saner way, but of
> > course, it's totally untested.  Could you check whether it works?
> 
> Patch works perfectly.
> 
> Tested option:
> - kernel compiled with and without CONFIG_SND_CS46XX_NEW_DSP=y
> - play pcm stream, suspend, resume and pcm stream is playing
> - play pcm stream, stop playing pcm stream, suspend, resume and play pcm stream
> 
> If you need log from resume from notebook, I'll send you this log.

Thanks for testing!  That's enough, so far.  I applied the patch to HG
tree now.


Takashi


More information about the Alsa-devel mailing list