Sorry for my blunders. driver resume () is not calling snd_pcm_resume(). Suspend only calls snd_pcm_suspend (). I am writing an ASoC driver, where i can place these calls snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); snd_pcm_suspend_all(chip->pcm[i]); and snd_power_change_state(card, SNDRV_CTL_POWER_D0); In soc-core.c ? On 5/30/07, Takashi Iwai <tiwai@xxxxxxx> wrote: > At Wed, 30 May 2007 15:36:33 +0530, > Nobin Mathew wrote: > > > > In suspend () the application is dead (freezed state) before ALSA > > driver suspend() is called, so in this there is no way application > > will get to know the SUSPENDED state of driver. > > > > > > In resume () ALSA driver resume () (changes the state of driver) is > > called first and then applications are activated. > > > > So how the application will get to know the SUSPENDED state of driver > > through syscall.No syscall () from ALSA apps(freezed) is happening > > during the SUSPENDED duration of ALSA driver. > > Your app shall issue syscalls sooner or later, otherwise you'll have > no I/O :) > > The concept of the (PCM) resume in ALSA is a passive way. The driver > does _NOT_ resume streams by itself. It waits until the app requests > to resume. This is designed so because usually the hardware cannot be > recovered in 100% identical state as before, and often the app needs > to reset something for the proper restart. > > So, when resume callback is executed and the whole kernel PM thing is > finished, the user-process restarts again. Then it issues syscalls, > and gets to know to know that the stream is in the suspended state. > Now it calls alsa-lib snd_pcm_resume() function which issues RESUME > ioctl to restart. > > > Takashi > > > > > > > > > On 5/30/07, Takashi Iwai <tiwai@xxxxxxx> wrote: > > > At Wed, 30 May 2007 11:52:31 +0530, > > > Nobin Mathew wrote: > > > > > > > > I am having a doubt regarding ALSA power management. > > > > > > > > My understanding of APM suspend() is like this. > > > > > > > > Freeze the ALSA apps > > > > > > > > Call ALSA driver suspend () > > > > > > > > in the ALSA suspend() function it saves the current state of substream > > > > and changes the state of substream to SUSPENDED. > > > > > > > > My understanding of APM resume() is like this > > > > > > > > Call ALSA driver resume () > > > > > > > > Activate the ALSA apps > > > > > > > > In ALSA resume function it restores the saved state of substream. > > > > > > > > > > > > So my question is when ALSA app will get to know the SUSPENDED state > > > > of substream.??? > > > > > > When issuing any syscalls. Then you'll get ESTRPIPE error, which > > > indicitaes the stream is in the SUSPEND state. > > > > > > > > > Takashi > > > > > > _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel