fsl_chan 45 drivers/dma/fsl-edma-common.c static void fsl_edma_enable_request(struct fsl_edma_chan *fsl_chan) fsl_chan 47 drivers/dma/fsl-edma-common.c struct edma_regs *regs = &fsl_chan->edma->regs; fsl_chan 48 drivers/dma/fsl-edma-common.c u32 ch = fsl_chan->vchan.chan.chan_id; fsl_chan 50 drivers/dma/fsl-edma-common.c if (fsl_chan->edma->drvdata->version == v1) { fsl_chan 51 drivers/dma/fsl-edma-common.c edma_writeb(fsl_chan->edma, EDMA_SEEI_SEEI(ch), regs->seei); fsl_chan 52 drivers/dma/fsl-edma-common.c edma_writeb(fsl_chan->edma, ch, regs->serq); fsl_chan 62 drivers/dma/fsl-edma-common.c void fsl_edma_disable_request(struct fsl_edma_chan *fsl_chan) fsl_chan 64 drivers/dma/fsl-edma-common.c struct edma_regs *regs = &fsl_chan->edma->regs; fsl_chan 65 drivers/dma/fsl-edma-common.c u32 ch = fsl_chan->vchan.chan.chan_id; fsl_chan 67 drivers/dma/fsl-edma-common.c if (fsl_chan->edma->drvdata->version == v1) { fsl_chan 68 drivers/dma/fsl-edma-common.c edma_writeb(fsl_chan->edma, ch, regs->cerq); fsl_chan 69 drivers/dma/fsl-edma-common.c edma_writeb(fsl_chan->edma, EDMA_CEEI_CEEI(ch), regs->ceei); fsl_chan 80 drivers/dma/fsl-edma-common.c static void mux_configure8(struct fsl_edma_chan *fsl_chan, void __iomem *addr, fsl_chan 93 drivers/dma/fsl-edma-common.c static void mux_configure32(struct fsl_edma_chan *fsl_chan, void __iomem *addr, fsl_chan 106 drivers/dma/fsl-edma-common.c void fsl_edma_chan_mux(struct fsl_edma_chan *fsl_chan, fsl_chan 109 drivers/dma/fsl-edma-common.c u32 ch = fsl_chan->vchan.chan.chan_id; fsl_chan 112 drivers/dma/fsl-edma-common.c u32 dmamux_nr = fsl_chan->edma->drvdata->dmamuxs; fsl_chan 114 drivers/dma/fsl-edma-common.c chans_per_mux = fsl_chan->edma->n_chans / dmamux_nr; fsl_chan 115 drivers/dma/fsl-edma-common.c ch_off = fsl_chan->vchan.chan.chan_id % chans_per_mux; fsl_chan 116 drivers/dma/fsl-edma-common.c muxaddr = fsl_chan->edma->muxbase[ch / chans_per_mux]; fsl_chan 119 drivers/dma/fsl-edma-common.c if (fsl_chan->edma->drvdata->version == v3) fsl_chan 120 drivers/dma/fsl-edma-common.c mux_configure32(fsl_chan, muxaddr, ch_off, slot, enable); fsl_chan 122 drivers/dma/fsl-edma-common.c mux_configure8(fsl_chan, muxaddr, ch_off, slot, enable); fsl_chan 157 drivers/dma/fsl-edma-common.c struct fsl_edma_chan *fsl_chan = to_fsl_edma_chan(chan); fsl_chan 161 drivers/dma/fsl-edma-common.c spin_lock_irqsave(&fsl_chan->vchan.lock, flags); fsl_chan 162 drivers/dma/fsl-edma-common.c fsl_edma_disable_request(fsl_chan); fsl_chan 163 drivers/dma/fsl-edma-common.c fsl_chan->edesc = NULL; fsl_chan 164 drivers/dma/fsl-edma-common.c fsl_chan->idle = true; fsl_chan 165 drivers/dma/fsl-edma-common.c vchan_get_all_descriptors(&fsl_chan->vchan, &head); fsl_chan 166 drivers/dma/fsl-edma-common.c spin_unlock_irqrestore(&fsl_chan->vchan.lock, flags); fsl_chan 167 drivers/dma/fsl-edma-common.c vchan_dma_desc_free_list(&fsl_chan->vchan, &head); fsl_chan 174 drivers/dma/fsl-edma-common.c struct fsl_edma_chan *fsl_chan = to_fsl_edma_chan(chan); fsl_chan 177 drivers/dma/fsl-edma-common.c spin_lock_irqsave(&fsl_chan->vchan.lock, flags); fsl_chan 178 drivers/dma/fsl-edma-common.c if (fsl_chan->edesc) { fsl_chan 179 drivers/dma/fsl-edma-common.c fsl_edma_disable_request(fsl_chan); fsl_chan 180 drivers/dma/fsl-edma-common.c fsl_chan->status = DMA_PAUSED; fsl_chan 181 drivers/dma/fsl-edma-common.c fsl_chan->idle = true; fsl_chan 183 drivers/dma/fsl-edma-common.c spin_unlock_irqrestore(&fsl_chan->vchan.lock, flags); fsl_chan 190 drivers/dma/fsl-edma-common.c struct fsl_edma_chan *fsl_chan = to_fsl_edma_chan(chan); fsl_chan 193 drivers/dma/fsl-edma-common.c spin_lock_irqsave(&fsl_chan->vchan.lock, flags); fsl_chan 194 drivers/dma/fsl-edma-common.c if (fsl_chan->edesc) { fsl_chan 195 drivers/dma/fsl-edma-common.c fsl_edma_enable_request(fsl_chan); fsl_chan 196 drivers/dma/fsl-edma-common.c fsl_chan->status = DMA_IN_PROGRESS; fsl_chan 197 drivers/dma/fsl-edma-common.c fsl_chan->idle = false; fsl_chan 199 drivers/dma/fsl-edma-common.c spin_unlock_irqrestore(&fsl_chan->vchan.lock, flags); fsl_chan 204 drivers/dma/fsl-edma-common.c static void fsl_edma_unprep_slave_dma(struct fsl_edma_chan *fsl_chan) fsl_chan 206 drivers/dma/fsl-edma-common.c if (fsl_chan->dma_dir != DMA_NONE) fsl_chan 207 drivers/dma/fsl-edma-common.c dma_unmap_resource(fsl_chan->vchan.chan.device->dev, fsl_chan 208 drivers/dma/fsl-edma-common.c fsl_chan->dma_dev_addr, fsl_chan 209 drivers/dma/fsl-edma-common.c fsl_chan->dma_dev_size, fsl_chan 210 drivers/dma/fsl-edma-common.c fsl_chan->dma_dir, 0); fsl_chan 211 drivers/dma/fsl-edma-common.c fsl_chan->dma_dir = DMA_NONE; fsl_chan 214 drivers/dma/fsl-edma-common.c static bool fsl_edma_prep_slave_dma(struct fsl_edma_chan *fsl_chan, fsl_chan 217 drivers/dma/fsl-edma-common.c struct device *dev = fsl_chan->vchan.chan.device->dev; fsl_chan 225 drivers/dma/fsl-edma-common.c addr = fsl_chan->cfg.dst_addr; fsl_chan 226 drivers/dma/fsl-edma-common.c size = fsl_chan->cfg.dst_maxburst; fsl_chan 230 drivers/dma/fsl-edma-common.c addr = fsl_chan->cfg.src_addr; fsl_chan 231 drivers/dma/fsl-edma-common.c size = fsl_chan->cfg.src_maxburst; fsl_chan 239 drivers/dma/fsl-edma-common.c if (fsl_chan->dma_dir == dma_dir) fsl_chan 242 drivers/dma/fsl-edma-common.c fsl_edma_unprep_slave_dma(fsl_chan); fsl_chan 244 drivers/dma/fsl-edma-common.c fsl_chan->dma_dev_addr = dma_map_resource(dev, addr, size, dma_dir, 0); fsl_chan 245 drivers/dma/fsl-edma-common.c if (dma_mapping_error(dev, fsl_chan->dma_dev_addr)) fsl_chan 247 drivers/dma/fsl-edma-common.c fsl_chan->dma_dev_size = size; fsl_chan 248 drivers/dma/fsl-edma-common.c fsl_chan->dma_dir = dma_dir; fsl_chan 256 drivers/dma/fsl-edma-common.c struct fsl_edma_chan *fsl_chan = to_fsl_edma_chan(chan); fsl_chan 258 drivers/dma/fsl-edma-common.c memcpy(&fsl_chan->cfg, cfg, sizeof(*cfg)); fsl_chan 259 drivers/dma/fsl-edma-common.c fsl_edma_unprep_slave_dma(fsl_chan); fsl_chan 265 drivers/dma/fsl-edma-common.c static size_t fsl_edma_desc_residue(struct fsl_edma_chan *fsl_chan, fsl_chan 268 drivers/dma/fsl-edma-common.c struct fsl_edma_desc *edesc = fsl_chan->edesc; fsl_chan 269 drivers/dma/fsl-edma-common.c struct edma_regs *regs = &fsl_chan->edma->regs; fsl_chan 270 drivers/dma/fsl-edma-common.c u32 ch = fsl_chan->vchan.chan.chan_id; fsl_chan 277 drivers/dma/fsl-edma-common.c for (len = i = 0; i < fsl_chan->edesc->n_tcds; i++) fsl_chan 285 drivers/dma/fsl-edma-common.c cur_addr = edma_readl(fsl_chan->edma, ®s->tcd[ch].saddr); fsl_chan 287 drivers/dma/fsl-edma-common.c cur_addr = edma_readl(fsl_chan->edma, ®s->tcd[ch].daddr); fsl_chan 290 drivers/dma/fsl-edma-common.c for (i = 0; i < fsl_chan->edesc->n_tcds; i++) { fsl_chan 311 drivers/dma/fsl-edma-common.c struct fsl_edma_chan *fsl_chan = to_fsl_edma_chan(chan); fsl_chan 321 drivers/dma/fsl-edma-common.c return fsl_chan->status; fsl_chan 323 drivers/dma/fsl-edma-common.c spin_lock_irqsave(&fsl_chan->vchan.lock, flags); fsl_chan 324 drivers/dma/fsl-edma-common.c vdesc = vchan_find_desc(&fsl_chan->vchan, cookie); fsl_chan 325 drivers/dma/fsl-edma-common.c if (fsl_chan->edesc && cookie == fsl_chan->edesc->vdesc.tx.cookie) fsl_chan 327 drivers/dma/fsl-edma-common.c fsl_edma_desc_residue(fsl_chan, vdesc, true); fsl_chan 330 drivers/dma/fsl-edma-common.c fsl_edma_desc_residue(fsl_chan, vdesc, false); fsl_chan 334 drivers/dma/fsl-edma-common.c spin_unlock_irqrestore(&fsl_chan->vchan.lock, flags); fsl_chan 336 drivers/dma/fsl-edma-common.c return fsl_chan->status; fsl_chan 340 drivers/dma/fsl-edma-common.c static void fsl_edma_set_tcd_regs(struct fsl_edma_chan *fsl_chan, fsl_chan 343 drivers/dma/fsl-edma-common.c struct fsl_edma_engine *edma = fsl_chan->edma; fsl_chan 344 drivers/dma/fsl-edma-common.c struct edma_regs *regs = &fsl_chan->edma->regs; fsl_chan 345 drivers/dma/fsl-edma-common.c u32 ch = fsl_chan->vchan.chan.chan_id; fsl_chan 414 drivers/dma/fsl-edma-common.c static struct fsl_edma_desc *fsl_edma_alloc_desc(struct fsl_edma_chan *fsl_chan, fsl_chan 424 drivers/dma/fsl-edma-common.c fsl_desc->echan = fsl_chan; fsl_chan 427 drivers/dma/fsl-edma-common.c fsl_desc->tcd[i].vtcd = dma_pool_alloc(fsl_chan->tcd_pool, fsl_chan 436 drivers/dma/fsl-edma-common.c dma_pool_free(fsl_chan->tcd_pool, fsl_desc->tcd[i].vtcd, fsl_chan 447 drivers/dma/fsl-edma-common.c struct fsl_edma_chan *fsl_chan = to_fsl_edma_chan(chan); fsl_chan 457 drivers/dma/fsl-edma-common.c if (!fsl_edma_prep_slave_dma(fsl_chan, direction)) fsl_chan 461 drivers/dma/fsl-edma-common.c fsl_desc = fsl_edma_alloc_desc(fsl_chan, sg_len); fsl_chan 469 drivers/dma/fsl-edma-common.c fsl_chan->attr = fsl_chan 470 drivers/dma/fsl-edma-common.c fsl_edma_get_tcd_attr(fsl_chan->cfg.dst_addr_width); fsl_chan 471 drivers/dma/fsl-edma-common.c nbytes = fsl_chan->cfg.dst_addr_width * fsl_chan 472 drivers/dma/fsl-edma-common.c fsl_chan->cfg.dst_maxburst; fsl_chan 474 drivers/dma/fsl-edma-common.c fsl_chan->attr = fsl_chan 475 drivers/dma/fsl-edma-common.c fsl_edma_get_tcd_attr(fsl_chan->cfg.src_addr_width); fsl_chan 476 drivers/dma/fsl-edma-common.c nbytes = fsl_chan->cfg.src_addr_width * fsl_chan 477 drivers/dma/fsl-edma-common.c fsl_chan->cfg.src_maxburst; fsl_chan 491 drivers/dma/fsl-edma-common.c dst_addr = fsl_chan->dma_dev_addr; fsl_chan 492 drivers/dma/fsl-edma-common.c soff = fsl_chan->cfg.dst_addr_width; fsl_chan 495 drivers/dma/fsl-edma-common.c src_addr = fsl_chan->dma_dev_addr; fsl_chan 498 drivers/dma/fsl-edma-common.c doff = fsl_chan->cfg.src_addr_width; fsl_chan 502 drivers/dma/fsl-edma-common.c fsl_chan->attr, soff, nbytes, 0, iter, fsl_chan 507 drivers/dma/fsl-edma-common.c return vchan_tx_prep(&fsl_chan->vchan, &fsl_desc->vdesc, flags); fsl_chan 516 drivers/dma/fsl-edma-common.c struct fsl_edma_chan *fsl_chan = to_fsl_edma_chan(chan); fsl_chan 526 drivers/dma/fsl-edma-common.c if (!fsl_edma_prep_slave_dma(fsl_chan, direction)) fsl_chan 529 drivers/dma/fsl-edma-common.c fsl_desc = fsl_edma_alloc_desc(fsl_chan, sg_len); fsl_chan 536 drivers/dma/fsl-edma-common.c fsl_chan->attr = fsl_chan 537 drivers/dma/fsl-edma-common.c fsl_edma_get_tcd_attr(fsl_chan->cfg.dst_addr_width); fsl_chan 538 drivers/dma/fsl-edma-common.c nbytes = fsl_chan->cfg.dst_addr_width * fsl_chan 539 drivers/dma/fsl-edma-common.c fsl_chan->cfg.dst_maxburst; fsl_chan 541 drivers/dma/fsl-edma-common.c fsl_chan->attr = fsl_chan 542 drivers/dma/fsl-edma-common.c fsl_edma_get_tcd_attr(fsl_chan->cfg.src_addr_width); fsl_chan 543 drivers/dma/fsl-edma-common.c nbytes = fsl_chan->cfg.src_addr_width * fsl_chan 544 drivers/dma/fsl-edma-common.c fsl_chan->cfg.src_maxburst; fsl_chan 553 drivers/dma/fsl-edma-common.c dst_addr = fsl_chan->dma_dev_addr; fsl_chan 554 drivers/dma/fsl-edma-common.c soff = fsl_chan->cfg.dst_addr_width; fsl_chan 557 drivers/dma/fsl-edma-common.c src_addr = fsl_chan->dma_dev_addr; fsl_chan 560 drivers/dma/fsl-edma-common.c doff = fsl_chan->cfg.src_addr_width; fsl_chan 567 drivers/dma/fsl-edma-common.c dst_addr, fsl_chan->attr, soff, fsl_chan 573 drivers/dma/fsl-edma-common.c dst_addr, fsl_chan->attr, soff, fsl_chan 579 drivers/dma/fsl-edma-common.c return vchan_tx_prep(&fsl_chan->vchan, &fsl_desc->vdesc, flags); fsl_chan 583 drivers/dma/fsl-edma-common.c void fsl_edma_xfer_desc(struct fsl_edma_chan *fsl_chan) fsl_chan 587 drivers/dma/fsl-edma-common.c vdesc = vchan_next_desc(&fsl_chan->vchan); fsl_chan 590 drivers/dma/fsl-edma-common.c fsl_chan->edesc = to_fsl_edma_desc(vdesc); fsl_chan 591 drivers/dma/fsl-edma-common.c fsl_edma_set_tcd_regs(fsl_chan, fsl_chan->edesc->tcd[0].vtcd); fsl_chan 592 drivers/dma/fsl-edma-common.c fsl_edma_enable_request(fsl_chan); fsl_chan 593 drivers/dma/fsl-edma-common.c fsl_chan->status = DMA_IN_PROGRESS; fsl_chan 594 drivers/dma/fsl-edma-common.c fsl_chan->idle = false; fsl_chan 600 drivers/dma/fsl-edma-common.c struct fsl_edma_chan *fsl_chan = to_fsl_edma_chan(chan); fsl_chan 603 drivers/dma/fsl-edma-common.c spin_lock_irqsave(&fsl_chan->vchan.lock, flags); fsl_chan 605 drivers/dma/fsl-edma-common.c if (unlikely(fsl_chan->pm_state != RUNNING)) { fsl_chan 606 drivers/dma/fsl-edma-common.c spin_unlock_irqrestore(&fsl_chan->vchan.lock, flags); fsl_chan 611 drivers/dma/fsl-edma-common.c if (vchan_issue_pending(&fsl_chan->vchan) && !fsl_chan->edesc) fsl_chan 612 drivers/dma/fsl-edma-common.c fsl_edma_xfer_desc(fsl_chan); fsl_chan 614 drivers/dma/fsl-edma-common.c spin_unlock_irqrestore(&fsl_chan->vchan.lock, flags); fsl_chan 620 drivers/dma/fsl-edma-common.c struct fsl_edma_chan *fsl_chan = to_fsl_edma_chan(chan); fsl_chan 622 drivers/dma/fsl-edma-common.c fsl_chan->tcd_pool = dma_pool_create("tcd_pool", chan->device->dev, fsl_chan 631 drivers/dma/fsl-edma-common.c struct fsl_edma_chan *fsl_chan = to_fsl_edma_chan(chan); fsl_chan 635 drivers/dma/fsl-edma-common.c spin_lock_irqsave(&fsl_chan->vchan.lock, flags); fsl_chan 636 drivers/dma/fsl-edma-common.c fsl_edma_disable_request(fsl_chan); fsl_chan 637 drivers/dma/fsl-edma-common.c fsl_edma_chan_mux(fsl_chan, 0, false); fsl_chan 638 drivers/dma/fsl-edma-common.c fsl_chan->edesc = NULL; fsl_chan 639 drivers/dma/fsl-edma-common.c vchan_get_all_descriptors(&fsl_chan->vchan, &head); fsl_chan 640 drivers/dma/fsl-edma-common.c fsl_edma_unprep_slave_dma(fsl_chan); fsl_chan 641 drivers/dma/fsl-edma-common.c spin_unlock_irqrestore(&fsl_chan->vchan.lock, flags); fsl_chan 643 drivers/dma/fsl-edma-common.c vchan_dma_desc_free_list(&fsl_chan->vchan, &head); fsl_chan 644 drivers/dma/fsl-edma-common.c dma_pool_destroy(fsl_chan->tcd_pool); fsl_chan 645 drivers/dma/fsl-edma-common.c fsl_chan->tcd_pool = NULL; fsl_chan 223 drivers/dma/fsl-edma-common.h void fsl_edma_disable_request(struct fsl_edma_chan *fsl_chan); fsl_chan 224 drivers/dma/fsl-edma-common.h void fsl_edma_chan_mux(struct fsl_edma_chan *fsl_chan, fsl_chan 242 drivers/dma/fsl-edma-common.h void fsl_edma_xfer_desc(struct fsl_edma_chan *fsl_chan); fsl_chan 25 drivers/dma/fsl-edma.c struct fsl_edma_chan *fsl_chan = to_fsl_edma_chan(chan); fsl_chan 27 drivers/dma/fsl-edma.c vchan_synchronize(&fsl_chan->vchan); fsl_chan 35 drivers/dma/fsl-edma.c struct fsl_edma_chan *fsl_chan; fsl_chan 45 drivers/dma/fsl-edma.c fsl_chan = &fsl_edma->chans[ch]; fsl_chan 47 drivers/dma/fsl-edma.c spin_lock(&fsl_chan->vchan.lock); fsl_chan 48 drivers/dma/fsl-edma.c if (!fsl_chan->edesc->iscyclic) { fsl_chan 49 drivers/dma/fsl-edma.c list_del(&fsl_chan->edesc->vdesc.node); fsl_chan 50 drivers/dma/fsl-edma.c vchan_cookie_complete(&fsl_chan->edesc->vdesc); fsl_chan 51 drivers/dma/fsl-edma.c fsl_chan->edesc = NULL; fsl_chan 52 drivers/dma/fsl-edma.c fsl_chan->status = DMA_COMPLETE; fsl_chan 53 drivers/dma/fsl-edma.c fsl_chan->idle = true; fsl_chan 55 drivers/dma/fsl-edma.c vchan_cyclic_callback(&fsl_chan->edesc->vdesc); fsl_chan 58 drivers/dma/fsl-edma.c if (!fsl_chan->edesc) fsl_chan 59 drivers/dma/fsl-edma.c fsl_edma_xfer_desc(fsl_chan); fsl_chan 61 drivers/dma/fsl-edma.c spin_unlock(&fsl_chan->vchan.lock); fsl_chan 101 drivers/dma/fsl-edma.c struct fsl_edma_chan *fsl_chan; fsl_chan 116 drivers/dma/fsl-edma.c fsl_chan = to_fsl_edma_chan(chan); fsl_chan 117 drivers/dma/fsl-edma.c fsl_chan->slave_id = dma_spec->args[1]; fsl_chan 118 drivers/dma/fsl-edma.c fsl_edma_chan_mux(fsl_chan, fsl_chan->slave_id, fsl_chan 257 drivers/dma/fsl-edma.c struct fsl_edma_chan *fsl_chan; fsl_chan 276 drivers/dma/fsl-edma.c len = sizeof(*fsl_edma) + sizeof(*fsl_chan) * chans; fsl_chan 338 drivers/dma/fsl-edma.c struct fsl_edma_chan *fsl_chan = &fsl_edma->chans[i]; fsl_chan 340 drivers/dma/fsl-edma.c fsl_chan->edma = fsl_edma; fsl_chan 341 drivers/dma/fsl-edma.c fsl_chan->pm_state = RUNNING; fsl_chan 342 drivers/dma/fsl-edma.c fsl_chan->slave_id = 0; fsl_chan 343 drivers/dma/fsl-edma.c fsl_chan->idle = true; fsl_chan 344 drivers/dma/fsl-edma.c fsl_chan->dma_dir = DMA_NONE; fsl_chan 345 drivers/dma/fsl-edma.c fsl_chan->vchan.desc_free = fsl_edma_free_desc; fsl_chan 346 drivers/dma/fsl-edma.c vchan_init(&fsl_chan->vchan, &fsl_edma->dma_dev); fsl_chan 349 drivers/dma/fsl-edma.c fsl_edma_chan_mux(fsl_chan, 0, false); fsl_chan 422 drivers/dma/fsl-edma.c struct fsl_edma_chan *fsl_chan; fsl_chan 427 drivers/dma/fsl-edma.c fsl_chan = &fsl_edma->chans[i]; fsl_chan 428 drivers/dma/fsl-edma.c spin_lock_irqsave(&fsl_chan->vchan.lock, flags); fsl_chan 430 drivers/dma/fsl-edma.c if (unlikely(!fsl_chan->idle)) { fsl_chan 432 drivers/dma/fsl-edma.c fsl_edma_disable_request(fsl_chan); fsl_chan 433 drivers/dma/fsl-edma.c fsl_edma_chan_mux(fsl_chan, 0, false); fsl_chan 436 drivers/dma/fsl-edma.c fsl_chan->pm_state = SUSPENDED; fsl_chan 437 drivers/dma/fsl-edma.c spin_unlock_irqrestore(&fsl_chan->vchan.lock, flags); fsl_chan 446 drivers/dma/fsl-edma.c struct fsl_edma_chan *fsl_chan; fsl_chan 451 drivers/dma/fsl-edma.c fsl_chan = &fsl_edma->chans[i]; fsl_chan 452 drivers/dma/fsl-edma.c fsl_chan->pm_state = RUNNING; fsl_chan 454 drivers/dma/fsl-edma.c if (fsl_chan->slave_id != 0) fsl_chan 455 drivers/dma/fsl-edma.c fsl_edma_chan_mux(fsl_chan, fsl_chan->slave_id, true); fsl_chan 294 drivers/dma/fsl-qdma.c struct fsl_qdma_chan *fsl_chan = to_fsl_qdma_chan(chan); fsl_chan 295 drivers/dma/fsl-qdma.c struct fsl_qdma_queue *fsl_queue = fsl_chan->queue; fsl_chan 296 drivers/dma/fsl-qdma.c struct fsl_qdma_engine *fsl_qdma = fsl_chan->qdma; fsl_chan 301 drivers/dma/fsl-qdma.c spin_lock_irqsave(&fsl_chan->vchan.lock, flags); fsl_chan 302 drivers/dma/fsl-qdma.c vchan_get_all_descriptors(&fsl_chan->vchan, &head); fsl_chan 303 drivers/dma/fsl-qdma.c spin_unlock_irqrestore(&fsl_chan->vchan.lock, flags); fsl_chan 305 drivers/dma/fsl-qdma.c vchan_dma_desc_free_list(&fsl_chan->vchan, &head); fsl_chan 443 drivers/dma/fsl-qdma.c *fsl_qdma_request_enqueue_desc(struct fsl_qdma_chan *fsl_chan) fsl_chan 448 drivers/dma/fsl-qdma.c struct fsl_qdma_queue *queue = fsl_chan->queue; fsl_chan 459 drivers/dma/fsl-qdma.c comp_temp->qchan = fsl_chan; fsl_chan 925 drivers/dma/fsl-qdma.c struct fsl_qdma_chan *fsl_chan = to_fsl_qdma_chan(chan); fsl_chan 927 drivers/dma/fsl-qdma.c fsl_comp = fsl_qdma_request_enqueue_desc(fsl_chan); fsl_chan 934 drivers/dma/fsl-qdma.c return vchan_tx_prep(&fsl_chan->vchan, &fsl_comp->vdesc, flags); fsl_chan 937 drivers/dma/fsl-qdma.c static void fsl_qdma_enqueue_desc(struct fsl_qdma_chan *fsl_chan) fsl_chan 942 drivers/dma/fsl-qdma.c struct fsl_qdma_queue *fsl_queue = fsl_chan->queue; fsl_chan 945 drivers/dma/fsl-qdma.c reg = qdma_readl(fsl_chan->qdma, block + FSL_QDMA_BCQSR(fsl_queue->id)); fsl_chan 948 drivers/dma/fsl-qdma.c vdesc = vchan_next_desc(&fsl_chan->vchan); fsl_chan 961 drivers/dma/fsl-qdma.c reg = qdma_readl(fsl_chan->qdma, block + FSL_QDMA_BCQMR(fsl_queue->id)); fsl_chan 963 drivers/dma/fsl-qdma.c qdma_writel(fsl_chan->qdma, reg, block + FSL_QDMA_BCQMR(fsl_queue->id)); fsl_chan 964 drivers/dma/fsl-qdma.c fsl_chan->status = DMA_IN_PROGRESS; fsl_chan 984 drivers/dma/fsl-qdma.c struct fsl_qdma_chan *fsl_chan = to_fsl_qdma_chan(chan); fsl_chan 985 drivers/dma/fsl-qdma.c struct fsl_qdma_queue *fsl_queue = fsl_chan->queue; fsl_chan 988 drivers/dma/fsl-qdma.c spin_lock(&fsl_chan->vchan.lock); fsl_chan 989 drivers/dma/fsl-qdma.c if (vchan_issue_pending(&fsl_chan->vchan)) fsl_chan 990 drivers/dma/fsl-qdma.c fsl_qdma_enqueue_desc(fsl_chan); fsl_chan 991 drivers/dma/fsl-qdma.c spin_unlock(&fsl_chan->vchan.lock); fsl_chan 997 drivers/dma/fsl-qdma.c struct fsl_qdma_chan *fsl_chan = to_fsl_qdma_chan(chan); fsl_chan 999 drivers/dma/fsl-qdma.c vchan_synchronize(&fsl_chan->vchan); fsl_chan 1006 drivers/dma/fsl-qdma.c struct fsl_qdma_chan *fsl_chan = to_fsl_qdma_chan(chan); fsl_chan 1008 drivers/dma/fsl-qdma.c spin_lock_irqsave(&fsl_chan->vchan.lock, flags); fsl_chan 1009 drivers/dma/fsl-qdma.c vchan_get_all_descriptors(&fsl_chan->vchan, &head); fsl_chan 1010 drivers/dma/fsl-qdma.c spin_unlock_irqrestore(&fsl_chan->vchan.lock, flags); fsl_chan 1011 drivers/dma/fsl-qdma.c vchan_dma_desc_free_list(&fsl_chan->vchan, &head); fsl_chan 1018 drivers/dma/fsl-qdma.c struct fsl_qdma_chan *fsl_chan = to_fsl_qdma_chan(chan); fsl_chan 1019 drivers/dma/fsl-qdma.c struct fsl_qdma_engine *fsl_qdma = fsl_chan->qdma; fsl_chan 1020 drivers/dma/fsl-qdma.c struct fsl_qdma_queue *fsl_queue = fsl_chan->queue; fsl_chan 1072 drivers/dma/fsl-qdma.c struct fsl_qdma_chan *fsl_chan; fsl_chan 1101 drivers/dma/fsl-qdma.c len = sizeof(*fsl_chan) * chans; fsl_chan 1165 drivers/dma/fsl-qdma.c struct fsl_qdma_chan *fsl_chan = &fsl_qdma->chans[i]; fsl_chan 1167 drivers/dma/fsl-qdma.c fsl_chan->qdma = fsl_qdma; fsl_chan 1168 drivers/dma/fsl-qdma.c fsl_chan->queue = fsl_qdma->queue + i % (fsl_qdma->n_queues * fsl_chan 1170 drivers/dma/fsl-qdma.c fsl_chan->vchan.desc_free = fsl_qdma_free_desc; fsl_chan 1171 drivers/dma/fsl-qdma.c vchan_init(&fsl_chan->vchan, &fsl_qdma->dma_dev); fsl_chan 183 drivers/dma/fsldma.h void (*toggle_ext_pause)(struct fsldma_chan *fsl_chan, int enable); fsl_chan 184 drivers/dma/fsldma.h void (*toggle_ext_start)(struct fsldma_chan *fsl_chan, int enable); fsl_chan 185 drivers/dma/fsldma.h void (*set_src_loop_size)(struct fsldma_chan *fsl_chan, int size); fsl_chan 186 drivers/dma/fsldma.h void (*set_dst_loop_size)(struct fsldma_chan *fsl_chan, int size); fsl_chan 187 drivers/dma/fsldma.h void (*set_request_count)(struct fsldma_chan *fsl_chan, int size); fsl_chan 256 drivers/dma/fsldma.h #define DMA_TO_CPU(fsl_chan, d, width) \ fsl_chan 257 drivers/dma/fsldma.h (((fsl_chan)->feature & FSL_DMA_BIG_ENDIAN) ? \ fsl_chan 260 drivers/dma/fsldma.h #define CPU_TO_DMA(fsl_chan, c, width) \ fsl_chan 261 drivers/dma/fsldma.h (((fsl_chan)->feature & FSL_DMA_BIG_ENDIAN) ? \