Lines Matching defs:dma
12 #include <linux/dma-mapping.h>
241 static void msm_stop_dma(struct uart_port *port, struct msm_dma *dma)
247 mapped = dma->count;
248 dma->count = 0;
250 dmaengine_terminate_all(dma->chan);
260 val &= ~dma->enable_bit;
264 dma_unmap_single(dev, dma->phys, mapped, dma->dir);
269 struct msm_dma *dma;
271 dma = &msm_port->tx_dma;
272 if (dma->chan) {
273 msm_stop_dma(&msm_port->uart, dma);
274 dma_release_channel(dma->chan);
277 memset(dma, 0, sizeof(*dma));
279 dma = &msm_port->rx_dma;
280 if (dma->chan) {
281 msm_stop_dma(&msm_port->uart, dma);
282 dma_release_channel(dma->chan);
283 kfree(dma->virt);
286 memset(dma, 0, sizeof(*dma));
293 struct msm_dma *dma;
297 dma = &msm_port->tx_dma;
300 dma->chan = dma_request_chan(dev, "tx");
301 if (IS_ERR(dma->chan))
313 ret = dmaengine_slave_config(dma->chan, &conf);
317 dma->dir = DMA_TO_DEVICE;
320 dma->enable_bit = UARTDM_DMEN_TX_DM_ENABLE;
322 dma->enable_bit = UARTDM_DMEN_TX_BAM_ENABLE;
327 dma_release_channel(dma->chan);
329 memset(dma, 0, sizeof(*dma));
336 struct msm_dma *dma;
340 dma = &msm_port->rx_dma;
343 dma->chan = dma_request_chan(dev, "rx");
344 if (IS_ERR(dma->chan))
349 dma->virt = kzalloc(UARTDM_RX_SIZE, GFP_KERNEL);
350 if (!dma->virt)
360 ret = dmaengine_slave_config(dma->chan, &conf);
364 dma->dir = DMA_FROM_DEVICE;
367 dma->enable_bit = UARTDM_DMEN_RX_DM_ENABLE;
369 dma->enable_bit = UARTDM_DMEN_RX_BAM_ENABLE;
373 kfree(dma->virt);
375 dma_release_channel(dma->chan);
377 memset(dma, 0, sizeof(*dma));
405 struct msm_dma *dma = &msm_port->tx_dma;
408 if (dma->count)
427 struct msm_dma *dma = &msm_port->tx_dma;
437 if (!dma->count)
440 status = dmaengine_tx_status(dma->chan, dma->cookie, &state);
442 dma_unmap_single(port->dev, dma->phys, dma->count, dma->dir);
445 val &= ~dma->enable_bit;
453 count = dma->count - state.residue;
455 dma->count = 0;
476 struct msm_dma *dma = &msm_port->tx_dma;
483 dma->phys = dma_map_single(port->dev, cpu_addr, count, dma->dir);
484 ret = dma_mapping_error(port->dev, dma->phys);
488 dma->desc = dmaengine_prep_slave_single(dma->chan, dma->phys,
492 if (!dma->desc) {
497 dma->desc->callback = msm_complete_tx_dma;
498 dma->desc->callback_param = msm_port;
500 dma->cookie = dmaengine_submit(dma->desc);
501 ret = dma_submit_error(dma->cookie);
512 dma->count = count;
515 val |= dma->enable_bit;
525 dma_async_issue_pending(dma->chan);
528 dma_unmap_single(port->dev, dma->phys, count, dma->dir);
537 struct msm_dma *dma = &msm_port->rx_dma;
545 if (!dma->count)
549 val &= ~dma->enable_bit;
562 dma->count = 0;
564 dma_unmap_single(port->dev, dma->phys, UARTDM_RX_SIZE, dma->dir);
569 if (msm_port->break_detected && dma->virt[i] == 0) {
581 sysrq = uart_handle_sysrq_char(port, dma->virt[i]);
584 tty_insert_flip_char(tport, dma->virt[i], flag);
597 struct msm_dma *dma = &msm_port->rx_dma;
605 if (!dma->chan)
608 dma->phys = dma_map_single(uart->dev, dma->virt,
609 UARTDM_RX_SIZE, dma->dir);
610 ret = dma_mapping_error(uart->dev, dma->phys);
614 dma->desc = dmaengine_prep_slave_single(dma->chan, dma->phys,
617 if (!dma->desc)
620 dma->desc->callback = msm_complete_rx_dma;
621 dma->desc->callback_param = msm_port;
623 dma->cookie = dmaengine_submit(dma->desc);
624 ret = dma_submit_error(dma->cookie);
642 dma->count = UARTDM_RX_SIZE;
644 dma_async_issue_pending(dma->chan);
650 val |= dma->enable_bit;
662 dma_unmap_single(uart->dev, dma->phys, UARTDM_RX_SIZE, dma->dir);
684 struct msm_dma *dma = &msm_port->rx_dma;
689 if (dma->chan)
690 msm_stop_dma(port, dma);
882 struct msm_dma *dma = &msm_port->tx_dma;
925 if (!dma->chan || dma_count < dma_min)
945 struct msm_dma *dma = &msm_port->rx_dma;
960 if (dma->count) {
969 dmaengine_terminate_all(dma->chan);
1260 struct msm_dma *dma = &msm_port->rx_dma;
1266 if (dma->chan) /* Terminate if any */
1267 msm_stop_dma(port, dma);