Lines Matching refs:contract
143 struct sun4i_dma_contract *contract; member
327 struct sun4i_dma_contract *contract = NULL; in __execute_vchan_pending() local
360 contract = to_sun4i_dma_contract(vd); in __execute_vchan_pending()
361 if (list_empty(&contract->demands)) { in __execute_vchan_pending()
363 list_del(&contract->vd.node); in __execute_vchan_pending()
364 vchan_cookie_complete(&contract->vd); in __execute_vchan_pending()
368 } while (list_empty(&contract->demands)); in __execute_vchan_pending()
371 promise = list_first_entry(&contract->demands, in __execute_vchan_pending()
377 vchan->contract = contract; in __execute_vchan_pending()
379 set_pchan_interrupt(priv, pchan, contract->is_cyclic, 1); in __execute_vchan_pending()
560 struct sun4i_dma_contract *contract; in generate_dma_contract() local
562 contract = kzalloc(sizeof(*contract), GFP_NOWAIT); in generate_dma_contract()
563 if (!contract) in generate_dma_contract()
566 INIT_LIST_HEAD(&contract->demands); in generate_dma_contract()
567 INIT_LIST_HEAD(&contract->completed_demands); in generate_dma_contract()
569 return contract; in generate_dma_contract()
580 get_next_cyclic_promise(struct sun4i_dma_contract *contract) in get_next_cyclic_promise() argument
584 promise = list_first_entry_or_null(&contract->demands, in get_next_cyclic_promise()
587 list_splice_init(&contract->completed_demands, in get_next_cyclic_promise()
588 &contract->demands); in get_next_cyclic_promise()
589 promise = list_first_entry(&contract->demands, in get_next_cyclic_promise()
601 struct sun4i_dma_contract *contract = to_sun4i_dma_contract(vd); in sun4i_dma_free_contract() local
605 list_for_each_entry_safe(promise, tmp, &contract->demands, list) in sun4i_dma_free_contract()
608 list_for_each_entry_safe(promise, tmp, &contract->completed_demands, list) in sun4i_dma_free_contract()
611 kfree(contract); in sun4i_dma_free_contract()
621 struct sun4i_dma_contract *contract; in sun4i_dma_prep_dma_memcpy() local
623 contract = generate_dma_contract(); in sun4i_dma_prep_dma_memcpy()
624 if (!contract) in sun4i_dma_prep_dma_memcpy()
644 kfree(contract); in sun4i_dma_prep_dma_memcpy()
658 list_add_tail(&promise->list, &contract->demands); in sun4i_dma_prep_dma_memcpy()
661 return vchan_tx_prep(&vchan->vc, &contract->vd, flags); in sun4i_dma_prep_dma_memcpy()
672 struct sun4i_dma_contract *contract; in sun4i_dma_prep_dma_cyclic() local
694 contract = generate_dma_contract(); in sun4i_dma_prep_dma_cyclic()
695 if (!contract) in sun4i_dma_prep_dma_cyclic()
698 contract->is_cyclic = 1; in sun4i_dma_prep_dma_cyclic()
763 list_add_tail(&promise->list, &contract->demands); in sun4i_dma_prep_dma_cyclic()
767 return vchan_tx_prep(&vchan->vc, &contract->vd, flags); in sun4i_dma_prep_dma_cyclic()
778 struct sun4i_dma_contract *contract; in sun4i_dma_prep_slave_sg() local
793 contract = generate_dma_contract(); in sun4i_dma_prep_slave_sg()
794 if (!contract) in sun4i_dma_prep_slave_sg()
856 list_add_tail(&promise->list, &contract->demands); in sun4i_dma_prep_slave_sg()
863 return vchan_tx_prep(&vchan->vc, &contract->vd, flags); in sun4i_dma_prep_slave_sg()
947 struct sun4i_dma_contract *contract; in sun4i_dma_tx_status() local
962 contract = to_sun4i_dma_contract(vd); in sun4i_dma_tx_status()
964 list_for_each_entry(promise, &contract->demands, list) in sun4i_dma_tx_status()
972 promise = list_first_entry_or_null(&contract->demands, in sun4i_dma_tx_status()
1013 struct sun4i_dma_contract *contract; in sun4i_dma_interrupt() local
1030 contract = vchan->contract; in sun4i_dma_interrupt()
1045 &contract->completed_demands); in sun4i_dma_interrupt()
1060 if (contract->is_cyclic) { in sun4i_dma_interrupt()
1061 promise = get_next_cyclic_promise(contract); in sun4i_dma_interrupt()
1064 vchan_cyclic_callback(&contract->vd); in sun4i_dma_interrupt()
1077 if (contract->is_cyclic) in sun4i_dma_interrupt()
1078 vchan_cyclic_callback(&contract->vd); in sun4i_dma_interrupt()