On Fri, Mar 27, 2009 at 05:49:33PM +0100, Daniel Glöckner wrote:
s6000_i2s_start and s6000_i2s_stop are called in s6000_pcm_trigger and s6000_i2s_int_sources is called in the interrupt handler.
s6000_i2s_start can't be called from the dai's trigger callback on playback as the data sheet is very explicit about the order of enabling dma and i2s.
s6000_i2s_stop is called there for consistency. The order on disabling is uncritical.
Are these two drivers really separate? The reason for splitting out the DMA driver in the normal case is that it is common for CPUs to be able to use the same DMA driver for multiple interfaces - if that's not the case then don't feel obligated to split them up too much.
Also note that you can pass data from the I2S driver to the PCM driver via the dma_data pointer - if you need to pass a little vtable through there then that's another option.