idma64c            59 drivers/dma/idma64.c static void idma64_chan_init(struct idma64 *idma64, struct idma64_chan *idma64c)
idma64c            67 drivers/dma/idma64.c 	channel_writel(idma64c, CFG_LO, cfglo);
idma64c            68 drivers/dma/idma64.c 	channel_writel(idma64c, CFG_HI, cfghi);
idma64c            71 drivers/dma/idma64.c 	channel_set_bit(idma64, MASK(XFER), idma64c->mask);
idma64c            72 drivers/dma/idma64.c 	channel_set_bit(idma64, MASK(ERROR), idma64c->mask);
idma64c            84 drivers/dma/idma64.c static void idma64_chan_stop(struct idma64 *idma64, struct idma64_chan *idma64c)
idma64c            86 drivers/dma/idma64.c 	channel_clear_bit(idma64, CH_EN, idma64c->mask);
idma64c            89 drivers/dma/idma64.c static void idma64_chan_start(struct idma64 *idma64, struct idma64_chan *idma64c)
idma64c            91 drivers/dma/idma64.c 	struct idma64_desc *desc = idma64c->desc;
idma64c            94 drivers/dma/idma64.c 	channel_writeq(idma64c, SAR, 0);
idma64c            95 drivers/dma/idma64.c 	channel_writeq(idma64c, DAR, 0);
idma64c            97 drivers/dma/idma64.c 	channel_writel(idma64c, CTL_HI, IDMA64C_CTLH_BLOCK_TS(~0UL));
idma64c            98 drivers/dma/idma64.c 	channel_writel(idma64c, CTL_LO, IDMA64C_CTLL_LLP_S_EN | IDMA64C_CTLL_LLP_D_EN);
idma64c           100 drivers/dma/idma64.c 	channel_writeq(idma64c, LLP, hw->llp);
idma64c           102 drivers/dma/idma64.c 	channel_set_bit(idma64, CH_EN, idma64c->mask);
idma64c           105 drivers/dma/idma64.c static void idma64_stop_transfer(struct idma64_chan *idma64c)
idma64c           107 drivers/dma/idma64.c 	struct idma64 *idma64 = to_idma64(idma64c->vchan.chan.device);
idma64c           109 drivers/dma/idma64.c 	idma64_chan_stop(idma64, idma64c);
idma64c           112 drivers/dma/idma64.c static void idma64_start_transfer(struct idma64_chan *idma64c)
idma64c           114 drivers/dma/idma64.c 	struct idma64 *idma64 = to_idma64(idma64c->vchan.chan.device);
idma64c           118 drivers/dma/idma64.c 	vdesc = vchan_next_desc(&idma64c->vchan);
idma64c           120 drivers/dma/idma64.c 		idma64c->desc = NULL;
idma64c           125 drivers/dma/idma64.c 	idma64c->desc = to_idma64_desc(vdesc);
idma64c           128 drivers/dma/idma64.c 	idma64_chan_init(idma64, idma64c);
idma64c           131 drivers/dma/idma64.c 	idma64_chan_start(idma64, idma64c);
idma64c           139 drivers/dma/idma64.c 	struct idma64_chan *idma64c = &idma64->chan[c];
idma64c           142 drivers/dma/idma64.c 	spin_lock(&idma64c->vchan.lock);
idma64c           143 drivers/dma/idma64.c 	desc = idma64c->desc;
idma64c           146 drivers/dma/idma64.c 			dma_writel(idma64, CLEAR(ERROR), idma64c->mask);
idma64c           149 drivers/dma/idma64.c 			dma_writel(idma64, CLEAR(XFER), idma64c->mask);
idma64c           152 drivers/dma/idma64.c 			idma64_start_transfer(idma64c);
idma64c           156 drivers/dma/idma64.c 		if (idma64c->desc == NULL || desc->status == DMA_ERROR)
idma64c           157 drivers/dma/idma64.c 			idma64_stop_transfer(idma64c);
idma64c           159 drivers/dma/idma64.c 	spin_unlock(&idma64c->vchan.lock);
idma64c           204 drivers/dma/idma64.c static void idma64_desc_free(struct idma64_chan *idma64c,
idma64c           214 drivers/dma/idma64.c 			dma_pool_free(idma64c->pool, hw->lli, hw->llp);
idma64c           224 drivers/dma/idma64.c 	struct idma64_chan *idma64c = to_idma64_chan(vdesc->tx.chan);
idma64c           226 drivers/dma/idma64.c 	idma64_desc_free(idma64c, to_idma64_desc(vdesc));
idma64c           268 drivers/dma/idma64.c static void idma64_desc_fill(struct idma64_chan *idma64c,
idma64c           271 drivers/dma/idma64.c 	struct dma_slave_config *config = &idma64c->config;
idma64c           297 drivers/dma/idma64.c 	struct idma64_chan *idma64c = to_idma64_chan(chan);
idma64c           310 drivers/dma/idma64.c 		hw->lli = dma_pool_alloc(idma64c->pool, GFP_NOWAIT, &hw->llp);
idma64c           313 drivers/dma/idma64.c 			idma64_desc_free(idma64c, desc);
idma64c           325 drivers/dma/idma64.c 	idma64_desc_fill(idma64c, desc);
idma64c           326 drivers/dma/idma64.c 	return vchan_tx_prep(&idma64c->vchan, &desc->vdesc, flags);
idma64c           331 drivers/dma/idma64.c 	struct idma64_chan *idma64c = to_idma64_chan(chan);
idma64c           334 drivers/dma/idma64.c 	spin_lock_irqsave(&idma64c->vchan.lock, flags);
idma64c           335 drivers/dma/idma64.c 	if (vchan_issue_pending(&idma64c->vchan) && !idma64c->desc)
idma64c           336 drivers/dma/idma64.c 		idma64_start_transfer(idma64c);
idma64c           337 drivers/dma/idma64.c 	spin_unlock_irqrestore(&idma64c->vchan.lock, flags);
idma64c           340 drivers/dma/idma64.c static size_t idma64_active_desc_size(struct idma64_chan *idma64c)
idma64c           342 drivers/dma/idma64.c 	struct idma64_desc *desc = idma64c->desc;
idma64c           345 drivers/dma/idma64.c 	u64 llp = channel_readq(idma64c, LLP);
idma64c           346 drivers/dma/idma64.c 	u32 ctlhi = channel_readl(idma64c, CTL_HI);
idma64c           368 drivers/dma/idma64.c 	struct idma64_chan *idma64c = to_idma64_chan(chan);
idma64c           378 drivers/dma/idma64.c 	spin_lock_irqsave(&idma64c->vchan.lock, flags);
idma64c           379 drivers/dma/idma64.c 	vdesc = vchan_find_desc(&idma64c->vchan, cookie);
idma64c           380 drivers/dma/idma64.c 	if (idma64c->desc && cookie == idma64c->desc->vdesc.tx.cookie) {
idma64c           381 drivers/dma/idma64.c 		bytes = idma64_active_desc_size(idma64c);
idma64c           383 drivers/dma/idma64.c 		status = idma64c->desc->status;
idma64c           388 drivers/dma/idma64.c 	spin_unlock_irqrestore(&idma64c->vchan.lock, flags);
idma64c           404 drivers/dma/idma64.c 	struct idma64_chan *idma64c = to_idma64_chan(chan);
idma64c           406 drivers/dma/idma64.c 	memcpy(&idma64c->config, config, sizeof(idma64c->config));
idma64c           408 drivers/dma/idma64.c 	convert_burst(&idma64c->config.src_maxburst);
idma64c           409 drivers/dma/idma64.c 	convert_burst(&idma64c->config.dst_maxburst);
idma64c           414 drivers/dma/idma64.c static void idma64_chan_deactivate(struct idma64_chan *idma64c, bool drain)
idma64c           419 drivers/dma/idma64.c 	cfglo = channel_readl(idma64c, CFG_LO);
idma64c           425 drivers/dma/idma64.c 	channel_writel(idma64c, CFG_LO, cfglo | IDMA64C_CFGL_CH_SUSP);
idma64c           428 drivers/dma/idma64.c 		cfglo = channel_readl(idma64c, CFG_LO);
idma64c           432 drivers/dma/idma64.c static void idma64_chan_activate(struct idma64_chan *idma64c)
idma64c           436 drivers/dma/idma64.c 	cfglo = channel_readl(idma64c, CFG_LO);
idma64c           437 drivers/dma/idma64.c 	channel_writel(idma64c, CFG_LO, cfglo & ~IDMA64C_CFGL_CH_SUSP);
idma64c           442 drivers/dma/idma64.c 	struct idma64_chan *idma64c = to_idma64_chan(chan);
idma64c           445 drivers/dma/idma64.c 	spin_lock_irqsave(&idma64c->vchan.lock, flags);
idma64c           446 drivers/dma/idma64.c 	if (idma64c->desc && idma64c->desc->status == DMA_IN_PROGRESS) {
idma64c           447 drivers/dma/idma64.c 		idma64_chan_deactivate(idma64c, false);
idma64c           448 drivers/dma/idma64.c 		idma64c->desc->status = DMA_PAUSED;
idma64c           450 drivers/dma/idma64.c 	spin_unlock_irqrestore(&idma64c->vchan.lock, flags);
idma64c           457 drivers/dma/idma64.c 	struct idma64_chan *idma64c = to_idma64_chan(chan);
idma64c           460 drivers/dma/idma64.c 	spin_lock_irqsave(&idma64c->vchan.lock, flags);
idma64c           461 drivers/dma/idma64.c 	if (idma64c->desc && idma64c->desc->status == DMA_PAUSED) {
idma64c           462 drivers/dma/idma64.c 		idma64c->desc->status = DMA_IN_PROGRESS;
idma64c           463 drivers/dma/idma64.c 		idma64_chan_activate(idma64c);
idma64c           465 drivers/dma/idma64.c 	spin_unlock_irqrestore(&idma64c->vchan.lock, flags);
idma64c           472 drivers/dma/idma64.c 	struct idma64_chan *idma64c = to_idma64_chan(chan);
idma64c           476 drivers/dma/idma64.c 	spin_lock_irqsave(&idma64c->vchan.lock, flags);
idma64c           477 drivers/dma/idma64.c 	idma64_chan_deactivate(idma64c, true);
idma64c           478 drivers/dma/idma64.c 	idma64_stop_transfer(idma64c);
idma64c           479 drivers/dma/idma64.c 	if (idma64c->desc) {
idma64c           480 drivers/dma/idma64.c 		idma64_vdesc_free(&idma64c->desc->vdesc);
idma64c           481 drivers/dma/idma64.c 		idma64c->desc = NULL;
idma64c           483 drivers/dma/idma64.c 	vchan_get_all_descriptors(&idma64c->vchan, &head);
idma64c           484 drivers/dma/idma64.c 	spin_unlock_irqrestore(&idma64c->vchan.lock, flags);
idma64c           486 drivers/dma/idma64.c 	vchan_dma_desc_free_list(&idma64c->vchan, &head);
idma64c           492 drivers/dma/idma64.c 	struct idma64_chan *idma64c = to_idma64_chan(chan);
idma64c           494 drivers/dma/idma64.c 	vchan_synchronize(&idma64c->vchan);
idma64c           499 drivers/dma/idma64.c 	struct idma64_chan *idma64c = to_idma64_chan(chan);
idma64c           502 drivers/dma/idma64.c 	idma64c->pool = dma_pool_create(dev_name(chan2dev(chan)),
idma64c           505 drivers/dma/idma64.c 	if (!idma64c->pool) {
idma64c           515 drivers/dma/idma64.c 	struct idma64_chan *idma64c = to_idma64_chan(chan);
idma64c           518 drivers/dma/idma64.c 	dma_pool_destroy(idma64c->pool);
idma64c           519 drivers/dma/idma64.c 	idma64c->pool = NULL;
idma64c           560 drivers/dma/idma64.c 		struct idma64_chan *idma64c = &idma64->chan[i];
idma64c           562 drivers/dma/idma64.c 		idma64c->vchan.desc_free = idma64_vdesc_free;
idma64c           563 drivers/dma/idma64.c 		vchan_init(&idma64c->vchan, &idma64->dma);
idma64c           565 drivers/dma/idma64.c 		idma64c->regs = idma64->regs + i * IDMA64_CH_LENGTH;
idma64c           566 drivers/dma/idma64.c 		idma64c->mask = BIT(i);
idma64c           617 drivers/dma/idma64.c 		struct idma64_chan *idma64c = &idma64->chan[i];
idma64c           619 drivers/dma/idma64.c 		tasklet_kill(&idma64c->vchan.task);
idma64c           151 drivers/dma/idma64.h static inline u32 idma64c_readl(struct idma64_chan *idma64c, int offset)
idma64c           153 drivers/dma/idma64.h 	return readl(idma64c->regs + offset);
idma64c           156 drivers/dma/idma64.h static inline void idma64c_writel(struct idma64_chan *idma64c, int offset,
idma64c           159 drivers/dma/idma64.h 	writel(value, idma64c->regs + offset);
idma64c           162 drivers/dma/idma64.h #define channel_readl(idma64c, reg)		\
idma64c           163 drivers/dma/idma64.h 	idma64c_readl(idma64c, IDMA64_CH_##reg)
idma64c           164 drivers/dma/idma64.h #define channel_writel(idma64c, reg, value)	\
idma64c           165 drivers/dma/idma64.h 	idma64c_writel(idma64c, IDMA64_CH_##reg, (value))
idma64c           167 drivers/dma/idma64.h static inline u64 idma64c_readq(struct idma64_chan *idma64c, int offset)
idma64c           169 drivers/dma/idma64.h 	return lo_hi_readq(idma64c->regs + offset);
idma64c           172 drivers/dma/idma64.h static inline void idma64c_writeq(struct idma64_chan *idma64c, int offset,
idma64c           175 drivers/dma/idma64.h 	lo_hi_writeq(value, idma64c->regs + offset);
idma64c           178 drivers/dma/idma64.h #define channel_readq(idma64c, reg)		\
idma64c           179 drivers/dma/idma64.h 	idma64c_readq(idma64c, IDMA64_CH_##reg)
idma64c           180 drivers/dma/idma64.h #define channel_writeq(idma64c, reg, value)	\
idma64c           181 drivers/dma/idma64.h 	idma64c_writeq(idma64c, IDMA64_CH_##reg, (value))