Lines Matching full:edma
11 #include "fsl-edma-common.h"
47 struct edma_regs *regs = &fsl_chan->edma->regs; in fsl_edma_enable_request()
50 if (fsl_chan->edma->drvdata->version == v1) { in fsl_edma_enable_request()
51 edma_writeb(fsl_chan->edma, EDMA_SEEI_SEEI(ch), regs->seei); in fsl_edma_enable_request()
52 edma_writeb(fsl_chan->edma, ch, regs->serq); in fsl_edma_enable_request()
64 struct edma_regs *regs = &fsl_chan->edma->regs; in fsl_edma_disable_request()
67 if (fsl_chan->edma->drvdata->version == v1) { in fsl_edma_disable_request()
68 edma_writeb(fsl_chan->edma, ch, regs->cerq); in fsl_edma_disable_request()
69 edma_writeb(fsl_chan->edma, EDMA_CEEI_CEEI(ch), regs->ceei); in fsl_edma_disable_request()
113 u32 dmamux_nr = fsl_chan->edma->drvdata->dmamuxs; in fsl_edma_chan_mux()
115 chans_per_mux = fsl_chan->edma->n_chans / dmamux_nr; in fsl_edma_chan_mux()
118 if (fsl_chan->edma->drvdata->mux_swap) in fsl_edma_chan_mux()
121 muxaddr = fsl_chan->edma->muxbase[ch / chans_per_mux]; in fsl_edma_chan_mux()
124 if (fsl_chan->edma->drvdata->version == v3) in fsl_edma_chan_mux()
274 struct edma_regs *regs = &fsl_chan->edma->regs; 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()
348 struct fsl_edma_engine *edma = fsl_chan->edma; in fsl_edma_set_tcd_regs() local
349 struct edma_regs *regs = &fsl_chan->edma->regs; in fsl_edma_set_tcd_regs()
355 * big- or little-endian obeying the eDMA engine model endian, in fsl_edma_set_tcd_regs()
358 edma_writew(edma, 0, ®s->tcd[ch].csr); in fsl_edma_set_tcd_regs()
360 edma_writel(edma, (s32)tcd->saddr, ®s->tcd[ch].saddr); in fsl_edma_set_tcd_regs()
361 edma_writel(edma, (s32)tcd->daddr, ®s->tcd[ch].daddr); in fsl_edma_set_tcd_regs()
363 edma_writew(edma, (s16)tcd->attr, ®s->tcd[ch].attr); in fsl_edma_set_tcd_regs()
364 edma_writew(edma, tcd->soff, ®s->tcd[ch].soff); in fsl_edma_set_tcd_regs()
366 edma_writel(edma, (s32)tcd->nbytes, ®s->tcd[ch].nbytes); in fsl_edma_set_tcd_regs()
367 edma_writel(edma, (s32)tcd->slast, ®s->tcd[ch].slast); in fsl_edma_set_tcd_regs()
369 edma_writew(edma, (s16)tcd->citer, ®s->tcd[ch].citer); in fsl_edma_set_tcd_regs()
370 edma_writew(edma, (s16)tcd->biter, ®s->tcd[ch].biter); in fsl_edma_set_tcd_regs()
371 edma_writew(edma, (s16)tcd->doff, ®s->tcd[ch].doff); in fsl_edma_set_tcd_regs()
373 edma_writel(edma, (s32)tcd->dlast_sga, in fsl_edma_set_tcd_regs()
376 edma_writew(edma, (s16)tcd->csr, ®s->tcd[ch].csr); in fsl_edma_set_tcd_regs()
388 * eDMA hardware SGs require the TCDs to be stored in little in fsl_edma_fill_tcd()
671 * On the 32 channels Vybrid/mpc577x edma version (here called "v1"),
673 * edma (here called "v2").
677 * edma "version" and "membase" appropriately.
679 void fsl_edma_setup_regs(struct fsl_edma_engine *edma) in fsl_edma_setup_regs() argument
681 edma->regs.cr = edma->membase + EDMA_CR; in fsl_edma_setup_regs()
682 edma->regs.es = edma->membase + EDMA_ES; in fsl_edma_setup_regs()
683 edma->regs.erql = edma->membase + EDMA_ERQ; in fsl_edma_setup_regs()
684 edma->regs.eeil = edma->membase + EDMA_EEI; in fsl_edma_setup_regs()
686 edma->regs.serq = edma->membase + ((edma->drvdata->version == v2) ? in fsl_edma_setup_regs()
688 edma->regs.cerq = edma->membase + ((edma->drvdata->version == v2) ? in fsl_edma_setup_regs()
690 edma->regs.seei = edma->membase + ((edma->drvdata->version == v2) ? in fsl_edma_setup_regs()
692 edma->regs.ceei = edma->membase + ((edma->drvdata->version == v2) ? in fsl_edma_setup_regs()
694 edma->regs.cint = edma->membase + ((edma->drvdata->version == v2) ? in fsl_edma_setup_regs()
696 edma->regs.cerr = edma->membase + ((edma->drvdata->version == v2) ? in fsl_edma_setup_regs()
698 edma->regs.ssrt = edma->membase + ((edma->drvdata->version == v2) ? in fsl_edma_setup_regs()
700 edma->regs.cdne = edma->membase + ((edma->drvdata->version == v2) ? in fsl_edma_setup_regs()
702 edma->regs.intl = edma->membase + ((edma->drvdata->version == v2) ? in fsl_edma_setup_regs()
704 edma->regs.errl = edma->membase + ((edma->drvdata->version == v2) ? in fsl_edma_setup_regs()
707 if (edma->drvdata->version == v2) { in fsl_edma_setup_regs()
708 edma->regs.erqh = edma->membase + EDMA64_ERQH; in fsl_edma_setup_regs()
709 edma->regs.eeih = edma->membase + EDMA64_EEIH; in fsl_edma_setup_regs()
710 edma->regs.errh = edma->membase + EDMA64_ERRH; in fsl_edma_setup_regs()
711 edma->regs.inth = edma->membase + EDMA64_INTH; in fsl_edma_setup_regs()
714 edma->regs.tcd = edma->membase + EDMA_TCD; in fsl_edma_setup_regs()