Lines Matching refs:chan
94 re_chan = container_of(tx->chan, struct fsl_re_chan, chan); in fsl_re_tx_submit()
105 static void fsl_re_issue_pending(struct dma_chan *chan) in fsl_re_issue_pending() argument
112 re_chan = container_of(chan, struct fsl_re_chan, chan); in fsl_re_issue_pending()
162 fsl_re_issue_pending(&re_chan->chan); in fsl_re_cleanup_descs()
241 static enum dma_status fsl_re_tx_status(struct dma_chan *chan, in fsl_re_tx_status() argument
245 return dma_cookie_status(chan, cookie, txstate); in fsl_re_tx_status()
265 dma_async_tx_descriptor_init(&desc->async_tx, &re_chan->chan); in fsl_re_init_desc()
325 struct dma_chan *chan, dma_addr_t dest, dma_addr_t *src, in fsl_re_prep_dma_genq() argument
338 re_chan = container_of(chan, struct fsl_re_chan, chan); in fsl_re_prep_dma_genq()
400 struct dma_chan *chan, dma_addr_t dest, dma_addr_t *src, in fsl_re_prep_dma_xor() argument
404 return fsl_re_prep_dma_genq(chan, dest, src, src_cnt, NULL, len, flags); in fsl_re_prep_dma_xor()
412 struct dma_chan *chan, dma_addr_t *dest, dma_addr_t *src, in fsl_re_prep_dma_pq() argument
425 re_chan = container_of(chan, struct fsl_re_chan, chan); in fsl_re_prep_dma_pq()
446 tx = fsl_re_prep_dma_genq(chan, dest[1], dma_src, 2, coef, len, in fsl_re_prep_dma_pq()
463 return fsl_re_prep_dma_genq(chan, dest[1], src, src_cnt, in fsl_re_prep_dma_pq()
535 struct dma_chan *chan, dma_addr_t dest, dma_addr_t src, in fsl_re_prep_dma_memcpy() argument
545 re_chan = container_of(chan, struct fsl_re_chan, chan); in fsl_re_prep_dma_memcpy()
581 static int fsl_re_alloc_chan_resources(struct dma_chan *chan) in fsl_re_alloc_chan_resources() argument
589 re_chan = container_of(chan, struct fsl_re_chan, chan); in fsl_re_alloc_chan_resources()
611 static void fsl_re_free_chan_resources(struct dma_chan *chan) in fsl_re_free_chan_resources() argument
616 re_chan = container_of(chan, struct fsl_re_chan, chan); in fsl_re_free_chan_resources()
637 struct fsl_re_chan *chan; in fsl_re_chan_probe() local
648 chan = devm_kzalloc(dev, sizeof(*chan), GFP_KERNEL); in fsl_re_chan_probe()
649 if (!chan) in fsl_re_chan_probe()
668 chan->jrregs = (struct fsl_re_chan_cfg *)((u8 *)re_priv->re_regs + in fsl_re_chan_probe()
672 chan->irq = irq_of_parse_and_map(np, 0); in fsl_re_chan_probe()
673 if (chan->irq == NO_IRQ) { in fsl_re_chan_probe()
679 snprintf(chan->name, sizeof(chan->name), "re_jr%02d", q); in fsl_re_chan_probe()
682 tasklet_init(&chan->irqtask, fsl_re_dequeue, (unsigned long)chandev); in fsl_re_chan_probe()
684 ret = request_irq(chan->irq, fsl_re_isr, 0, chan->name, chandev); in fsl_re_chan_probe()
691 re_priv->re_jrs[q] = chan; in fsl_re_chan_probe()
692 chan->chan.device = dma_dev; in fsl_re_chan_probe()
693 chan->chan.private = chan; in fsl_re_chan_probe()
694 chan->dev = chandev; in fsl_re_chan_probe()
695 chan->re_dev = re_priv; in fsl_re_chan_probe()
697 spin_lock_init(&chan->desc_lock); in fsl_re_chan_probe()
698 INIT_LIST_HEAD(&chan->ack_q); in fsl_re_chan_probe()
699 INIT_LIST_HEAD(&chan->active_q); in fsl_re_chan_probe()
700 INIT_LIST_HEAD(&chan->submit_q); in fsl_re_chan_probe()
701 INIT_LIST_HEAD(&chan->free_q); in fsl_re_chan_probe()
703 chan->inb_ring_virt_addr = dma_pool_alloc(chan->re_dev->hw_desc_pool, in fsl_re_chan_probe()
704 GFP_KERNEL, &chan->inb_phys_addr); in fsl_re_chan_probe()
705 if (!chan->inb_ring_virt_addr) { in fsl_re_chan_probe()
711 chan->oub_ring_virt_addr = dma_pool_alloc(chan->re_dev->hw_desc_pool, in fsl_re_chan_probe()
712 GFP_KERNEL, &chan->oub_phys_addr); in fsl_re_chan_probe()
713 if (!chan->oub_ring_virt_addr) { in fsl_re_chan_probe()
720 out_be32(&chan->jrregs->inbring_base_h, in fsl_re_chan_probe()
721 chan->inb_phys_addr & FSL_RE_ADDR_BIT_MASK); in fsl_re_chan_probe()
722 out_be32(&chan->jrregs->oubring_base_h, in fsl_re_chan_probe()
723 chan->oub_phys_addr & FSL_RE_ADDR_BIT_MASK); in fsl_re_chan_probe()
724 out_be32(&chan->jrregs->inbring_base_l, in fsl_re_chan_probe()
725 chan->inb_phys_addr >> FSL_RE_ADDR_BIT_SHIFT); in fsl_re_chan_probe()
726 out_be32(&chan->jrregs->oubring_base_l, in fsl_re_chan_probe()
727 chan->oub_phys_addr >> FSL_RE_ADDR_BIT_SHIFT); in fsl_re_chan_probe()
728 out_be32(&chan->jrregs->inbring_size, in fsl_re_chan_probe()
730 out_be32(&chan->jrregs->oubring_size, in fsl_re_chan_probe()
734 status = in_be32(&chan->jrregs->jr_config_1) & FSL_RE_REG_LIODN_MASK; in fsl_re_chan_probe()
737 out_be32(&chan->jrregs->jr_config_1, in fsl_re_chan_probe()
740 dev_set_drvdata(chandev, chan); in fsl_re_chan_probe()
743 out_be32(&chan->jrregs->jr_command, FSL_RE_ENABLE); in fsl_re_chan_probe()
748 dma_pool_free(chan->re_dev->hw_desc_pool, chan->inb_ring_virt_addr, in fsl_re_chan_probe()
749 chan->inb_phys_addr); in fsl_re_chan_probe()
857 static void fsl_re_remove_chan(struct fsl_re_chan *chan) in fsl_re_remove_chan() argument
859 dma_pool_free(chan->re_dev->hw_desc_pool, chan->inb_ring_virt_addr, in fsl_re_remove_chan()
860 chan->inb_phys_addr); in fsl_re_remove_chan()
862 dma_pool_free(chan->re_dev->hw_desc_pool, chan->oub_ring_virt_addr, in fsl_re_remove_chan()
863 chan->oub_phys_addr); in fsl_re_remove_chan()