• Takashi Iwai's avatar
    ALSA: pcm: Suspend streams globally via device type PM ops · 3d21ef0b
    Takashi Iwai authored
    Until now we rely on each driver calling snd_pcm_suspend*() explicitly
    at its own PM handling.  However, this can be done far more easily by
    setting the PM ops to each actual snd_pcm device object.
    
    This patch adds the device_type object for PCM stream and assigns to
    each PCM stream object.  The type contains only the PM ops for system
    suspend; we don't need to deal with the resume in general.
    
    The suspend hook simply calls snd_pcm_suspend_all() for the given PCM
    streams.  This implies that the PM order is correctly put, i.e. PCM is
    suspended before the main (or codec) driver, which should be true in
    general.  If a special ordering is needed, you'd need to adjust the
    device PM order manually later.
    
    This patch introduces a new flag, snd_pcm.no_device_suspend, too.
    With this flag set, the PCM device object won't invoke
    snd_pcm_suspend_all() by itself.  This is needed for ASoC who wants to
    manage the PM call orders in its serialized way, and the flag is set
    in soc_new_pcm() as default.
    
    For the non-ASoC world, we can get rid of the manual snd_pcm_suspend
    calls.  This will be done in the later patches.
    Reviewed-by: default avatarJaroslav Kysela <perex@perex.cz>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    3d21ef0b
pcm.h 47.9 KB