6 Jul
2007
6 Jul
'07
9:46 a.m.
On 06/07/07, Takashi Iwai tiwai@suse.de wrote:
At Thu, 5 Jul 2007 23:07:44 +0100, Adrian McMenamin wrote:
@@ -402,17 +396,10 @@ static int snd_aicapcm_pcm_trigger(struct snd_pcm_substream *substream, int cmd) {
struct snd_card_aica *dreamcastcard; switch (cmd) { case SNDRV_PCM_TRIGGER_START: spu_begin_dma(substream); break;
case SNDRV_PCM_TRIGGER_STOP:
dreamcastcard = substream->pcm->private_data;
if (dreamcastcard->timer.data)
del_timer(&dreamcastcard->timer);
aica_chn_halt();
break; default: return -EINVAL; }
Is this a correct change? Then you'd have no control for stopping the stream.
The shutdown is all done in the close() now, partly because snd_aicapcm_pcm_trigger cannot sleep and close() can. Is there a pressing reason to put code in snd_aicapcm_pcm_trigger?