Lines Matching refs:atchan

257 #define at_xdmac_chan_read(atchan, reg) readl_relaxed((atchan)->ch_regs + (reg))  argument
258 #define at_xdmac_chan_write(atchan, reg, value) writel_relaxed((value), (atchan)->ch_regs + (reg)) argument
280 static inline int at_xdmac_chan_is_cyclic(struct at_xdmac_chan *atchan) in at_xdmac_chan_is_cyclic() argument
282 return test_bit(AT_XDMAC_CHAN_IS_CYCLIC, &atchan->status); in at_xdmac_chan_is_cyclic()
285 static inline int at_xdmac_chan_is_paused(struct at_xdmac_chan *atchan) in at_xdmac_chan_is_paused() argument
287 return test_bit(AT_XDMAC_CHAN_IS_PAUSED, &atchan->status); in at_xdmac_chan_is_paused()
317 static bool at_xdmac_chan_is_enabled(struct at_xdmac_chan *atchan) in at_xdmac_chan_is_enabled() argument
319 return at_xdmac_chan_read(atchan, AT_XDMAC_GS) & atchan->mask; in at_xdmac_chan_is_enabled()
334 static void at_xdmac_start_xfer(struct at_xdmac_chan *atchan, in at_xdmac_start_xfer() argument
337 struct at_xdmac *atxdmac = to_at_xdmac(atchan->chan.device); in at_xdmac_start_xfer()
340 dev_vdbg(chan2dev(&atchan->chan), "%s: desc 0x%p\n", __func__, first); in at_xdmac_start_xfer()
347 | AT_XDMAC_CNDA_NDAIF(atchan->memif); in at_xdmac_start_xfer()
348 at_xdmac_chan_write(atchan, AT_XDMAC_CNDA, reg); in at_xdmac_start_xfer()
355 if (at_xdmac_chan_is_cyclic(atchan)) in at_xdmac_start_xfer()
368 at_xdmac_chan_write(atchan, AT_XDMAC_CC, first->lld.mbr_cfg); in at_xdmac_start_xfer()
373 at_xdmac_chan_write(atchan, AT_XDMAC_CNDC, reg); in at_xdmac_start_xfer()
375 dev_vdbg(chan2dev(&atchan->chan), in at_xdmac_start_xfer()
377 __func__, at_xdmac_chan_read(atchan, AT_XDMAC_CC), in at_xdmac_start_xfer()
378 at_xdmac_chan_read(atchan, AT_XDMAC_CNDA), in at_xdmac_start_xfer()
379 at_xdmac_chan_read(atchan, AT_XDMAC_CNDC), in at_xdmac_start_xfer()
380 at_xdmac_chan_read(atchan, AT_XDMAC_CSA), in at_xdmac_start_xfer()
381 at_xdmac_chan_read(atchan, AT_XDMAC_CDA), in at_xdmac_start_xfer()
382 at_xdmac_chan_read(atchan, AT_XDMAC_CUBC)); in at_xdmac_start_xfer()
384 at_xdmac_chan_write(atchan, AT_XDMAC_CID, 0xffffffff); in at_xdmac_start_xfer()
396 if (at_xdmac_chan_is_cyclic(atchan)) in at_xdmac_start_xfer()
397 at_xdmac_chan_write(atchan, AT_XDMAC_CIE, in at_xdmac_start_xfer()
400 at_xdmac_chan_write(atchan, AT_XDMAC_CIE, in at_xdmac_start_xfer()
402 at_xdmac_write(atxdmac, AT_XDMAC_GIE, atchan->mask); in at_xdmac_start_xfer()
403 dev_vdbg(chan2dev(&atchan->chan), in at_xdmac_start_xfer()
404 "%s: enable channel (0x%08x)\n", __func__, atchan->mask); in at_xdmac_start_xfer()
406 at_xdmac_write(atxdmac, AT_XDMAC_GE, atchan->mask); in at_xdmac_start_xfer()
408 dev_vdbg(chan2dev(&atchan->chan), in at_xdmac_start_xfer()
410 __func__, at_xdmac_chan_read(atchan, AT_XDMAC_CC), in at_xdmac_start_xfer()
411 at_xdmac_chan_read(atchan, AT_XDMAC_CNDA), in at_xdmac_start_xfer()
412 at_xdmac_chan_read(atchan, AT_XDMAC_CNDC), in at_xdmac_start_xfer()
413 at_xdmac_chan_read(atchan, AT_XDMAC_CSA), in at_xdmac_start_xfer()
414 at_xdmac_chan_read(atchan, AT_XDMAC_CDA), in at_xdmac_start_xfer()
415 at_xdmac_chan_read(atchan, AT_XDMAC_CUBC)); in at_xdmac_start_xfer()
422 struct at_xdmac_chan *atchan = to_at_xdmac_chan(tx->chan); in at_xdmac_tx_submit() local
426 spin_lock_irqsave(&atchan->lock, irqflags); in at_xdmac_tx_submit()
429 list_add_tail(&desc->xfer_node, &atchan->xfers_list); in at_xdmac_tx_submit()
430 spin_unlock_irqrestore(&atchan->lock, irqflags); in at_xdmac_tx_submit()
433 __func__, atchan, desc); in at_xdmac_tx_submit()
466 static struct at_xdmac_desc *at_xdmac_get_desc(struct at_xdmac_chan *atchan) in at_xdmac_get_desc() argument
470 if (list_empty(&atchan->free_descs_list)) { in at_xdmac_get_desc()
471 desc = at_xdmac_alloc_desc(&atchan->chan, GFP_NOWAIT); in at_xdmac_get_desc()
473 desc = list_first_entry(&atchan->free_descs_list, in at_xdmac_get_desc()
513 struct at_xdmac_chan *atchan; in at_xdmac_xlate() local
528 atchan = to_at_xdmac_chan(chan); in at_xdmac_xlate()
529 atchan->memif = AT91_XDMAC_DT_GET_MEM_IF(dma_spec->args[0]); in at_xdmac_xlate()
530 atchan->perif = AT91_XDMAC_DT_GET_PER_IF(dma_spec->args[0]); in at_xdmac_xlate()
531 atchan->perid = AT91_XDMAC_DT_GET_PERID(dma_spec->args[0]); in at_xdmac_xlate()
533 atchan->memif, atchan->perif, atchan->perid); in at_xdmac_xlate()
541 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_compute_chan_conf() local
545 atchan->cfg = in at_xdmac_compute_chan_conf()
546 AT91_XDMAC_DT_PERID(atchan->perid) in at_xdmac_compute_chan_conf()
549 | AT_XDMAC_CC_DIF(atchan->memif) in at_xdmac_compute_chan_conf()
550 | AT_XDMAC_CC_SIF(atchan->perif) in at_xdmac_compute_chan_conf()
555 csize = ffs(atchan->sconfig.src_maxburst) - 1; in at_xdmac_compute_chan_conf()
560 atchan->cfg |= AT_XDMAC_CC_CSIZE(csize); in at_xdmac_compute_chan_conf()
561 dwidth = ffs(atchan->sconfig.src_addr_width) - 1; in at_xdmac_compute_chan_conf()
566 atchan->cfg |= AT_XDMAC_CC_DWIDTH(dwidth); in at_xdmac_compute_chan_conf()
568 atchan->cfg = in at_xdmac_compute_chan_conf()
569 AT91_XDMAC_DT_PERID(atchan->perid) in at_xdmac_compute_chan_conf()
572 | AT_XDMAC_CC_DIF(atchan->perif) in at_xdmac_compute_chan_conf()
573 | AT_XDMAC_CC_SIF(atchan->memif) in at_xdmac_compute_chan_conf()
578 csize = ffs(atchan->sconfig.dst_maxburst) - 1; in at_xdmac_compute_chan_conf()
583 atchan->cfg |= AT_XDMAC_CC_CSIZE(csize); in at_xdmac_compute_chan_conf()
584 dwidth = ffs(atchan->sconfig.dst_addr_width) - 1; in at_xdmac_compute_chan_conf()
589 atchan->cfg |= AT_XDMAC_CC_DWIDTH(dwidth); in at_xdmac_compute_chan_conf()
592 dev_dbg(chan2dev(chan), "%s: cfg=0x%08x\n", __func__, atchan->cfg); in at_xdmac_compute_chan_conf()
618 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_set_slave_config() local
625 memcpy(&atchan->sconfig, sconfig, sizeof(atchan->sconfig)); in at_xdmac_set_slave_config()
635 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_prep_slave_sg() local
657 spin_lock_irqsave(&atchan->lock, irqflags); in at_xdmac_prep_slave_sg()
676 desc = at_xdmac_get_desc(atchan); in at_xdmac_prep_slave_sg()
680 list_splice_init(&first->descs_list, &atchan->free_descs_list); in at_xdmac_prep_slave_sg()
686 desc->lld.mbr_sa = atchan->sconfig.src_addr; in at_xdmac_prep_slave_sg()
690 desc->lld.mbr_da = atchan->sconfig.dst_addr; in at_xdmac_prep_slave_sg()
692 dwidth = at_xdmac_get_dwidth(atchan->cfg); in at_xdmac_prep_slave_sg()
700 desc->lld.mbr_cfg = (atchan->cfg & ~AT_XDMAC_CC_DWIDTH_MASK) | in at_xdmac_prep_slave_sg()
727 spin_unlock_irqrestore(&atchan->lock, irqflags); in at_xdmac_prep_slave_sg()
737 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_prep_dma_cyclic() local
752 if (test_and_set_bit(AT_XDMAC_CHAN_IS_CYCLIC, &atchan->status)) { in at_xdmac_prep_dma_cyclic()
763 spin_lock_irqsave(&atchan->lock, irqflags); in at_xdmac_prep_dma_cyclic()
764 desc = at_xdmac_get_desc(atchan); in at_xdmac_prep_dma_cyclic()
768 list_splice_init(&first->descs_list, &atchan->free_descs_list); in at_xdmac_prep_dma_cyclic()
769 spin_unlock_irqrestore(&atchan->lock, irqflags); in at_xdmac_prep_dma_cyclic()
772 spin_unlock_irqrestore(&atchan->lock, irqflags); in at_xdmac_prep_dma_cyclic()
778 desc->lld.mbr_sa = atchan->sconfig.src_addr; in at_xdmac_prep_dma_cyclic()
782 desc->lld.mbr_da = atchan->sconfig.dst_addr; in at_xdmac_prep_dma_cyclic()
784 desc->lld.mbr_cfg = atchan->cfg; in at_xdmac_prep_dma_cyclic()
846 struct at_xdmac_chan *atchan, in at_xdmac_interleaved_queue_desc() argument
901 spin_lock_irqsave(&atchan->lock, flags); in at_xdmac_interleaved_queue_desc()
902 desc = at_xdmac_get_desc(atchan); in at_xdmac_interleaved_queue_desc()
903 spin_unlock_irqrestore(&atchan->lock, flags); in at_xdmac_interleaved_queue_desc()
941 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_prep_interleaved() local
966 first = at_xdmac_interleaved_queue_desc(chan, atchan, in at_xdmac_prep_interleaved()
995 desc = at_xdmac_interleaved_queue_desc(chan, atchan, in at_xdmac_prep_interleaved()
1001 &atchan->free_descs_list); in at_xdmac_prep_interleaved()
1034 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_prep_dma_memcpy() local
1073 spin_lock_irqsave(&atchan->lock, irqflags); in at_xdmac_prep_dma_memcpy()
1074 desc = at_xdmac_get_desc(atchan); in at_xdmac_prep_dma_memcpy()
1075 spin_unlock_irqrestore(&atchan->lock, irqflags); in at_xdmac_prep_dma_memcpy()
1079 list_splice_init(&first->descs_list, &atchan->free_descs_list); in at_xdmac_prep_dma_memcpy()
1135 struct at_xdmac_chan *atchan, in at_xdmac_memset_create_desc() argument
1174 spin_lock_irqsave(&atchan->lock, flags); in at_xdmac_memset_create_desc()
1175 desc = at_xdmac_get_desc(atchan); in at_xdmac_memset_create_desc()
1176 spin_unlock_irqrestore(&atchan->lock, flags); in at_xdmac_memset_create_desc()
1206 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_prep_dma_memset() local
1215 desc = at_xdmac_memset_create_desc(chan, atchan, dest, len, value); in at_xdmac_prep_dma_memset()
1230 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_prep_dma_memset_sg() local
1248 desc = at_xdmac_memset_create_desc(chan, atchan, in at_xdmac_prep_dma_memset_sg()
1254 &atchan->free_descs_list); in at_xdmac_prep_dma_memset_sg()
1303 &atchan->free_descs_list); in at_xdmac_prep_dma_memset_sg()
1366 &atchan->free_descs_list); in at_xdmac_prep_dma_memset_sg()
1391 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_tx_status() local
1392 struct at_xdmac *atxdmac = to_at_xdmac(atchan->chan.device); in at_xdmac_tx_status()
1409 spin_lock_irqsave(&atchan->lock, flags); in at_xdmac_tx_status()
1411 desc = list_first_entry(&atchan->xfers_list, struct at_xdmac_desc, xfer_node); in at_xdmac_tx_status()
1439 at_xdmac_write(atxdmac, AT_XDMAC_GSWF, atchan->mask); in at_xdmac_tx_status()
1440 while (!(at_xdmac_chan_read(atchan, AT_XDMAC_CIS) & AT_XDMAC_CIS_FIS)) in at_xdmac_tx_status()
1471 check_nda = at_xdmac_chan_read(atchan, AT_XDMAC_CNDA) & 0xfffffffc; in at_xdmac_tx_status()
1473 cur_ubc = at_xdmac_chan_read(atchan, AT_XDMAC_CUBC); in at_xdmac_tx_status()
1475 initd = !!(at_xdmac_chan_read(atchan, AT_XDMAC_CC) & AT_XDMAC_CC_INITD); in at_xdmac_tx_status()
1477 cur_nda = at_xdmac_chan_read(atchan, AT_XDMAC_CNDA) & 0xfffffffc; in at_xdmac_tx_status()
1497 at_xdmac_write(atxdmac, AT_XDMAC_GSWF, atchan->mask); in at_xdmac_tx_status()
1498 while (!(at_xdmac_chan_read(atchan, AT_XDMAC_CIS) & AT_XDMAC_CIS_FIS)) in at_xdmac_tx_status()
1525 spin_unlock_irqrestore(&atchan->lock, flags); in at_xdmac_tx_status()
1530 static void at_xdmac_remove_xfer(struct at_xdmac_chan *atchan, in at_xdmac_remove_xfer() argument
1533 dev_dbg(chan2dev(&atchan->chan), "%s: desc 0x%p\n", __func__, desc); in at_xdmac_remove_xfer()
1540 list_splice_init(&desc->descs_list, &atchan->free_descs_list); in at_xdmac_remove_xfer()
1543 static void at_xdmac_advance_work(struct at_xdmac_chan *atchan) in at_xdmac_advance_work() argument
1551 if (!at_xdmac_chan_is_enabled(atchan) && !list_empty(&atchan->xfers_list)) { in at_xdmac_advance_work()
1552 desc = list_first_entry(&atchan->xfers_list, in at_xdmac_advance_work()
1555 dev_vdbg(chan2dev(&atchan->chan), "%s: desc 0x%p\n", __func__, desc); in at_xdmac_advance_work()
1557 at_xdmac_start_xfer(atchan, desc); in at_xdmac_advance_work()
1561 static void at_xdmac_handle_cyclic(struct at_xdmac_chan *atchan) in at_xdmac_handle_cyclic() argument
1566 spin_lock_irq(&atchan->lock); in at_xdmac_handle_cyclic()
1567 if (list_empty(&atchan->xfers_list)) { in at_xdmac_handle_cyclic()
1568 spin_unlock_irq(&atchan->lock); in at_xdmac_handle_cyclic()
1571 desc = list_first_entry(&atchan->xfers_list, struct at_xdmac_desc, in at_xdmac_handle_cyclic()
1573 spin_unlock_irq(&atchan->lock); in at_xdmac_handle_cyclic()
1579 static void at_xdmac_handle_error(struct at_xdmac_chan *atchan) in at_xdmac_handle_error() argument
1581 struct at_xdmac *atxdmac = to_at_xdmac(atchan->chan.device); in at_xdmac_handle_error()
1590 if (atchan->irq_status & AT_XDMAC_CIS_RBEIS) in at_xdmac_handle_error()
1591 dev_err(chan2dev(&atchan->chan), "read bus error!!!"); in at_xdmac_handle_error()
1592 if (atchan->irq_status & AT_XDMAC_CIS_WBEIS) in at_xdmac_handle_error()
1593 dev_err(chan2dev(&atchan->chan), "write bus error!!!"); in at_xdmac_handle_error()
1594 if (atchan->irq_status & AT_XDMAC_CIS_ROIS) in at_xdmac_handle_error()
1595 dev_err(chan2dev(&atchan->chan), "request overflow error!!!"); in at_xdmac_handle_error()
1597 spin_lock_irq(&atchan->lock); in at_xdmac_handle_error()
1600 at_xdmac_write(atxdmac, AT_XDMAC_GD, atchan->mask); in at_xdmac_handle_error()
1601 while (at_xdmac_read(atxdmac, AT_XDMAC_GS) & atchan->mask) in at_xdmac_handle_error()
1604 bad_desc = list_first_entry(&atchan->xfers_list, in at_xdmac_handle_error()
1608 spin_unlock_irq(&atchan->lock); in at_xdmac_handle_error()
1611 dev_dbg(chan2dev(&atchan->chan), in at_xdmac_handle_error()
1621 struct at_xdmac_chan *atchan = from_tasklet(atchan, t, tasklet); in at_xdmac_tasklet() local
1625 dev_dbg(chan2dev(&atchan->chan), "%s: status=0x%08x\n", in at_xdmac_tasklet()
1626 __func__, atchan->irq_status); in at_xdmac_tasklet()
1632 if (at_xdmac_chan_is_cyclic(atchan)) { in at_xdmac_tasklet()
1633 at_xdmac_handle_cyclic(atchan); in at_xdmac_tasklet()
1634 } else if ((atchan->irq_status & AT_XDMAC_CIS_LIS) in at_xdmac_tasklet()
1635 || (atchan->irq_status & error_mask)) { in at_xdmac_tasklet()
1638 if (atchan->irq_status & error_mask) in at_xdmac_tasklet()
1639 at_xdmac_handle_error(atchan); in at_xdmac_tasklet()
1641 spin_lock_irq(&atchan->lock); in at_xdmac_tasklet()
1642 desc = list_first_entry(&atchan->xfers_list, in at_xdmac_tasklet()
1645 dev_vdbg(chan2dev(&atchan->chan), "%s: desc 0x%p\n", __func__, desc); in at_xdmac_tasklet()
1647 dev_err(chan2dev(&atchan->chan), "Xfer not active: exiting"); in at_xdmac_tasklet()
1648 spin_unlock_irq(&atchan->lock); in at_xdmac_tasklet()
1654 at_xdmac_remove_xfer(atchan, desc); in at_xdmac_tasklet()
1655 spin_unlock_irq(&atchan->lock); in at_xdmac_tasklet()
1663 spin_lock_irq(&atchan->lock); in at_xdmac_tasklet()
1664 at_xdmac_advance_work(atchan); in at_xdmac_tasklet()
1665 spin_unlock_irq(&atchan->lock); in at_xdmac_tasklet()
1672 struct at_xdmac_chan *atchan; in at_xdmac_interrupt() local
1694 atchan = &atxdmac->chan[i]; in at_xdmac_interrupt()
1695 chan_imr = at_xdmac_chan_read(atchan, AT_XDMAC_CIM); in at_xdmac_interrupt()
1696 chan_status = at_xdmac_chan_read(atchan, AT_XDMAC_CIS); in at_xdmac_interrupt()
1697 atchan->irq_status = chan_status & chan_imr; in at_xdmac_interrupt()
1701 dev_vdbg(chan2dev(&atchan->chan), in at_xdmac_interrupt()
1704 at_xdmac_chan_read(atchan, AT_XDMAC_CC), in at_xdmac_interrupt()
1705 at_xdmac_chan_read(atchan, AT_XDMAC_CNDA), in at_xdmac_interrupt()
1706 at_xdmac_chan_read(atchan, AT_XDMAC_CNDC), in at_xdmac_interrupt()
1707 at_xdmac_chan_read(atchan, AT_XDMAC_CSA), in at_xdmac_interrupt()
1708 at_xdmac_chan_read(atchan, AT_XDMAC_CDA), in at_xdmac_interrupt()
1709 at_xdmac_chan_read(atchan, AT_XDMAC_CUBC)); in at_xdmac_interrupt()
1711 if (atchan->irq_status & (AT_XDMAC_CIS_RBEIS | AT_XDMAC_CIS_WBEIS)) in at_xdmac_interrupt()
1712 at_xdmac_write(atxdmac, AT_XDMAC_GD, atchan->mask); in at_xdmac_interrupt()
1714 tasklet_schedule(&atchan->tasklet); in at_xdmac_interrupt()
1725 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_issue_pending() local
1728 dev_dbg(chan2dev(&atchan->chan), "%s\n", __func__); in at_xdmac_issue_pending()
1730 spin_lock_irqsave(&atchan->lock, flags); in at_xdmac_issue_pending()
1731 at_xdmac_advance_work(atchan); in at_xdmac_issue_pending()
1732 spin_unlock_irqrestore(&atchan->lock, flags); in at_xdmac_issue_pending()
1740 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_device_config() local
1746 spin_lock_irqsave(&atchan->lock, flags); in at_xdmac_device_config()
1748 spin_unlock_irqrestore(&atchan->lock, flags); in at_xdmac_device_config()
1755 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_device_pause() local
1756 struct at_xdmac *atxdmac = to_at_xdmac(atchan->chan.device); in at_xdmac_device_pause()
1761 if (test_and_set_bit(AT_XDMAC_CHAN_IS_PAUSED, &atchan->status)) in at_xdmac_device_pause()
1764 spin_lock_irqsave(&atchan->lock, flags); in at_xdmac_device_pause()
1765 at_xdmac_write(atxdmac, AT_XDMAC_GRWS, atchan->mask); in at_xdmac_device_pause()
1766 while (at_xdmac_chan_read(atchan, AT_XDMAC_CC) in at_xdmac_device_pause()
1769 spin_unlock_irqrestore(&atchan->lock, flags); in at_xdmac_device_pause()
1776 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_device_resume() local
1777 struct at_xdmac *atxdmac = to_at_xdmac(atchan->chan.device); in at_xdmac_device_resume()
1782 spin_lock_irqsave(&atchan->lock, flags); in at_xdmac_device_resume()
1783 if (!at_xdmac_chan_is_paused(atchan)) { in at_xdmac_device_resume()
1784 spin_unlock_irqrestore(&atchan->lock, flags); in at_xdmac_device_resume()
1788 at_xdmac_write(atxdmac, AT_XDMAC_GRWR, atchan->mask); in at_xdmac_device_resume()
1789 clear_bit(AT_XDMAC_CHAN_IS_PAUSED, &atchan->status); in at_xdmac_device_resume()
1790 spin_unlock_irqrestore(&atchan->lock, flags); in at_xdmac_device_resume()
1798 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_device_terminate_all() local
1799 struct at_xdmac *atxdmac = to_at_xdmac(atchan->chan.device); in at_xdmac_device_terminate_all()
1804 spin_lock_irqsave(&atchan->lock, flags); in at_xdmac_device_terminate_all()
1805 at_xdmac_write(atxdmac, AT_XDMAC_GD, atchan->mask); in at_xdmac_device_terminate_all()
1806 while (at_xdmac_read(atxdmac, AT_XDMAC_GS) & atchan->mask) in at_xdmac_device_terminate_all()
1810 list_for_each_entry_safe(desc, _desc, &atchan->xfers_list, xfer_node) in at_xdmac_device_terminate_all()
1811 at_xdmac_remove_xfer(atchan, desc); in at_xdmac_device_terminate_all()
1813 clear_bit(AT_XDMAC_CHAN_IS_PAUSED, &atchan->status); in at_xdmac_device_terminate_all()
1814 clear_bit(AT_XDMAC_CHAN_IS_CYCLIC, &atchan->status); in at_xdmac_device_terminate_all()
1815 spin_unlock_irqrestore(&atchan->lock, flags); in at_xdmac_device_terminate_all()
1822 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_alloc_chan_resources() local
1826 if (at_xdmac_chan_is_enabled(atchan)) { in at_xdmac_alloc_chan_resources()
1832 if (!list_empty(&atchan->free_descs_list)) { in at_xdmac_alloc_chan_resources()
1850 list_add_tail(&desc->desc_node, &atchan->free_descs_list); in at_xdmac_alloc_chan_resources()
1862 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_free_chan_resources() local
1866 list_for_each_entry_safe(desc, _desc, &atchan->free_descs_list, desc_node) { in at_xdmac_free_chan_resources()
1882 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in atmel_xdmac_prepare() local
1885 if (at_xdmac_chan_is_enabled(atchan) && !at_xdmac_chan_is_cyclic(atchan)) in atmel_xdmac_prepare()
1901 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in atmel_xdmac_suspend() local
1903 atchan->save_cc = at_xdmac_chan_read(atchan, AT_XDMAC_CC); in atmel_xdmac_suspend()
1904 if (at_xdmac_chan_is_cyclic(atchan)) { in atmel_xdmac_suspend()
1905 if (!at_xdmac_chan_is_paused(atchan)) in atmel_xdmac_suspend()
1907 atchan->save_cim = at_xdmac_chan_read(atchan, AT_XDMAC_CIM); in atmel_xdmac_suspend()
1908 atchan->save_cnda = at_xdmac_chan_read(atchan, AT_XDMAC_CNDA); in atmel_xdmac_suspend()
1909 atchan->save_cndc = at_xdmac_chan_read(atchan, AT_XDMAC_CNDC); in atmel_xdmac_suspend()
1922 struct at_xdmac_chan *atchan; in atmel_xdmac_resume() local
1933 atchan = &atxdmac->chan[i]; in atmel_xdmac_resume()
1934 while (at_xdmac_chan_read(atchan, AT_XDMAC_CIS)) in atmel_xdmac_resume()
1940 atchan = to_at_xdmac_chan(chan); in atmel_xdmac_resume()
1941 at_xdmac_chan_write(atchan, AT_XDMAC_CC, atchan->save_cc); in atmel_xdmac_resume()
1942 if (at_xdmac_chan_is_cyclic(atchan)) { in atmel_xdmac_resume()
1943 if (at_xdmac_chan_is_paused(atchan)) in atmel_xdmac_resume()
1945 at_xdmac_chan_write(atchan, AT_XDMAC_CNDA, atchan->save_cnda); in atmel_xdmac_resume()
1946 at_xdmac_chan_write(atchan, AT_XDMAC_CNDC, atchan->save_cndc); in atmel_xdmac_resume()
1947 at_xdmac_chan_write(atchan, AT_XDMAC_CIE, atchan->save_cim); in atmel_xdmac_resume()
1949 at_xdmac_write(atxdmac, AT_XDMAC_GE, atchan->mask); in atmel_xdmac_resume()
2060 struct at_xdmac_chan *atchan = &atxdmac->chan[i]; in at_xdmac_probe() local
2062 atchan->chan.device = &atxdmac->dma; in at_xdmac_probe()
2063 list_add_tail(&atchan->chan.device_node, in at_xdmac_probe()
2066 atchan->ch_regs = at_xdmac_chan_reg_base(atxdmac, i); in at_xdmac_probe()
2067 atchan->mask = 1 << i; in at_xdmac_probe()
2069 spin_lock_init(&atchan->lock); in at_xdmac_probe()
2070 INIT_LIST_HEAD(&atchan->xfers_list); in at_xdmac_probe()
2071 INIT_LIST_HEAD(&atchan->free_descs_list); in at_xdmac_probe()
2072 tasklet_setup(&atchan->tasklet, at_xdmac_tasklet); in at_xdmac_probe()
2075 while (at_xdmac_chan_read(atchan, AT_XDMAC_CIS)) in at_xdmac_probe()
2120 struct at_xdmac_chan *atchan = &atxdmac->chan[i]; in at_xdmac_remove() local
2122 tasklet_kill(&atchan->tasklet); in at_xdmac_remove()
2123 at_xdmac_free_chan_resources(&atchan->chan); in at_xdmac_remove()