• Home
  • Raw
  • Download

Lines Matching refs:dma

198 	struct fsl_dspi_dma			*dma;  member
250 struct fsl_dspi_dma *dma = dspi->dma; in dspi_tx_dma_callback() local
252 complete(&dma->cmd_tx_complete); in dspi_tx_dma_callback()
258 struct fsl_dspi_dma *dma = dspi->dma; in dspi_rx_dma_callback() local
262 for (i = 0; i < dma->curr_xfer_len; i++) in dspi_rx_dma_callback()
263 dspi_push_rx(dspi, dspi->dma->rx_dma_buf[i]); in dspi_rx_dma_callback()
266 complete(&dma->cmd_rx_complete); in dspi_rx_dma_callback()
272 struct fsl_dspi_dma *dma = dspi->dma; in dspi_next_xfer_dma_submit() local
276 for (i = 0; i < dma->curr_xfer_len; i++) in dspi_next_xfer_dma_submit()
277 dspi->dma->tx_dma_buf[i] = dspi_pop_tx_pushr(dspi); in dspi_next_xfer_dma_submit()
279 dma->tx_desc = dmaengine_prep_slave_single(dma->chan_tx, in dspi_next_xfer_dma_submit()
280 dma->tx_dma_phys, in dspi_next_xfer_dma_submit()
281 dma->curr_xfer_len * in dspi_next_xfer_dma_submit()
285 if (!dma->tx_desc) { in dspi_next_xfer_dma_submit()
290 dma->tx_desc->callback = dspi_tx_dma_callback; in dspi_next_xfer_dma_submit()
291 dma->tx_desc->callback_param = dspi; in dspi_next_xfer_dma_submit()
292 if (dma_submit_error(dmaengine_submit(dma->tx_desc))) { in dspi_next_xfer_dma_submit()
297 dma->rx_desc = dmaengine_prep_slave_single(dma->chan_rx, in dspi_next_xfer_dma_submit()
298 dma->rx_dma_phys, in dspi_next_xfer_dma_submit()
299 dma->curr_xfer_len * in dspi_next_xfer_dma_submit()
303 if (!dma->rx_desc) { in dspi_next_xfer_dma_submit()
308 dma->rx_desc->callback = dspi_rx_dma_callback; in dspi_next_xfer_dma_submit()
309 dma->rx_desc->callback_param = dspi; in dspi_next_xfer_dma_submit()
310 if (dma_submit_error(dmaengine_submit(dma->rx_desc))) { in dspi_next_xfer_dma_submit()
315 reinit_completion(&dspi->dma->cmd_rx_complete); in dspi_next_xfer_dma_submit()
316 reinit_completion(&dspi->dma->cmd_tx_complete); in dspi_next_xfer_dma_submit()
318 dma_async_issue_pending(dma->chan_rx); in dspi_next_xfer_dma_submit()
319 dma_async_issue_pending(dma->chan_tx); in dspi_next_xfer_dma_submit()
322 wait_for_completion_interruptible(&dspi->dma->cmd_rx_complete); in dspi_next_xfer_dma_submit()
326 time_left = wait_for_completion_timeout(&dspi->dma->cmd_tx_complete, in dspi_next_xfer_dma_submit()
330 dmaengine_terminate_all(dma->chan_tx); in dspi_next_xfer_dma_submit()
331 dmaengine_terminate_all(dma->chan_rx); in dspi_next_xfer_dma_submit()
335 time_left = wait_for_completion_timeout(&dspi->dma->cmd_rx_complete, in dspi_next_xfer_dma_submit()
339 dmaengine_terminate_all(dma->chan_tx); in dspi_next_xfer_dma_submit()
340 dmaengine_terminate_all(dma->chan_rx); in dspi_next_xfer_dma_submit()
351 struct fsl_dspi_dma *dma = dspi->dma; in dspi_dma_xfer() local
360 dma->curr_xfer_len = curr_remaining_bytes in dspi_dma_xfer()
362 if (dma->curr_xfer_len > bytes_per_buffer) in dspi_dma_xfer()
363 dma->curr_xfer_len = bytes_per_buffer; in dspi_dma_xfer()
372 dma->curr_xfer_len * dspi->bytes_per_word; in dspi_dma_xfer()
388 struct fsl_dspi_dma *dma; in dspi_request_dma() local
391 dma = devm_kzalloc(dev, sizeof(*dma), GFP_KERNEL); in dspi_request_dma()
392 if (!dma) in dspi_request_dma()
395 dma->chan_rx = dma_request_slave_channel(dev, "rx"); in dspi_request_dma()
396 if (!dma->chan_rx) { in dspi_request_dma()
402 dma->chan_tx = dma_request_slave_channel(dev, "tx"); in dspi_request_dma()
403 if (!dma->chan_tx) { in dspi_request_dma()
409 dma->tx_dma_buf = dma_alloc_coherent(dev, DSPI_DMA_BUFSIZE, in dspi_request_dma()
410 &dma->tx_dma_phys, GFP_KERNEL); in dspi_request_dma()
411 if (!dma->tx_dma_buf) { in dspi_request_dma()
416 dma->rx_dma_buf = dma_alloc_coherent(dev, DSPI_DMA_BUFSIZE, in dspi_request_dma()
417 &dma->rx_dma_phys, GFP_KERNEL); in dspi_request_dma()
418 if (!dma->rx_dma_buf) { in dspi_request_dma()
431 ret = dmaengine_slave_config(dma->chan_rx, &cfg); in dspi_request_dma()
439 ret = dmaengine_slave_config(dma->chan_tx, &cfg); in dspi_request_dma()
446 dspi->dma = dma; in dspi_request_dma()
447 init_completion(&dma->cmd_tx_complete); in dspi_request_dma()
448 init_completion(&dma->cmd_rx_complete); in dspi_request_dma()
454 dma->rx_dma_buf, dma->rx_dma_phys); in dspi_request_dma()
457 dma->tx_dma_buf, dma->tx_dma_phys); in dspi_request_dma()
459 dma_release_channel(dma->chan_tx); in dspi_request_dma()
461 dma_release_channel(dma->chan_rx); in dspi_request_dma()
463 devm_kfree(dev, dma); in dspi_request_dma()
464 dspi->dma = NULL; in dspi_request_dma()
471 struct fsl_dspi_dma *dma = dspi->dma; in dspi_release_dma() local
474 if (!dma) in dspi_release_dma()
477 if (dma->chan_tx) { in dspi_release_dma()
478 dma_unmap_single(dev, dma->tx_dma_phys, in dspi_release_dma()
480 dma_release_channel(dma->chan_tx); in dspi_release_dma()
483 if (dma->chan_rx) { in dspi_release_dma()
484 dma_unmap_single(dev, dma->rx_dma_phys, in dspi_release_dma()
486 dma_release_channel(dma->chan_rx); in dspi_release_dma()