Lines Matching refs:atchan
263 #define at_xdmac_chan_read(atchan, reg) readl_relaxed((atchan)->ch_regs + (reg)) argument
264 #define at_xdmac_chan_write(atchan, reg, value) writel_relaxed((value), (atchan)->ch_regs + (reg)) argument
286 static inline int at_xdmac_chan_is_cyclic(struct at_xdmac_chan *atchan) in at_xdmac_chan_is_cyclic() argument
288 return test_bit(AT_XDMAC_CHAN_IS_CYCLIC, &atchan->status); in at_xdmac_chan_is_cyclic()
291 static inline int at_xdmac_chan_is_paused(struct at_xdmac_chan *atchan) in at_xdmac_chan_is_paused() argument
293 return test_bit(AT_XDMAC_CHAN_IS_PAUSED, &atchan->status); in at_xdmac_chan_is_paused()
318 static bool at_xdmac_chan_is_enabled(struct at_xdmac_chan *atchan) in at_xdmac_chan_is_enabled() argument
320 return at_xdmac_chan_read(atchan, AT_XDMAC_GS) & atchan->mask; in at_xdmac_chan_is_enabled()
335 static void at_xdmac_start_xfer(struct at_xdmac_chan *atchan, in at_xdmac_start_xfer() argument
338 struct at_xdmac *atxdmac = to_at_xdmac(atchan->chan.device); in at_xdmac_start_xfer()
341 dev_vdbg(chan2dev(&atchan->chan), "%s: desc 0x%p\n", __func__, first); in at_xdmac_start_xfer()
343 if (at_xdmac_chan_is_enabled(atchan)) in at_xdmac_start_xfer()
351 | AT_XDMAC_CNDA_NDAIF(atchan->memif); in at_xdmac_start_xfer()
352 at_xdmac_chan_write(atchan, AT_XDMAC_CNDA, reg); in at_xdmac_start_xfer()
359 if (at_xdmac_chan_is_cyclic(atchan)) { in at_xdmac_start_xfer()
361 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()
390 if (at_xdmac_chan_is_cyclic(atchan)) in at_xdmac_start_xfer()
391 at_xdmac_chan_write(atchan, AT_XDMAC_CIE, in at_xdmac_start_xfer()
394 at_xdmac_chan_write(atchan, AT_XDMAC_CIE, in at_xdmac_start_xfer()
396 at_xdmac_write(atxdmac, AT_XDMAC_GIE, atchan->mask); in at_xdmac_start_xfer()
397 dev_vdbg(chan2dev(&atchan->chan), in at_xdmac_start_xfer()
398 "%s: enable channel (0x%08x)\n", __func__, atchan->mask); in at_xdmac_start_xfer()
400 at_xdmac_write(atxdmac, AT_XDMAC_GE, atchan->mask); in at_xdmac_start_xfer()
402 dev_vdbg(chan2dev(&atchan->chan), in at_xdmac_start_xfer()
404 __func__, at_xdmac_chan_read(atchan, AT_XDMAC_CC), in at_xdmac_start_xfer()
405 at_xdmac_chan_read(atchan, AT_XDMAC_CNDA), in at_xdmac_start_xfer()
406 at_xdmac_chan_read(atchan, AT_XDMAC_CNDC), in at_xdmac_start_xfer()
407 at_xdmac_chan_read(atchan, AT_XDMAC_CSA), in at_xdmac_start_xfer()
408 at_xdmac_chan_read(atchan, AT_XDMAC_CDA), in at_xdmac_start_xfer()
409 at_xdmac_chan_read(atchan, AT_XDMAC_CUBC)); in at_xdmac_start_xfer()
416 struct at_xdmac_chan *atchan = to_at_xdmac_chan(tx->chan); in at_xdmac_tx_submit() local
420 spin_lock_irqsave(&atchan->lock, irqflags); in at_xdmac_tx_submit()
424 __func__, atchan, desc); in at_xdmac_tx_submit()
425 list_add_tail(&desc->xfer_node, &atchan->xfers_list); in at_xdmac_tx_submit()
426 if (list_is_singular(&atchan->xfers_list)) in at_xdmac_tx_submit()
427 at_xdmac_start_xfer(atchan, desc); in at_xdmac_tx_submit()
429 spin_unlock_irqrestore(&atchan->lock, irqflags); in at_xdmac_tx_submit()
453 static struct at_xdmac_desc *at_xdmac_get_desc(struct at_xdmac_chan *atchan) in at_xdmac_get_desc() argument
457 if (list_empty(&atchan->free_descs_list)) { in at_xdmac_get_desc()
458 desc = at_xdmac_alloc_desc(&atchan->chan, GFP_NOWAIT); in at_xdmac_get_desc()
460 desc = list_first_entry(&atchan->free_descs_list, in at_xdmac_get_desc()
473 struct at_xdmac_chan *atchan; in at_xdmac_xlate() local
488 atchan = to_at_xdmac_chan(chan); in at_xdmac_xlate()
489 atchan->memif = AT91_XDMAC_DT_GET_MEM_IF(dma_spec->args[0]); in at_xdmac_xlate()
490 atchan->perif = AT91_XDMAC_DT_GET_PER_IF(dma_spec->args[0]); in at_xdmac_xlate()
491 atchan->perid = AT91_XDMAC_DT_GET_PERID(dma_spec->args[0]); in at_xdmac_xlate()
493 atchan->memif, atchan->perif, atchan->perid); in at_xdmac_xlate()
501 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_compute_chan_conf() local
505 atchan->cfg = in at_xdmac_compute_chan_conf()
506 AT91_XDMAC_DT_PERID(atchan->perid) in at_xdmac_compute_chan_conf()
509 | AT_XDMAC_CC_DIF(atchan->memif) in at_xdmac_compute_chan_conf()
510 | AT_XDMAC_CC_SIF(atchan->perif) in at_xdmac_compute_chan_conf()
515 csize = ffs(atchan->sconfig.src_maxburst) - 1; in at_xdmac_compute_chan_conf()
520 atchan->cfg |= AT_XDMAC_CC_CSIZE(csize); in at_xdmac_compute_chan_conf()
521 dwidth = ffs(atchan->sconfig.src_addr_width) - 1; in at_xdmac_compute_chan_conf()
526 atchan->cfg |= AT_XDMAC_CC_DWIDTH(dwidth); in at_xdmac_compute_chan_conf()
528 atchan->cfg = in at_xdmac_compute_chan_conf()
529 AT91_XDMAC_DT_PERID(atchan->perid) in at_xdmac_compute_chan_conf()
532 | AT_XDMAC_CC_DIF(atchan->perif) in at_xdmac_compute_chan_conf()
533 | AT_XDMAC_CC_SIF(atchan->memif) in at_xdmac_compute_chan_conf()
538 csize = ffs(atchan->sconfig.dst_maxburst) - 1; in at_xdmac_compute_chan_conf()
543 atchan->cfg |= AT_XDMAC_CC_CSIZE(csize); in at_xdmac_compute_chan_conf()
544 dwidth = ffs(atchan->sconfig.dst_addr_width) - 1; in at_xdmac_compute_chan_conf()
549 atchan->cfg |= AT_XDMAC_CC_DWIDTH(dwidth); in at_xdmac_compute_chan_conf()
552 dev_dbg(chan2dev(chan), "%s: cfg=0x%08x\n", __func__, atchan->cfg); in at_xdmac_compute_chan_conf()
578 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_set_slave_config() local
585 memcpy(&atchan->sconfig, sconfig, sizeof(atchan->sconfig)); in at_xdmac_set_slave_config()
595 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_prep_slave_sg() local
617 spin_lock_irqsave(&atchan->lock, irqflags); in at_xdmac_prep_slave_sg()
636 desc = at_xdmac_get_desc(atchan); in at_xdmac_prep_slave_sg()
640 list_splice_init(&first->descs_list, &atchan->free_descs_list); in at_xdmac_prep_slave_sg()
646 desc->lld.mbr_sa = atchan->sconfig.src_addr; in at_xdmac_prep_slave_sg()
650 desc->lld.mbr_da = atchan->sconfig.dst_addr; in at_xdmac_prep_slave_sg()
652 dwidth = at_xdmac_get_dwidth(atchan->cfg); in at_xdmac_prep_slave_sg()
661 desc->lld.mbr_cfg = (atchan->cfg & ~AT_XDMAC_CC_DWIDTH_MASK) | in at_xdmac_prep_slave_sg()
692 spin_unlock_irqrestore(&atchan->lock, irqflags); in at_xdmac_prep_slave_sg()
702 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_prep_dma_cyclic() local
717 if (test_and_set_bit(AT_XDMAC_CHAN_IS_CYCLIC, &atchan->status)) { in at_xdmac_prep_dma_cyclic()
728 spin_lock_irqsave(&atchan->lock, irqflags); in at_xdmac_prep_dma_cyclic()
729 desc = at_xdmac_get_desc(atchan); in at_xdmac_prep_dma_cyclic()
733 list_splice_init(&first->descs_list, &atchan->free_descs_list); in at_xdmac_prep_dma_cyclic()
734 spin_unlock_irqrestore(&atchan->lock, irqflags); in at_xdmac_prep_dma_cyclic()
737 spin_unlock_irqrestore(&atchan->lock, irqflags); in at_xdmac_prep_dma_cyclic()
743 desc->lld.mbr_sa = atchan->sconfig.src_addr; in at_xdmac_prep_dma_cyclic()
747 desc->lld.mbr_da = atchan->sconfig.dst_addr; in at_xdmac_prep_dma_cyclic()
749 desc->lld.mbr_cfg = atchan->cfg; in at_xdmac_prep_dma_cyclic()
792 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_prep_dma_memcpy() local
844 spin_lock_irqsave(&atchan->lock, irqflags); in at_xdmac_prep_dma_memcpy()
845 desc = at_xdmac_get_desc(atchan); in at_xdmac_prep_dma_memcpy()
846 spin_unlock_irqrestore(&atchan->lock, irqflags); in at_xdmac_prep_dma_memcpy()
850 list_splice_init(&first->descs_list, &atchan->free_descs_list); in at_xdmac_prep_dma_memcpy()
924 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_tx_status() local
925 struct at_xdmac *atxdmac = to_at_xdmac(atchan->chan.device); in at_xdmac_tx_status()
941 spin_lock_irqsave(&atchan->lock, flags); in at_xdmac_tx_status()
943 desc = list_first_entry(&atchan->xfers_list, struct at_xdmac_desc, xfer_node); in at_xdmac_tx_status()
962 at_xdmac_write(atxdmac, AT_XDMAC_GSWF, atchan->mask); in at_xdmac_tx_status()
963 while (!(at_xdmac_chan_read(atchan, AT_XDMAC_CIS) & AT_XDMAC_CIS_FIS)) in at_xdmac_tx_status()
983 cur_nda = at_xdmac_chan_read(atchan, AT_XDMAC_CNDA) & 0xfffffffc; in at_xdmac_tx_status()
985 cur_ubc = at_xdmac_chan_read(atchan, AT_XDMAC_CUBC); in at_xdmac_tx_status()
988 check_nda = at_xdmac_chan_read(atchan, AT_XDMAC_CNDA) & 0xfffffffc; in at_xdmac_tx_status()
995 cur_ubc = at_xdmac_chan_read(atchan, AT_XDMAC_CUBC); in at_xdmac_tx_status()
1024 spin_unlock_irqrestore(&atchan->lock, flags); in at_xdmac_tx_status()
1029 static void at_xdmac_remove_xfer(struct at_xdmac_chan *atchan, in at_xdmac_remove_xfer() argument
1032 dev_dbg(chan2dev(&atchan->chan), "%s: desc 0x%p\n", __func__, desc); in at_xdmac_remove_xfer()
1039 list_splice_init(&desc->descs_list, &atchan->free_descs_list); in at_xdmac_remove_xfer()
1042 static void at_xdmac_advance_work(struct at_xdmac_chan *atchan) in at_xdmac_advance_work() argument
1047 spin_lock_irqsave(&atchan->lock, flags); in at_xdmac_advance_work()
1053 if (!at_xdmac_chan_is_enabled(atchan) && !list_empty(&atchan->xfers_list)) { in at_xdmac_advance_work()
1054 desc = list_first_entry(&atchan->xfers_list, in at_xdmac_advance_work()
1057 dev_vdbg(chan2dev(&atchan->chan), "%s: desc 0x%p\n", __func__, desc); in at_xdmac_advance_work()
1059 at_xdmac_start_xfer(atchan, desc); in at_xdmac_advance_work()
1062 spin_unlock_irqrestore(&atchan->lock, flags); in at_xdmac_advance_work()
1065 static void at_xdmac_handle_cyclic(struct at_xdmac_chan *atchan) in at_xdmac_handle_cyclic() argument
1070 desc = list_first_entry(&atchan->xfers_list, struct at_xdmac_desc, xfer_node); in at_xdmac_handle_cyclic()
1079 struct at_xdmac_chan *atchan = (struct at_xdmac_chan *)data; in at_xdmac_tasklet() local
1083 dev_dbg(chan2dev(&atchan->chan), "%s: status=0x%08lx\n", in at_xdmac_tasklet()
1084 __func__, atchan->status); in at_xdmac_tasklet()
1090 if (at_xdmac_chan_is_cyclic(atchan)) { in at_xdmac_tasklet()
1091 at_xdmac_handle_cyclic(atchan); in at_xdmac_tasklet()
1092 } else if ((atchan->status & AT_XDMAC_CIS_LIS) in at_xdmac_tasklet()
1093 || (atchan->status & error_mask)) { in at_xdmac_tasklet()
1096 if (atchan->status & AT_XDMAC_CIS_RBEIS) in at_xdmac_tasklet()
1097 dev_err(chan2dev(&atchan->chan), "read bus error!!!"); in at_xdmac_tasklet()
1098 if (atchan->status & AT_XDMAC_CIS_WBEIS) in at_xdmac_tasklet()
1099 dev_err(chan2dev(&atchan->chan), "write bus error!!!"); in at_xdmac_tasklet()
1100 if (atchan->status & AT_XDMAC_CIS_ROIS) in at_xdmac_tasklet()
1101 dev_err(chan2dev(&atchan->chan), "request overflow error!!!"); in at_xdmac_tasklet()
1103 spin_lock_bh(&atchan->lock); in at_xdmac_tasklet()
1104 desc = list_first_entry(&atchan->xfers_list, in at_xdmac_tasklet()
1107 dev_vdbg(chan2dev(&atchan->chan), "%s: desc 0x%p\n", __func__, desc); in at_xdmac_tasklet()
1112 at_xdmac_remove_xfer(atchan, desc); in at_xdmac_tasklet()
1113 spin_unlock_bh(&atchan->lock); in at_xdmac_tasklet()
1115 if (!at_xdmac_chan_is_cyclic(atchan)) { in at_xdmac_tasklet()
1123 at_xdmac_advance_work(atchan); in at_xdmac_tasklet()
1130 struct at_xdmac_chan *atchan; in at_xdmac_interrupt() local
1152 atchan = &atxdmac->chan[i]; in at_xdmac_interrupt()
1153 chan_imr = at_xdmac_chan_read(atchan, AT_XDMAC_CIM); in at_xdmac_interrupt()
1154 chan_status = at_xdmac_chan_read(atchan, AT_XDMAC_CIS); in at_xdmac_interrupt()
1155 atchan->status = chan_status & chan_imr; in at_xdmac_interrupt()
1159 dev_vdbg(chan2dev(&atchan->chan), in at_xdmac_interrupt()
1162 at_xdmac_chan_read(atchan, AT_XDMAC_CC), in at_xdmac_interrupt()
1163 at_xdmac_chan_read(atchan, AT_XDMAC_CNDA), in at_xdmac_interrupt()
1164 at_xdmac_chan_read(atchan, AT_XDMAC_CNDC), in at_xdmac_interrupt()
1165 at_xdmac_chan_read(atchan, AT_XDMAC_CSA), in at_xdmac_interrupt()
1166 at_xdmac_chan_read(atchan, AT_XDMAC_CDA), in at_xdmac_interrupt()
1167 at_xdmac_chan_read(atchan, AT_XDMAC_CUBC)); in at_xdmac_interrupt()
1169 if (atchan->status & (AT_XDMAC_CIS_RBEIS | AT_XDMAC_CIS_WBEIS)) in at_xdmac_interrupt()
1170 at_xdmac_write(atxdmac, AT_XDMAC_GD, atchan->mask); in at_xdmac_interrupt()
1172 tasklet_schedule(&atchan->tasklet); in at_xdmac_interrupt()
1183 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_issue_pending() local
1185 dev_dbg(chan2dev(&atchan->chan), "%s\n", __func__); in at_xdmac_issue_pending()
1187 if (!at_xdmac_chan_is_cyclic(atchan)) in at_xdmac_issue_pending()
1188 at_xdmac_advance_work(atchan); in at_xdmac_issue_pending()
1196 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_device_config() local
1202 spin_lock_irqsave(&atchan->lock, flags); in at_xdmac_device_config()
1204 spin_unlock_irqrestore(&atchan->lock, flags); in at_xdmac_device_config()
1211 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_device_pause() local
1212 struct at_xdmac *atxdmac = to_at_xdmac(atchan->chan.device); in at_xdmac_device_pause()
1217 if (test_and_set_bit(AT_XDMAC_CHAN_IS_PAUSED, &atchan->status)) in at_xdmac_device_pause()
1220 spin_lock_irqsave(&atchan->lock, flags); in at_xdmac_device_pause()
1221 at_xdmac_write(atxdmac, AT_XDMAC_GRWS, atchan->mask); in at_xdmac_device_pause()
1222 while (at_xdmac_chan_read(atchan, AT_XDMAC_CC) in at_xdmac_device_pause()
1225 spin_unlock_irqrestore(&atchan->lock, flags); in at_xdmac_device_pause()
1232 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_device_resume() local
1233 struct at_xdmac *atxdmac = to_at_xdmac(atchan->chan.device); in at_xdmac_device_resume()
1238 spin_lock_irqsave(&atchan->lock, flags); in at_xdmac_device_resume()
1239 if (!at_xdmac_chan_is_paused(atchan)) { in at_xdmac_device_resume()
1240 spin_unlock_irqrestore(&atchan->lock, flags); in at_xdmac_device_resume()
1244 at_xdmac_write(atxdmac, AT_XDMAC_GRWR, atchan->mask); in at_xdmac_device_resume()
1245 clear_bit(AT_XDMAC_CHAN_IS_PAUSED, &atchan->status); in at_xdmac_device_resume()
1246 spin_unlock_irqrestore(&atchan->lock, flags); in at_xdmac_device_resume()
1254 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_device_terminate_all() local
1255 struct at_xdmac *atxdmac = to_at_xdmac(atchan->chan.device); in at_xdmac_device_terminate_all()
1260 spin_lock_irqsave(&atchan->lock, flags); in at_xdmac_device_terminate_all()
1261 at_xdmac_write(atxdmac, AT_XDMAC_GD, atchan->mask); in at_xdmac_device_terminate_all()
1262 while (at_xdmac_read(atxdmac, AT_XDMAC_GS) & atchan->mask) in at_xdmac_device_terminate_all()
1266 list_for_each_entry_safe(desc, _desc, &atchan->xfers_list, xfer_node) in at_xdmac_device_terminate_all()
1267 at_xdmac_remove_xfer(atchan, desc); in at_xdmac_device_terminate_all()
1269 clear_bit(AT_XDMAC_CHAN_IS_PAUSED, &atchan->status); in at_xdmac_device_terminate_all()
1270 clear_bit(AT_XDMAC_CHAN_IS_CYCLIC, &atchan->status); in at_xdmac_device_terminate_all()
1271 spin_unlock_irqrestore(&atchan->lock, flags); in at_xdmac_device_terminate_all()
1278 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_alloc_chan_resources() local
1283 spin_lock_irqsave(&atchan->lock, flags); in at_xdmac_alloc_chan_resources()
1285 if (at_xdmac_chan_is_enabled(atchan)) { in at_xdmac_alloc_chan_resources()
1292 if (!list_empty(&atchan->free_descs_list)) { in at_xdmac_alloc_chan_resources()
1306 list_add_tail(&desc->desc_node, &atchan->free_descs_list); in at_xdmac_alloc_chan_resources()
1314 spin_unlock_irqrestore(&atchan->lock, flags); in at_xdmac_alloc_chan_resources()
1320 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in at_xdmac_free_chan_resources() local
1324 list_for_each_entry_safe(desc, _desc, &atchan->free_descs_list, desc_node) { in at_xdmac_free_chan_resources()
1341 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in atmel_xdmac_prepare() local
1344 if (at_xdmac_chan_is_enabled(atchan) && !at_xdmac_chan_is_cyclic(atchan)) in atmel_xdmac_prepare()
1361 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan); in atmel_xdmac_suspend() local
1363 atchan->save_cc = at_xdmac_chan_read(atchan, AT_XDMAC_CC); in atmel_xdmac_suspend()
1364 if (at_xdmac_chan_is_cyclic(atchan)) { in atmel_xdmac_suspend()
1365 if (!at_xdmac_chan_is_paused(atchan)) in atmel_xdmac_suspend()
1367 atchan->save_cim = at_xdmac_chan_read(atchan, AT_XDMAC_CIM); in atmel_xdmac_suspend()
1368 atchan->save_cnda = at_xdmac_chan_read(atchan, AT_XDMAC_CNDA); in atmel_xdmac_suspend()
1369 atchan->save_cndc = at_xdmac_chan_read(atchan, AT_XDMAC_CNDC); in atmel_xdmac_suspend()
1383 struct at_xdmac_chan *atchan; in atmel_xdmac_resume() local
1391 atchan = &atxdmac->chan[i]; in atmel_xdmac_resume()
1392 while (at_xdmac_chan_read(atchan, AT_XDMAC_CIS)) in atmel_xdmac_resume()
1399 atchan = to_at_xdmac_chan(chan); in atmel_xdmac_resume()
1400 at_xdmac_chan_write(atchan, AT_XDMAC_CC, atchan->save_cc); in atmel_xdmac_resume()
1401 if (at_xdmac_chan_is_cyclic(atchan)) { in atmel_xdmac_resume()
1402 if (at_xdmac_chan_is_paused(atchan)) in atmel_xdmac_resume()
1404 at_xdmac_chan_write(atchan, AT_XDMAC_CNDA, atchan->save_cnda); in atmel_xdmac_resume()
1405 at_xdmac_chan_write(atchan, AT_XDMAC_CNDC, atchan->save_cndc); in atmel_xdmac_resume()
1406 at_xdmac_chan_write(atchan, AT_XDMAC_CIE, atchan->save_cim); in atmel_xdmac_resume()
1408 at_xdmac_write(atxdmac, AT_XDMAC_GE, atchan->mask); in atmel_xdmac_resume()
1518 struct at_xdmac_chan *atchan = &atxdmac->chan[i]; in at_xdmac_probe() local
1520 atchan->chan.device = &atxdmac->dma; in at_xdmac_probe()
1521 list_add_tail(&atchan->chan.device_node, in at_xdmac_probe()
1524 atchan->ch_regs = at_xdmac_chan_reg_base(atxdmac, i); in at_xdmac_probe()
1525 atchan->mask = 1 << i; in at_xdmac_probe()
1527 spin_lock_init(&atchan->lock); in at_xdmac_probe()
1528 INIT_LIST_HEAD(&atchan->xfers_list); in at_xdmac_probe()
1529 INIT_LIST_HEAD(&atchan->free_descs_list); in at_xdmac_probe()
1530 tasklet_init(&atchan->tasklet, at_xdmac_tasklet, in at_xdmac_probe()
1531 (unsigned long)atchan); in at_xdmac_probe()
1534 while (at_xdmac_chan_read(atchan, AT_XDMAC_CIS)) in at_xdmac_probe()
1581 struct at_xdmac_chan *atchan = &atxdmac->chan[i]; in at_xdmac_remove() local
1583 tasklet_kill(&atchan->tasklet); in at_xdmac_remove()
1584 at_xdmac_free_chan_resources(&atchan->chan); in at_xdmac_remove()