On Sun, 2006-10-29 at 15:19 +1100, Paul Mackerras wrote: > case SNDRV_PCM_TRIGGER_STOP: > case SNDRV_PCM_TRIGGER_SUSPEND: > if (!pi->dbdma_ring.running) { > result = -EALREADY; > goto out_unlock; > } > + pi->dbdma_ring.running = 0; > > - /* turn off all relevant bits */ > - out_le32(&pi->dbdma->control, > - (RUN | WAKE | FLUSH | PAUSE) << 16); > - { > - /* FIXME: move to own function */ > - int timeout = 5000; > - while ((in_le32(&pi->dbdma->status) & RUN) > - && --timeout > 0) > - udelay(1); > - if (!timeout) > - printk(KERN_ERR > - "i2sbus: timed out turning " > - "off dbdma engine!\n"); > - } > + /* Set the S0 bit to make the DMA branch to the stop cmd */ > + out_le32(&pi->dbdma->control, (1 << 16) | 1); > + pi->dbdma_ring.stopping = 1; Something that just crossed my mind because Ben was complaining about suspend/resume breakage... In the suspend case we actually have to make sure to have DMA stopped, no? johannes ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.sourceforge.net/lists/listinfo/alsa-devel