Lines Matching refs:tcd
154 dma_pool_free(fsl_desc->echan->tcd_pool, fsl_desc->tcd[i].vtcd, in fsl_edma_free_desc()
155 fsl_desc->tcd[i].ptcd); in fsl_edma_free_desc()
283 len += le32_to_cpu(edesc->tcd[i].vtcd->nbytes) in fsl_edma_desc_residue()
284 * le16_to_cpu(edesc->tcd[i].vtcd->biter); in fsl_edma_desc_residue()
290 cur_addr = edma_readl(fsl_chan->edma, ®s->tcd[ch].saddr); in fsl_edma_desc_residue()
292 cur_addr = edma_readl(fsl_chan->edma, ®s->tcd[ch].daddr); in fsl_edma_desc_residue()
296 size = le32_to_cpu(edesc->tcd[i].vtcd->nbytes) in fsl_edma_desc_residue()
297 * le16_to_cpu(edesc->tcd[i].vtcd->biter); in fsl_edma_desc_residue()
299 dma_addr = le32_to_cpu(edesc->tcd[i].vtcd->saddr); in fsl_edma_desc_residue()
301 dma_addr = le32_to_cpu(edesc->tcd[i].vtcd->daddr); in fsl_edma_desc_residue()
346 struct fsl_edma_hw_tcd *tcd) in fsl_edma_set_tcd_regs() argument
359 edma_writew(edma, 0, ®s->tcd[ch].csr); in fsl_edma_set_tcd_regs()
361 edma_writel(edma, (s32)tcd->saddr, ®s->tcd[ch].saddr); in fsl_edma_set_tcd_regs()
362 edma_writel(edma, (s32)tcd->daddr, ®s->tcd[ch].daddr); in fsl_edma_set_tcd_regs()
364 edma_writew(edma, (s16)tcd->attr, ®s->tcd[ch].attr); in fsl_edma_set_tcd_regs()
365 edma_writew(edma, tcd->soff, ®s->tcd[ch].soff); in fsl_edma_set_tcd_regs()
367 edma_writel(edma, (s32)tcd->nbytes, ®s->tcd[ch].nbytes); in fsl_edma_set_tcd_regs()
368 edma_writel(edma, (s32)tcd->slast, ®s->tcd[ch].slast); in fsl_edma_set_tcd_regs()
370 edma_writew(edma, (s16)tcd->citer, ®s->tcd[ch].citer); in fsl_edma_set_tcd_regs()
371 edma_writew(edma, (s16)tcd->biter, ®s->tcd[ch].biter); in fsl_edma_set_tcd_regs()
372 edma_writew(edma, (s16)tcd->doff, ®s->tcd[ch].doff); in fsl_edma_set_tcd_regs()
374 edma_writel(edma, (s32)tcd->dlast_sga, in fsl_edma_set_tcd_regs()
375 ®s->tcd[ch].dlast_sga); in fsl_edma_set_tcd_regs()
378 csr = le16_to_cpu(tcd->csr); in fsl_edma_set_tcd_regs()
380 tcd->csr = cpu_to_le16(csr); in fsl_edma_set_tcd_regs()
383 edma_writew(edma, (s16)tcd->csr, ®s->tcd[ch].csr); in fsl_edma_set_tcd_regs()
387 void fsl_edma_fill_tcd(struct fsl_edma_hw_tcd *tcd, u32 src, u32 dst, in fsl_edma_fill_tcd() argument
400 tcd->saddr = cpu_to_le32(src); in fsl_edma_fill_tcd()
401 tcd->daddr = cpu_to_le32(dst); in fsl_edma_fill_tcd()
403 tcd->attr = cpu_to_le16(attr); in fsl_edma_fill_tcd()
405 tcd->soff = cpu_to_le16(soff); in fsl_edma_fill_tcd()
407 tcd->nbytes = cpu_to_le32(nbytes); in fsl_edma_fill_tcd()
408 tcd->slast = cpu_to_le32(slast); in fsl_edma_fill_tcd()
410 tcd->citer = cpu_to_le16(EDMA_TCD_CITER_CITER(citer)); in fsl_edma_fill_tcd()
411 tcd->doff = cpu_to_le16(doff); in fsl_edma_fill_tcd()
413 tcd->dlast_sga = cpu_to_le32(dlast_sga); in fsl_edma_fill_tcd()
415 tcd->biter = cpu_to_le16(EDMA_TCD_BITER_BITER(biter)); in fsl_edma_fill_tcd()
425 tcd->csr = cpu_to_le16(csr); in fsl_edma_fill_tcd()
434 fsl_desc = kzalloc(struct_size(fsl_desc, tcd, sg_len), GFP_NOWAIT); in fsl_edma_alloc_desc()
441 fsl_desc->tcd[i].vtcd = dma_pool_alloc(fsl_chan->tcd_pool, in fsl_edma_alloc_desc()
442 GFP_NOWAIT, &fsl_desc->tcd[i].ptcd); in fsl_edma_alloc_desc()
443 if (!fsl_desc->tcd[i].vtcd) in fsl_edma_alloc_desc()
450 dma_pool_free(fsl_chan->tcd_pool, fsl_desc->tcd[i].vtcd, in fsl_edma_alloc_desc()
451 fsl_desc->tcd[i].ptcd); in fsl_edma_alloc_desc()
501 last_sg = fsl_desc->tcd[(i + 1) % sg_len].ptcd; in fsl_edma_prep_dma_cyclic()
515 fsl_edma_fill_tcd(fsl_desc->tcd[i].vtcd, src_addr, dst_addr, in fsl_edma_prep_dma_cyclic()
563 last_sg = fsl_desc->tcd[(i + 1) % sg_len].ptcd; in fsl_edma_prep_slave_sg()
579 last_sg = fsl_desc->tcd[(i + 1)].ptcd; in fsl_edma_prep_slave_sg()
580 fsl_edma_fill_tcd(fsl_desc->tcd[i].vtcd, src_addr, in fsl_edma_prep_slave_sg()
586 fsl_edma_fill_tcd(fsl_desc->tcd[i].vtcd, src_addr, in fsl_edma_prep_slave_sg()
612 fsl_edma_fill_tcd(fsl_desc->tcd[0].vtcd, dma_src, dma_dst, in fsl_edma_prep_memcpy()
630 fsl_edma_set_tcd_regs(fsl_chan, fsl_chan->edesc->tcd[0].vtcd); in fsl_edma_xfer_desc()
747 edma->regs.tcd = edma->membase + EDMA_TCD; in fsl_edma_setup_regs()