Lines Matching refs:dma
29 struct stm32_timers_dma *dma = p; in stm32_timers_dma_done() local
33 status = dmaengine_tx_status(dma->chan, dma->chan->cookie, &state); in stm32_timers_dma_done()
35 complete(&dma->completion); in stm32_timers_dma_done()
58 struct stm32_timers_dma *dma = &ddata->dma; in stm32_timers_dma_burst_read() local
76 if (!dma->chans[id]) in stm32_timers_dma_burst_read()
78 mutex_lock(&dma->lock); in stm32_timers_dma_burst_read()
81 dma->chan = dma->chans[id]; in stm32_timers_dma_burst_read()
90 config.src_addr = (dma_addr_t)dma->phys_base + TIM_DMAR; in stm32_timers_dma_burst_read()
92 ret = dmaengine_slave_config(dma->chan, &config); in stm32_timers_dma_burst_read()
96 desc = dmaengine_prep_slave_single(dma->chan, dma_buf, len, in stm32_timers_dma_burst_read()
104 desc->callback_param = dma; in stm32_timers_dma_burst_read()
110 reinit_completion(&dma->completion); in stm32_timers_dma_burst_read()
111 dma_async_issue_pending(dma->chan); in stm32_timers_dma_burst_read()
130 err = wait_for_completion_interruptible_timeout(&dma->completion, in stm32_timers_dma_burst_read()
142 dmaengine_terminate_all(dma->chan); in stm32_timers_dma_burst_read()
146 dma->chan = NULL; in stm32_timers_dma_burst_read()
147 mutex_unlock(&dma->lock); in stm32_timers_dma_burst_read()
183 init_completion(&ddata->dma.completion); in stm32_timers_dma_probe()
184 mutex_init(&ddata->dma.lock); in stm32_timers_dma_probe()
189 ddata->dma.chans[i] = dma_request_chan(dev, name); in stm32_timers_dma_probe()
191 ddata->dma.chans[STM32_TIMERS_DMA_UP] = dma_request_chan(dev, "up"); in stm32_timers_dma_probe()
192 ddata->dma.chans[STM32_TIMERS_DMA_TRIG] = dma_request_chan(dev, "trig"); in stm32_timers_dma_probe()
193 ddata->dma.chans[STM32_TIMERS_DMA_COM] = dma_request_chan(dev, "com"); in stm32_timers_dma_probe()
196 if (IS_ERR(ddata->dma.chans[i])) { in stm32_timers_dma_probe()
198 if (PTR_ERR(ddata->dma.chans[i]) != -ENODEV && !ret) in stm32_timers_dma_probe()
199 ret = PTR_ERR(ddata->dma.chans[i]); in stm32_timers_dma_probe()
201 ddata->dma.chans[i] = NULL; in stm32_timers_dma_probe()
214 if (ddata->dma.chans[i]) in stm32_timers_dma_remove()
215 dma_release_channel(ddata->dma.chans[i]); in stm32_timers_dma_remove()
235 ddata->dma.phys_base = res->start; in stm32_timers_probe()