static int snd_card_dummy_pcm_trigger(struct snd_pcm_substream *substream, int cmd) { struct snd_pcm_runtime *runtime = substream->runtime; struct snd_dummy_pcm *dpcm = runtime->private_data; int err = 0; spin_lock(&dpcm->lock); switch (cmd) { case SNDRV_PCM_TRIGGER_START: case SNDRV_PCM_TRIGGER_RESUME: snd_card_dummy_pcm_timer_start(dpcm); break; case SNDRV_PCM_TRIGGER_STOP: case SNDRV_PCM_TRIGGER_SUSPEND: snd_card_dummy_pcm_timer_stop(dpcm); break; default: err = -EINVAL; break; } spin_unlock(&dpcm->lock); return 0; }
static int snd_card_dummy_capture_close(struct snd_pcm_substream *substream) { snd_card_dummy_pcm_timer_stop(substream->private_data); return 0; }