> > This isn't quite what I was expecting - what I was expecting was more > that the I2S driver would set up a function on startup which would be > called by the ASoC DMA driver from its trigger function. It does look > like a reasonable approach, though. Yes, I understand what you exactly want. I was intend to register the callback function on I2S startup, but finally I found it is not possible because there are two callback functions for the DMA driver: s3c24xx_snd_txctrl() and s3c24xx_snd_rxctrl(), however, there's only one slot for the callback function. So I choose not to setup the callback functions dynamicly, when the task is playback, the callback funtion is s3c24xx_snd_txctrl() and when the task is record, the funtion is s3c24xx_snd_rxctrl(). However, there's another way to archive what you expect: combine the s3c24xx_snd_txctrl() and s3c24xx_snd_rxctrl() into one function. That would be like: struct s3c24xx_snd_ctrl_data { int event; //start or stop int direction; //playback or record }; static void s3c24xx_snd_ctrl(struct s3c24xx_snd_ctrl_data* data) { if(data->direction == SNDRV_PCM_STREAM_PLAYBACK) s3c24xx_snd_txctrl(data->event); eles s3c24xx_snd_rxctrl(data->event); } Then we can register this callback funtion on I2S startup. > > The way you've got things at the minute at least all the other S3C ASoC > drivers will need to be updated to match the change in the DMA driver. > I have posted the DMA driver patch to linux-arm-kernel yesterday: http://lists.arm.linux.org.uk/lurker/message/20090822.153940.e15e3bd7.en.html Hope there is no problem to merge the patch. If the dma patch is accepted, I will post a formal patch here for ASoC S3C24XX. _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel