Lines Matching refs:promise
326 struct sun4i_dma_promise *promise = NULL; in __execute_vchan_pending() local
371 promise = list_first_entry(&contract->demands, in __execute_vchan_pending()
373 vchan->processing = promise; in __execute_vchan_pending()
376 if (promise) { in __execute_vchan_pending()
380 configure_pchan(pchan, promise); in __execute_vchan_pending()
440 struct sun4i_dma_promise *promise; in generate_ndma_promise() local
447 promise = kzalloc(sizeof(*promise), GFP_NOWAIT); in generate_ndma_promise()
448 if (!promise) in generate_ndma_promise()
451 promise->src = src; in generate_ndma_promise()
452 promise->dst = dest; in generate_ndma_promise()
453 promise->len = len; in generate_ndma_promise()
454 promise->cfg = SUN4I_DMA_CFG_LOADING | in generate_ndma_promise()
466 promise->cfg |= SUN4I_DMA_CFG_SRC_BURST_LENGTH(ret); in generate_ndma_promise()
472 promise->cfg |= SUN4I_DMA_CFG_DST_BURST_LENGTH(ret); in generate_ndma_promise()
478 promise->cfg |= SUN4I_DMA_CFG_SRC_DATA_WIDTH(ret); in generate_ndma_promise()
484 promise->cfg |= SUN4I_DMA_CFG_DST_DATA_WIDTH(ret); in generate_ndma_promise()
486 return promise; in generate_ndma_promise()
489 kfree(promise); in generate_ndma_promise()
506 struct sun4i_dma_promise *promise; in generate_ddma_promise() local
509 promise = kzalloc(sizeof(*promise), GFP_NOWAIT); in generate_ddma_promise()
510 if (!promise) in generate_ddma_promise()
513 promise->src = src; in generate_ddma_promise()
514 promise->dst = dest; in generate_ddma_promise()
515 promise->len = len; in generate_ddma_promise()
516 promise->cfg = SUN4I_DMA_CFG_LOADING | in generate_ddma_promise()
523 promise->cfg |= SUN4I_DMA_CFG_SRC_BURST_LENGTH(ret); in generate_ddma_promise()
529 promise->cfg |= SUN4I_DMA_CFG_DST_BURST_LENGTH(ret); in generate_ddma_promise()
535 promise->cfg |= SUN4I_DMA_CFG_SRC_DATA_WIDTH(ret); in generate_ddma_promise()
541 promise->cfg |= SUN4I_DMA_CFG_DST_DATA_WIDTH(ret); in generate_ddma_promise()
543 return promise; in generate_ddma_promise()
546 kfree(promise); in generate_ddma_promise()
582 struct sun4i_dma_promise *promise; in get_next_cyclic_promise() local
584 promise = list_first_entry_or_null(&contract->demands, in get_next_cyclic_promise()
586 if (!promise) { in get_next_cyclic_promise()
589 promise = list_first_entry(&contract->demands, in get_next_cyclic_promise()
593 return promise; in get_next_cyclic_promise()
602 struct sun4i_dma_promise *promise, *tmp; in sun4i_dma_free_contract() local
605 list_for_each_entry_safe(promise, tmp, &contract->demands, list) in sun4i_dma_free_contract()
606 kfree(promise); in sun4i_dma_free_contract()
608 list_for_each_entry_safe(promise, tmp, &contract->completed_demands, list) in sun4i_dma_free_contract()
609 kfree(promise); in sun4i_dma_free_contract()
620 struct sun4i_dma_promise *promise; in sun4i_dma_prep_dma_memcpy() local
638 promise = generate_ddma_promise(chan, src, dest, len, sconfig); in sun4i_dma_prep_dma_memcpy()
640 promise = generate_ndma_promise(chan, src, dest, len, sconfig, in sun4i_dma_prep_dma_memcpy()
643 if (!promise) { in sun4i_dma_prep_dma_memcpy()
650 promise->cfg |= SUN4I_DMA_CFG_SRC_DRQ_TYPE(SUN4I_DDMA_DRQ_TYPE_SDRAM) | in sun4i_dma_prep_dma_memcpy()
653 promise->cfg |= SUN4I_DMA_CFG_SRC_DRQ_TYPE(SUN4I_NDMA_DRQ_TYPE_SDRAM) | in sun4i_dma_prep_dma_memcpy()
658 list_add_tail(&promise->list, &contract->demands); in sun4i_dma_prep_dma_memcpy()
671 struct sun4i_dma_promise *promise; in sun4i_dma_prep_dma_cyclic() local
754 promise = generate_ndma_promise(chan, src, dest, in sun4i_dma_prep_dma_cyclic()
756 if (!promise) { in sun4i_dma_prep_dma_cyclic()
760 promise->cfg |= endpoints; in sun4i_dma_prep_dma_cyclic()
763 list_add_tail(&promise->list, &contract->demands); in sun4i_dma_prep_dma_cyclic()
777 struct sun4i_dma_promise *promise; in sun4i_dma_prep_slave_sg() local
841 promise = generate_ddma_promise(chan, srcaddr, dstaddr, in sun4i_dma_prep_slave_sg()
845 promise = generate_ndma_promise(chan, srcaddr, dstaddr, in sun4i_dma_prep_slave_sg()
849 if (!promise) in sun4i_dma_prep_slave_sg()
852 promise->cfg |= endpoints; in sun4i_dma_prep_slave_sg()
853 promise->para = para; in sun4i_dma_prep_slave_sg()
856 list_add_tail(&promise->list, &contract->demands); in sun4i_dma_prep_slave_sg()
948 struct sun4i_dma_promise *promise; in sun4i_dma_tx_status() local
964 list_for_each_entry(promise, &contract->demands, list) in sun4i_dma_tx_status()
965 bytes += promise->len; in sun4i_dma_tx_status()
972 promise = list_first_entry_or_null(&contract->demands, in sun4i_dma_tx_status()
974 if (promise && pchan) { in sun4i_dma_tx_status()
975 bytes -= promise->len; in sun4i_dma_tx_status()
1014 struct sun4i_dma_promise *promise; in sun4i_dma_interrupt() local
1061 promise = get_next_cyclic_promise(contract); in sun4i_dma_interrupt()
1062 vchan->processing = promise; in sun4i_dma_interrupt()
1063 configure_pchan(pchan, promise); in sun4i_dma_interrupt()