Lines Matching defs:dma

12 #include <linux/dma/qcom_adm.h>
13 #include <linux/dma-mapping.h>
245 static void msm_stop_dma(struct uart_port *port, struct msm_dma *dma)
251 mapped = dma->count;
252 dma->count = 0;
254 dmaengine_terminate_all(dma->chan);
264 val &= ~dma->enable_bit;
268 dma_unmap_single(dev, dma->phys, mapped, dma->dir);
273 struct msm_dma *dma;
275 dma = &msm_port->tx_dma;
276 if (dma->chan) {
277 msm_stop_dma(&msm_port->uart, dma);
278 dma_release_channel(dma->chan);
281 memset(dma, 0, sizeof(*dma));
283 dma = &msm_port->rx_dma;
284 if (dma->chan) {
285 msm_stop_dma(&msm_port->uart, dma);
286 dma_release_channel(dma->chan);
287 kfree(dma->virt);
290 memset(dma, 0, sizeof(*dma));
298 struct msm_dma *dma;
302 dma = &msm_port->tx_dma;
305 dma->chan = dma_request_chan(dev, "tx");
306 if (IS_ERR(dma->chan))
322 ret = dmaengine_slave_config(dma->chan, &conf);
326 dma->dir = DMA_TO_DEVICE;
329 dma->enable_bit = UARTDM_DMEN_TX_DM_ENABLE;
331 dma->enable_bit = UARTDM_DMEN_TX_BAM_ENABLE;
336 dma_release_channel(dma->chan);
338 memset(dma, 0, sizeof(*dma));
346 struct msm_dma *dma;
350 dma = &msm_port->rx_dma;
353 dma->chan = dma_request_chan(dev, "rx");
354 if (IS_ERR(dma->chan))
359 dma->virt = kzalloc(UARTDM_RX_SIZE, GFP_KERNEL);
360 if (!dma->virt)
374 ret = dmaengine_slave_config(dma->chan, &conf);
378 dma->dir = DMA_FROM_DEVICE;
381 dma->enable_bit = UARTDM_DMEN_RX_DM_ENABLE;
383 dma->enable_bit = UARTDM_DMEN_RX_BAM_ENABLE;
387 kfree(dma->virt);
389 dma_release_channel(dma->chan);
391 memset(dma, 0, sizeof(*dma));
419 struct msm_dma *dma = &msm_port->tx_dma;
422 if (dma->count)
441 struct msm_dma *dma = &msm_port->tx_dma;
450 if (!dma->count)
453 dmaengine_tx_status(dma->chan, dma->cookie, &state);
455 dma_unmap_single(port->dev, dma->phys, dma->count, dma->dir);
458 val &= ~dma->enable_bit;
466 count = dma->count - state.residue;
468 dma->count = 0;
486 struct msm_dma *dma = &msm_port->tx_dma;
493 dma->phys = dma_map_single(port->dev, cpu_addr, count, dma->dir);
494 ret = dma_mapping_error(port->dev, dma->phys);
498 dma->desc = dmaengine_prep_slave_single(dma->chan, dma->phys,
502 if (!dma->desc) {
507 dma->desc->callback = msm_complete_tx_dma;
508 dma->desc->callback_param = msm_port;
510 dma->cookie = dmaengine_submit(dma->desc);
511 ret = dma_submit_error(dma->cookie);
522 dma->count = count;
525 val |= dma->enable_bit;
535 dma_async_issue_pending(dma->chan);
538 dma_unmap_single(port->dev, dma->phys, count, dma->dir);
547 struct msm_dma *dma = &msm_port->rx_dma;
555 if (!dma->count)
559 val &= ~dma->enable_bit;
572 dma->count = 0;
574 dma_unmap_single(port->dev, dma->phys, UARTDM_RX_SIZE, dma->dir);
579 if (msm_port->break_detected && dma->virt[i] == 0) {
591 sysrq = uart_handle_sysrq_char(port, dma->virt[i]);
594 tty_insert_flip_char(tport, dma->virt[i], flag);
607 struct msm_dma *dma = &msm_port->rx_dma;
615 if (!dma->chan)
618 dma->phys = dma_map_single(uart->dev, dma->virt,
619 UARTDM_RX_SIZE, dma->dir);
620 ret = dma_mapping_error(uart->dev, dma->phys);
624 dma->desc = dmaengine_prep_slave_single(dma->chan, dma->phys,
627 if (!dma->desc)
630 dma->desc->callback = msm_complete_rx_dma;
631 dma->desc->callback_param = msm_port;
633 dma->cookie = dmaengine_submit(dma->desc);
634 ret = dma_submit_error(dma->cookie);
652 dma->count = UARTDM_RX_SIZE;
654 dma_async_issue_pending(dma->chan);
660 val |= dma->enable_bit;
672 dma_unmap_single(uart->dev, dma->phys, UARTDM_RX_SIZE, dma->dir);
694 struct msm_dma *dma = &msm_port->rx_dma;
699 if (dma->chan)
700 msm_stop_dma(port, dma);
886 struct msm_dma *dma = &msm_port->tx_dma;
929 if (!dma->chan || dma_count < dma_min)
949 struct msm_dma *dma = &msm_port->rx_dma;
964 if (dma->count) {
973 dmaengine_terminate_all(dma->chan);
1265 struct msm_dma *dma = &msm_port->rx_dma;
1271 if (dma->chan) /* Terminate if any */
1272 msm_stop_dma(port, dma);