Lines Matching refs:sdesc
117 struct sirfsoc_dma_desc *sdesc = NULL; in sirfsoc_dma_execute() local
124 sdesc = list_first_entry(&schan->queued, struct sirfsoc_dma_desc, in sirfsoc_dma_execute()
127 list_move_tail(&sdesc->node, &schan->active); in sirfsoc_dma_execute()
130 writel_relaxed(sdesc->width, sdma->base + SIRFSOC_DMA_WIDTH_0 + in sirfsoc_dma_execute()
133 (sdesc->dir << SIRFSOC_DMA_DIR_CTRL_BIT), in sirfsoc_dma_execute()
135 writel_relaxed(sdesc->xlen, sdma->base + cid * 0x10 + in sirfsoc_dma_execute()
137 writel_relaxed(sdesc->ylen, sdma->base + cid * 0x10 + in sirfsoc_dma_execute()
146 writel(sdesc->addr >> 2, sdma->base + cid * 0x10 + SIRFSOC_DMA_CH_ADDR); in sirfsoc_dma_execute()
148 if (sdesc->cyclic) { in sirfsoc_dma_execute()
161 struct sirfsoc_dma_desc *sdesc = NULL; in sirfsoc_dma_irq() local
173 sdesc = list_first_entry(&schan->active, struct sirfsoc_dma_desc, in sirfsoc_dma_irq()
175 if (!sdesc->cyclic) { in sirfsoc_dma_irq()
197 struct sirfsoc_dma_desc *sdesc; in sirfsoc_dma_process_completed() local
214 list_for_each_entry(sdesc, &list, node) { in sirfsoc_dma_process_completed()
215 desc = &sdesc->desc; in sirfsoc_dma_process_completed()
231 sdesc = list_first_entry(&schan->active, struct sirfsoc_dma_desc, in sirfsoc_dma_process_completed()
234 if (!sdesc || (sdesc && !sdesc->cyclic)) { in sirfsoc_dma_process_completed()
244 desc = &sdesc->desc; in sirfsoc_dma_process_completed()
266 struct sirfsoc_dma_desc *sdesc; in sirfsoc_dma_tx_submit() local
270 sdesc = container_of(txd, struct sirfsoc_dma_desc, desc); in sirfsoc_dma_tx_submit()
275 list_move_tail(&sdesc->node, &schan->queued); in sirfsoc_dma_tx_submit()
381 struct sirfsoc_dma_desc *sdesc; in sirfsoc_dma_alloc_chan_resources() local
390 sdesc = kzalloc(sizeof(*sdesc), GFP_KERNEL); in sirfsoc_dma_alloc_chan_resources()
391 if (!sdesc) { in sirfsoc_dma_alloc_chan_resources()
397 dma_async_tx_descriptor_init(&sdesc->desc, chan); in sirfsoc_dma_alloc_chan_resources()
398 sdesc->desc.flags = DMA_CTRL_ACK; in sirfsoc_dma_alloc_chan_resources()
399 sdesc->desc.tx_submit = sirfsoc_dma_tx_submit; in sirfsoc_dma_alloc_chan_resources()
401 list_add_tail(&sdesc->node, &descs); in sirfsoc_dma_alloc_chan_resources()
421 struct sirfsoc_dma_desc *sdesc, *tmp; in sirfsoc_dma_free_chan_resources() local
439 list_for_each_entry_safe(sdesc, tmp, &descs, node) in sirfsoc_dma_free_chan_resources()
440 kfree(sdesc); in sirfsoc_dma_free_chan_resources()
468 struct sirfsoc_dma_desc *sdesc; in sirfsoc_dma_tx_status() local
476 sdesc = list_first_entry(&schan->active, struct sirfsoc_dma_desc, in sirfsoc_dma_tx_status()
478 dma_request_bytes = (sdesc->xlen + 1) * (sdesc->ylen + 1) * in sirfsoc_dma_tx_status()
479 (sdesc->width * SIRFSOC_DMA_WORD_LEN); in sirfsoc_dma_tx_status()
484 residue = dma_request_bytes - (dma_pos - sdesc->addr); in sirfsoc_dma_tx_status()
498 struct sirfsoc_dma_desc *sdesc = NULL; in sirfsoc_dma_prep_interleaved() local
510 sdesc = list_first_entry(&schan->free, struct sirfsoc_dma_desc, in sirfsoc_dma_prep_interleaved()
512 list_del(&sdesc->node); in sirfsoc_dma_prep_interleaved()
516 if (!sdesc) { in sirfsoc_dma_prep_interleaved()
531 sdesc->cyclic = 0; in sirfsoc_dma_prep_interleaved()
532 sdesc->xlen = xt->sgl[0].size / SIRFSOC_DMA_WORD_LEN; in sirfsoc_dma_prep_interleaved()
533 sdesc->width = (xt->sgl[0].size + xt->sgl[0].icg) / in sirfsoc_dma_prep_interleaved()
535 sdesc->ylen = xt->numf - 1; in sirfsoc_dma_prep_interleaved()
537 sdesc->addr = xt->src_start; in sirfsoc_dma_prep_interleaved()
538 sdesc->dir = 1; in sirfsoc_dma_prep_interleaved()
540 sdesc->addr = xt->dst_start; in sirfsoc_dma_prep_interleaved()
541 sdesc->dir = 0; in sirfsoc_dma_prep_interleaved()
544 list_add_tail(&sdesc->node, &schan->prepared); in sirfsoc_dma_prep_interleaved()
552 return &sdesc->desc; in sirfsoc_dma_prep_interleaved()
566 struct sirfsoc_dma_desc *sdesc = NULL; in sirfsoc_dma_prep_cyclic() local
586 sdesc = list_first_entry(&schan->free, struct sirfsoc_dma_desc, in sirfsoc_dma_prep_cyclic()
588 list_del(&sdesc->node); in sirfsoc_dma_prep_cyclic()
592 if (!sdesc) in sirfsoc_dma_prep_cyclic()
597 sdesc->addr = addr; in sirfsoc_dma_prep_cyclic()
598 sdesc->cyclic = 1; in sirfsoc_dma_prep_cyclic()
599 sdesc->xlen = 0; in sirfsoc_dma_prep_cyclic()
600 sdesc->ylen = buf_len / SIRFSOC_DMA_WORD_LEN - 1; in sirfsoc_dma_prep_cyclic()
601 sdesc->width = 1; in sirfsoc_dma_prep_cyclic()
602 list_add_tail(&sdesc->node, &schan->prepared); in sirfsoc_dma_prep_cyclic()
605 return &sdesc->desc; in sirfsoc_dma_prep_cyclic()
815 struct sirfsoc_dma_desc *sdesc; in sirfsoc_dma_pm_suspend() local
838 sdesc = list_first_entry(&schan->active, in sirfsoc_dma_pm_suspend()
856 struct sirfsoc_dma_desc *sdesc; in sirfsoc_dma_pm_resume() local
871 sdesc = list_first_entry(&schan->active, in sirfsoc_dma_pm_resume()
874 writel_relaxed(sdesc->width, in sirfsoc_dma_pm_resume()
876 writel_relaxed(sdesc->xlen, in sirfsoc_dma_pm_resume()
878 writel_relaxed(sdesc->ylen, in sirfsoc_dma_pm_resume()
882 writel_relaxed(sdesc->addr >> 2, in sirfsoc_dma_pm_resume()