At Mon, 09 Nov 2009 12:36:31 -0700, Troy Kisky wrote: > > Takashi Iwai wrote: > > > > Thanks for a quick test! I'll merge it soon. > > > >> Thanks for spending your time on something you'd rather not. > > > > Well, I'm willing to fix any bugs, of course ;) So I really > > appreciated your report and patch. > > > > But, more important bug still remains -- why single_cmd mode is > > activated. Let's track it down. > > > I have a little more information on that. The RIRB engine is fine > but the CORB engine is stopping at seemingly random times. Usually > CORB has about 7 commands queued when it switches to single_cmd mode. > After the engine dies, even a rmmod/insmod sequence won't revive it. > It seems to require a power down/up. I have noticed a couple of things > that I thought might be related, but testing didn't show much difference. > > 1. The Poulsbo manual says that CORB READ Pointer Reset must be cleared > back to 0 and read back as 0 to verify that the clear completed correctly. At which timing? > 2. azx_corb_send_cmd doesn't compare CORBWP with CORBRP to see if adding > an entry will result in an empty queue. It's because azx_corb_send_cmd is asynchronous. It doesn't wait. That's the purpose of CORB being a ring buffer... > Do you have a suggestion on a more thorough reset? I hate having to reboot > all the time. Try to set codec->bus->sync_write = 1 somewhere in the initialization. This will make the driver to wait and synchronize for each verb response. thanks, Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel