Lines Matching defs:promise

314  * pchan and, if successful, will configure it to fulfill a promise
322 struct sun4i_dma_promise *promise = NULL;
367 promise = list_first_entry(&contract->demands,
369 vchan->processing = promise;
372 if (promise) {
376 configure_pchan(pchan, promise);
423 * Generate a promise, to be used in a normal DMA contract.
425 * A NDMA promise contains all the information required to program the
427 * promise will live in the demands list on a contract. Once it has been
436 struct sun4i_dma_promise *promise;
443 promise = kzalloc(sizeof(*promise), GFP_NOWAIT);
444 if (!promise)
447 promise->src = src;
448 promise->dst = dest;
449 promise->len = len;
450 promise->cfg = SUN4I_DMA_CFG_LOADING |
462 promise->cfg |= SUN4I_DMA_CFG_SRC_BURST_LENGTH(ret);
468 promise->cfg |= SUN4I_DMA_CFG_DST_BURST_LENGTH(ret);
474 promise->cfg |= SUN4I_DMA_CFG_SRC_DATA_WIDTH(ret);
480 promise->cfg |= SUN4I_DMA_CFG_DST_DATA_WIDTH(ret);
482 return promise;
485 kfree(promise);
490 * Generate a promise, to be used in a dedicated DMA contract.
492 * A DDMA promise contains all the information required to program the
494 * promise will live in the demands list on a contract. Once it has been
502 struct sun4i_dma_promise *promise;
505 promise = kzalloc(sizeof(*promise), GFP_NOWAIT);
506 if (!promise)
509 promise->src = src;
510 promise->dst = dest;
511 promise->len = len;
512 promise->cfg = SUN4I_DMA_CFG_LOADING |
519 promise->cfg |= SUN4I_DMA_CFG_SRC_BURST_LENGTH(ret);
525 promise->cfg |= SUN4I_DMA_CFG_DST_BURST_LENGTH(ret);
531 promise->cfg |= SUN4I_DMA_CFG_SRC_DATA_WIDTH(ret);
537 promise->cfg |= SUN4I_DMA_CFG_DST_DATA_WIDTH(ret);
539 return promise;
542 kfree(promise);
552 * after another. Each piece is represented as a promise.
569 * Get next promise on a cyclic transfer
572 * loop. This function returns the next promise from a cyclic contract,
578 struct sun4i_dma_promise *promise;
580 promise = list_first_entry_or_null(&contract->demands,
582 if (!promise) {
585 promise = list_first_entry(&contract->demands,
589 return promise;
598 struct sun4i_dma_promise *promise, *tmp;
601 list_for_each_entry_safe(promise, tmp, &contract->demands, list)
602 kfree(promise);
604 list_for_each_entry_safe(promise, tmp, &contract->completed_demands, list)
605 kfree(promise);
616 struct sun4i_dma_promise *promise;
634 promise = generate_ddma_promise(chan, src, dest, len, sconfig);
636 promise = generate_ndma_promise(chan, src, dest, len, sconfig,
639 if (!promise) {
646 promise->cfg |= SUN4I_DMA_CFG_SRC_DRQ_TYPE(SUN4I_DDMA_DRQ_TYPE_SDRAM) |
649 promise->cfg |= SUN4I_DMA_CFG_SRC_DRQ_TYPE(SUN4I_NDMA_DRQ_TYPE_SDRAM) |
653 /* Fill the contract with our only promise */
654 list_add_tail(&promise->list, &contract->demands);
667 struct sun4i_dma_promise *promise;
713 * out of a promise, so we need to program the DMA engine less
749 /* Make the promise */
751 promise = generate_ddma_promise(chan, src, dest,
754 promise = generate_ndma_promise(chan, src, dest,
757 if (!promise) {
761 promise->cfg |= endpoints;
764 list_add_tail(&promise->list, &contract->demands);
778 struct sun4i_dma_promise *promise;
840 /* And make a suitable promise */
842 promise = generate_ddma_promise(chan, srcaddr, dstaddr,
846 promise = generate_ndma_promise(chan, srcaddr, dstaddr,
850 if (!promise)
853 promise->cfg |= endpoints;
854 promise->para = para;
857 list_add_tail(&promise->list, &contract->demands);
950 struct sun4i_dma_promise *promise;
966 list_for_each_entry(promise, &contract->demands, list)
967 bytes += promise->len;
974 promise = list_first_entry_or_null(&contract->demands,
976 if (promise && pchan) {
977 bytes -= promise->len;
1016 struct sun4i_dma_promise *promise;
1042 * Move the promise into the completed list now that
1063 promise = get_next_cyclic_promise(contract);
1064 vchan->processing = promise;
1065 configure_pchan(pchan, promise);