void pcm_play_dma_stop(void) { is_playing = false; dma_disable_channel(0); /* Ensure byte counts read back 0 */ DMAC_CH_SRC_ADDR(0) = 0; dma_start_addr = NULL; dma_start_size = 0; dma_rem_size = 0; dma_release(); #ifdef HAVE_RECORDING if (!is_recording) bitclr32(&CGU_AUDIO, (1<<11)); #endif play_callback_pending = false; }
/** * sw_dma_release - free a dma channel * @dma_hdl: dma handle * * Returns 0 if sucess, otherwise failed */ u32 sw_dma_release(dma_hdl_t dma_hdl) { BUG_ON(unlikely(!dma_handle_is_valid(dma_hdl))); dma_release(dma_hdl); return 0; }