hsuc 37 drivers/dma/hsu/hsu.c static inline void hsu_chan_disable(struct hsu_dma_chan *hsuc) hsuc 39 drivers/dma/hsu/hsu.c hsu_chan_writel(hsuc, HSU_CH_CR, 0); hsuc 42 drivers/dma/hsu/hsu.c static inline void hsu_chan_enable(struct hsu_dma_chan *hsuc) hsuc 46 drivers/dma/hsu/hsu.c if (hsuc->direction == DMA_MEM_TO_DEV) hsuc 48 drivers/dma/hsu/hsu.c else if (hsuc->direction == DMA_DEV_TO_MEM) hsuc 51 drivers/dma/hsu/hsu.c hsu_chan_writel(hsuc, HSU_CH_CR, cr); hsuc 54 drivers/dma/hsu/hsu.c static void hsu_dma_chan_start(struct hsu_dma_chan *hsuc) hsuc 56 drivers/dma/hsu/hsu.c struct dma_slave_config *config = &hsuc->config; hsuc 57 drivers/dma/hsu/hsu.c struct hsu_dma_desc *desc = hsuc->desc; hsuc 62 drivers/dma/hsu/hsu.c if (hsuc->direction == DMA_MEM_TO_DEV) { hsuc 65 drivers/dma/hsu/hsu.c } else if (hsuc->direction == DMA_DEV_TO_MEM) { hsuc 70 drivers/dma/hsu/hsu.c hsu_chan_disable(hsuc); hsuc 72 drivers/dma/hsu/hsu.c hsu_chan_writel(hsuc, HSU_CH_DCR, 0); hsuc 73 drivers/dma/hsu/hsu.c hsu_chan_writel(hsuc, HSU_CH_BSR, bsr); hsuc 74 drivers/dma/hsu/hsu.c hsu_chan_writel(hsuc, HSU_CH_MTSR, mtsr); hsuc 79 drivers/dma/hsu/hsu.c hsu_chan_writel(hsuc, HSU_CH_DxSAR(i), desc->sg[i].addr); hsuc 80 drivers/dma/hsu/hsu.c hsu_chan_writel(hsuc, HSU_CH_DxTSR(i), desc->sg[i].len); hsuc 92 drivers/dma/hsu/hsu.c hsu_chan_writel(hsuc, HSU_CH_DCR, dcr); hsuc 94 drivers/dma/hsu/hsu.c hsu_chan_enable(hsuc); hsuc 97 drivers/dma/hsu/hsu.c static void hsu_dma_stop_channel(struct hsu_dma_chan *hsuc) hsuc 99 drivers/dma/hsu/hsu.c hsu_chan_disable(hsuc); hsuc 100 drivers/dma/hsu/hsu.c hsu_chan_writel(hsuc, HSU_CH_DCR, 0); hsuc 103 drivers/dma/hsu/hsu.c static void hsu_dma_start_channel(struct hsu_dma_chan *hsuc) hsuc 105 drivers/dma/hsu/hsu.c hsu_dma_chan_start(hsuc); hsuc 108 drivers/dma/hsu/hsu.c static void hsu_dma_start_transfer(struct hsu_dma_chan *hsuc) hsuc 113 drivers/dma/hsu/hsu.c vdesc = vchan_next_desc(&hsuc->vchan); hsuc 115 drivers/dma/hsu/hsu.c hsuc->desc = NULL; hsuc 120 drivers/dma/hsu/hsu.c hsuc->desc = to_hsu_dma_desc(vdesc); hsuc 123 drivers/dma/hsu/hsu.c hsu_dma_start_channel(hsuc); hsuc 146 drivers/dma/hsu/hsu.c struct hsu_dma_chan *hsuc; hsuc 154 drivers/dma/hsu/hsu.c hsuc = &chip->hsu->chan[nr]; hsuc 160 drivers/dma/hsu/hsu.c spin_lock_irqsave(&hsuc->vchan.lock, flags); hsuc 161 drivers/dma/hsu/hsu.c sr = hsu_chan_readl(hsuc, HSU_CH_SR); hsuc 162 drivers/dma/hsu/hsu.c spin_unlock_irqrestore(&hsuc->vchan.lock, flags); hsuc 204 drivers/dma/hsu/hsu.c struct hsu_dma_chan *hsuc; hsuc 212 drivers/dma/hsu/hsu.c hsuc = &chip->hsu->chan[nr]; hsuc 214 drivers/dma/hsu/hsu.c spin_lock_irqsave(&hsuc->vchan.lock, flags); hsuc 215 drivers/dma/hsu/hsu.c desc = hsuc->desc; hsuc 220 drivers/dma/hsu/hsu.c hsu_dma_start_channel(hsuc); hsuc 224 drivers/dma/hsu/hsu.c hsu_dma_start_transfer(hsuc); hsuc 227 drivers/dma/hsu/hsu.c spin_unlock_irqrestore(&hsuc->vchan.lock, flags); hsuc 263 drivers/dma/hsu/hsu.c struct hsu_dma_chan *hsuc = to_hsu_dma_chan(chan); hsuc 284 drivers/dma/hsu/hsu.c return vchan_tx_prep(&hsuc->vchan, &desc->vdesc, flags); hsuc 289 drivers/dma/hsu/hsu.c struct hsu_dma_chan *hsuc = to_hsu_dma_chan(chan); hsuc 292 drivers/dma/hsu/hsu.c spin_lock_irqsave(&hsuc->vchan.lock, flags); hsuc 293 drivers/dma/hsu/hsu.c if (vchan_issue_pending(&hsuc->vchan) && !hsuc->desc) hsuc 294 drivers/dma/hsu/hsu.c hsu_dma_start_transfer(hsuc); hsuc 295 drivers/dma/hsu/hsu.c spin_unlock_irqrestore(&hsuc->vchan.lock, flags); hsuc 298 drivers/dma/hsu/hsu.c static size_t hsu_dma_active_desc_size(struct hsu_dma_chan *hsuc) hsuc 300 drivers/dma/hsu/hsu.c struct hsu_dma_desc *desc = hsuc->desc; hsuc 309 drivers/dma/hsu/hsu.c bytes += hsu_chan_readl(hsuc, HSU_CH_DxTSR(i)); hsuc 318 drivers/dma/hsu/hsu.c struct hsu_dma_chan *hsuc = to_hsu_dma_chan(chan); hsuc 328 drivers/dma/hsu/hsu.c spin_lock_irqsave(&hsuc->vchan.lock, flags); hsuc 329 drivers/dma/hsu/hsu.c vdesc = vchan_find_desc(&hsuc->vchan, cookie); hsuc 330 drivers/dma/hsu/hsu.c if (hsuc->desc && cookie == hsuc->desc->vdesc.tx.cookie) { hsuc 331 drivers/dma/hsu/hsu.c bytes = hsu_dma_active_desc_size(hsuc); hsuc 333 drivers/dma/hsu/hsu.c status = hsuc->desc->status; hsuc 338 drivers/dma/hsu/hsu.c spin_unlock_irqrestore(&hsuc->vchan.lock, flags); hsuc 346 drivers/dma/hsu/hsu.c struct hsu_dma_chan *hsuc = to_hsu_dma_chan(chan); hsuc 348 drivers/dma/hsu/hsu.c memcpy(&hsuc->config, config, sizeof(hsuc->config)); hsuc 355 drivers/dma/hsu/hsu.c struct hsu_dma_chan *hsuc = to_hsu_dma_chan(chan); hsuc 358 drivers/dma/hsu/hsu.c spin_lock_irqsave(&hsuc->vchan.lock, flags); hsuc 359 drivers/dma/hsu/hsu.c if (hsuc->desc && hsuc->desc->status == DMA_IN_PROGRESS) { hsuc 360 drivers/dma/hsu/hsu.c hsu_chan_disable(hsuc); hsuc 361 drivers/dma/hsu/hsu.c hsuc->desc->status = DMA_PAUSED; hsuc 363 drivers/dma/hsu/hsu.c spin_unlock_irqrestore(&hsuc->vchan.lock, flags); hsuc 370 drivers/dma/hsu/hsu.c struct hsu_dma_chan *hsuc = to_hsu_dma_chan(chan); hsuc 373 drivers/dma/hsu/hsu.c spin_lock_irqsave(&hsuc->vchan.lock, flags); hsuc 374 drivers/dma/hsu/hsu.c if (hsuc->desc && hsuc->desc->status == DMA_PAUSED) { hsuc 375 drivers/dma/hsu/hsu.c hsuc->desc->status = DMA_IN_PROGRESS; hsuc 376 drivers/dma/hsu/hsu.c hsu_chan_enable(hsuc); hsuc 378 drivers/dma/hsu/hsu.c spin_unlock_irqrestore(&hsuc->vchan.lock, flags); hsuc 385 drivers/dma/hsu/hsu.c struct hsu_dma_chan *hsuc = to_hsu_dma_chan(chan); hsuc 389 drivers/dma/hsu/hsu.c spin_lock_irqsave(&hsuc->vchan.lock, flags); hsuc 391 drivers/dma/hsu/hsu.c hsu_dma_stop_channel(hsuc); hsuc 392 drivers/dma/hsu/hsu.c if (hsuc->desc) { hsuc 393 drivers/dma/hsu/hsu.c hsu_dma_desc_free(&hsuc->desc->vdesc); hsuc 394 drivers/dma/hsu/hsu.c hsuc->desc = NULL; hsuc 397 drivers/dma/hsu/hsu.c vchan_get_all_descriptors(&hsuc->vchan, &head); hsuc 398 drivers/dma/hsu/hsu.c spin_unlock_irqrestore(&hsuc->vchan.lock, flags); hsuc 399 drivers/dma/hsu/hsu.c vchan_dma_desc_free_list(&hsuc->vchan, &head); hsuc 411 drivers/dma/hsu/hsu.c struct hsu_dma_chan *hsuc = to_hsu_dma_chan(chan); hsuc 413 drivers/dma/hsu/hsu.c vchan_synchronize(&hsuc->vchan); hsuc 439 drivers/dma/hsu/hsu.c struct hsu_dma_chan *hsuc = &hsu->chan[i]; hsuc 441 drivers/dma/hsu/hsu.c hsuc->vchan.desc_free = hsu_dma_desc_free; hsuc 442 drivers/dma/hsu/hsu.c vchan_init(&hsuc->vchan, &hsu->dma); hsuc 444 drivers/dma/hsu/hsu.c hsuc->direction = (i & 0x1) ? DMA_DEV_TO_MEM : DMA_MEM_TO_DEV; hsuc 445 drivers/dma/hsu/hsu.c hsuc->reg = addr + i * HSU_DMA_CHAN_LENGTH; hsuc 490 drivers/dma/hsu/hsu.c struct hsu_dma_chan *hsuc = &hsu->chan[i]; hsuc 492 drivers/dma/hsu/hsu.c tasklet_kill(&hsuc->vchan.task); hsuc 99 drivers/dma/hsu/hsu.h static inline u32 hsu_chan_readl(struct hsu_dma_chan *hsuc, int offset) hsuc 101 drivers/dma/hsu/hsu.h return readl(hsuc->reg + offset); hsuc 104 drivers/dma/hsu/hsu.h static inline void hsu_chan_writel(struct hsu_dma_chan *hsuc, int offset, hsuc 107 drivers/dma/hsu/hsu.h writel(value, hsuc->reg + offset);