Lines Matching full:dmac
318 * One cycle of DMAC operation.
370 /* A DMAC Thread */
376 /* Parent DMAC */
377 struct pl330_dmac *dmac; member
393 /* In the DMAC pool */
433 /* Pointer to the DMAC that manages this channel,
435 * As the parent, this DMAC also provides descriptors
438 struct pl330_dmac *dmac; member
444 * Hardware channel thread of PL330 DMAC. NULL if the channel is
469 /* Pool of descriptors available for the DMAC's channels */
495 /* State of DMAC operation */
500 /* Peripheral channels connected to this DMAC */
546 /* Hook to attach to DMAC's list of reqs with due callback */
566 return thrd->dmac->manager == thrd; in is_manager()
572 return (thrd->dmac->pcfg.mode & DMAC_MODE_NS) ? true : false; in _manager_ns()
658 cnt--; /* DMAC increments by 1 internally */ in _emit_LP()
873 void __iomem *regs = thrd->dmac->base; in _until_dmac_idle()
893 void __iomem *regs = thrd->dmac->base; in _execute_DBGINSN()
898 dev_err(thrd->dmac->ddma.dev, "DMAC halted!\n"); in _execute_DBGINSN()
918 void __iomem *regs = thrd->dmac->base; in _state()
976 void __iomem *regs = thrd->dmac->base; in _stop()
1003 void __iomem *regs = thrd->dmac->base; in _trigger()
1040 dev_info(thrd->dmac->ddma.dev, "%s:%d Recipe for ABORT!\n", in _trigger()
1480 struct pl330_dmac *pl330 = thrd->dmac; in pl330_submit_req()
1503 dev_info(thrd->dmac->ddma.dev, "%s:%d\n", in pl330_submit_req()
1511 dev_info(thrd->dmac->ddma.dev, in pl330_submit_req()
1591 /* The DMAC itself gone nuts */ in pl330_dotask()
1747 struct pl330_dmac *pl330 = thrd->dmac; in _alloc_event()
1800 struct pl330_dmac *pl330 = thrd->dmac; in _free_event()
1823 * by the client driver the make best use of the DMAC
1869 struct pl330_dmac *pl330 = thrd->dmac; in _reset_thread()
1902 thrd->dmac = pl330; in dmac_alloc_threads()
1910 thrd->dmac = pl330; in dmac_alloc_threads()
1938 dev_err(pl330->ddma.dev, "%s:%d Can't to create channels for DMAC!\n", in dmac_alloc_resources()
1954 /* Check if we can handle this DMAC */ in pl330_add()
1961 /* Read the configuration of the DMAC */ in pl330_add()
1982 /* Allocate resources needed by the DMAC */ in pl330_add()
1985 dev_err(pl330->ddma.dev, "Unable to create channels for DMAC\n"); in pl330_add()
2019 /* Free DMAC resources */ in pl330_del()
2060 /* QFull or DMAC Dying */ in fill_queue()
2065 dev_err(pch->dmac->ddma.dev, "%s:%d Bad Desc(%d)\n", in fill_queue()
2093 spin_lock(&pch->thread->dmac->lock); in pl330_tasklet()
2095 spin_unlock(&pch->thread->dmac->lock); in pl330_tasklet()
2100 spin_lock(&pch->thread->dmac->lock); in pl330_tasklet()
2102 spin_unlock(&pch->thread->dmac->lock); in pl330_tasklet()
2118 spin_lock(&pch->thread->dmac->lock); in pl330_tasklet()
2120 spin_unlock(&pch->thread->dmac->lock); in pl330_tasklet()
2125 list_move_tail(&desc->node, &pch->dmac->desc_pool); in pl330_tasklet()
2140 pm_runtime_mark_last_busy(pch->dmac->ddma.dev); in pl330_tasklet()
2141 pm_runtime_put_autosuspend(pch->dmac->ddma.dev); in pl330_tasklet()
2168 struct pl330_dmac *pl330 = pch->dmac; in pl330_alloc_chan_resources()
2190 * We need the data direction between the DMAC (the dma-mapping "device") and
2260 pch->dmac->quirks); in pl330_config_write()
2267 pch->dmac->quirks); in pl330_config_write()
2288 struct pl330_dmac *pl330 = pch->dmac; in pl330_terminate_all()
2337 struct pl330_dmac *pl330 = pch->dmac; in pl330_pause()
2362 struct pl330_dmac *pl330 = pch->dmac; in pl330_free_chan_resources()
2367 pm_runtime_get_sync(pch->dmac->ddma.dev); in pl330_free_chan_resources()
2374 list_splice_tail_init(&pch->work_list, &pch->dmac->desc_pool); in pl330_free_chan_resources()
2377 pm_runtime_mark_last_busy(pch->dmac->ddma.dev); in pl330_free_chan_resources()
2378 pm_runtime_put_autosuspend(pch->dmac->ddma.dev); in pl330_free_chan_resources()
2386 struct pl330_dmac *pl330 = pch->dmac; in pl330_get_current_xferred_count()
2387 void __iomem *regs = thrd->dmac->base; in pl330_get_current_xferred_count()
2399 pm_runtime_mark_last_busy(pch->dmac->ddma.dev); in pl330_get_current_xferred_count()
2428 spin_lock(&pch->thread->dmac->lock); in pl330_tx_status()
2474 spin_unlock(&pch->thread->dmac->lock); in pl330_tx_status()
2497 pm_runtime_get_sync(pch->dmac->ddma.dev); in pl330_issue_pending()
2551 /* Returns the number of descriptors added to the DMAC pool */
2600 struct pl330_dmac *pl330 = pch->dmac; in pl330_get_desc()
2604 /* Pluck one desc from the pool of DMAC */ in pl330_get_desc()
2607 /* If the DMAC pool is empty, alloc new */ in pl330_get_desc()
2625 desc->rqcfg.pcfg = &pch->dmac->pcfg; in pl330_get_desc()
2647 dev_err(pch->dmac->ddma.dev, "%s:%d Unable to fetch desc\n", in __pl330_prep_dma_memcpy()
2671 struct pl330_dmac *pl330 = pch->dmac; in get_burst_len()
2692 struct pl330_dmac *pl330 = pch->dmac; in pl330_prep_dma_cyclic()
2701 dev_err(pch->dmac->ddma.dev, "%s:%d Invalid dma direction\n", in pl330_prep_dma_cyclic()
2716 dev_err(pch->dmac->ddma.dev, "%s:%d Unable to fetch desc\n", in pl330_prep_dma_cyclic()
2788 pl330 = pch->dmac; in pl330_prep_dma_memcpy()
2872 struct pl330_dmac *pl330 = pch->dmac; in pl330_prep_slave_sg()
2874 dev_err(pch->dmac->ddma.dev, in pl330_prep_slave_sg()
3023 /* Allocate a new DMAC and its Channels */ in pl330_probe()
3119 pch->dmac = pl330; in pl330_probe()
3122 /* Add the channel to the DMAC list */ in pl330_probe()
3151 dev_err(&adev->dev, "unable to register DMAC\n"); in pl330_probe()
3175 "Loaded driver for PL330 DMAC-%x\n", adev->periphid); in pl330_probe()
3189 /* Idle the DMAC */ in pl330_probe()
3232 /* Idle the DMAC */ in pl330_remove()
3279 MODULE_DESCRIPTION("API Driver for PL330 DMAC");