/*
* CAUTION: Called by ALSA interrupt handler
*/
void pl08x_terminate_all(struct dma_chan *chan)
{
struct pl08x_dma_chan *local_chan =
container_of(chan, struct pl08x_dma_chan, chan);
int pl08x_chan_num = local_chan->chan_id;
if (local_chan->slave->dev) {
pl08x_disable_dmac_chan(pl08x_chan_num);
/*
* Allow slaves to activate signals
* concurrent to the DMAC enable
*/
if (local_chan->at) {
if (local_chan->at->tx.callback) {
((struct pl08x_callback_param *)
local_chan->at->tx.callback_param)
->act = PL08X_SIGNAL_STOP;
local_chan->at->tx.callback(
local_chan->at->tx.callback_param);
}
}
}
}
| 结束所有的通道 |