Lines Matching full:desc

52 	struct ae4dma_desc desc;  in ae4_check_status_error()  local
55 memcpy(&desc, &cmd_q->qbase[idx], sizeof(struct ae4dma_desc)); in ae4_check_status_error()
56 status = desc.dw1.status; in ae4_check_status_error()
58 cmd_q->cmd_error = desc.dw1.err_code; in ae4_check_status_error()
91 struct pt_dma_desc *desc = to_pt_desc(vd); in pt_do_cleanup() local
92 struct pt_device *pt = desc->pt; in pt_do_cleanup()
94 kmem_cache_free(pt->dma_desc_cache, desc); in pt_do_cleanup()
114 static int ae4_core_execute_cmd(struct ae4dma_desc *desc, struct ae4_cmd_queue *ae4cmd_q) in ae4_core_execute_cmd() argument
116 bool soc = FIELD_GET(DWORD0_SOC, desc->dwouv.dw0); in ae4_core_execute_cmd()
120 desc->dwouv.dw0 |= FIELD_PREP(DWORD0_IOC, desc->dwouv.dw0); in ae4_core_execute_cmd()
121 desc->dwouv.dw0 &= ~DWORD0_SOC; in ae4_core_execute_cmd()
125 memcpy(&cmd_q->qbase[ae4cmd_q->tail_wi], desc, sizeof(struct ae4dma_desc)); in ae4_core_execute_cmd()
140 struct ae4dma_desc desc; in pt_core_perform_passthru_ae4() local
144 memset(&desc, 0, sizeof(desc)); in pt_core_perform_passthru_ae4()
145 desc.dwouv.dws.byte0 = CMD_AE4_DESC_DW0_VAL; in pt_core_perform_passthru_ae4()
147 desc.dw1.status = 0; in pt_core_perform_passthru_ae4()
148 desc.dw1.err_code = 0; in pt_core_perform_passthru_ae4()
149 desc.dw1.desc_id = 0; in pt_core_perform_passthru_ae4()
151 desc.length = pt_engine->src_len; in pt_core_perform_passthru_ae4()
153 desc.src_lo = upper_32_bits(pt_engine->src_dma); in pt_core_perform_passthru_ae4()
154 desc.src_hi = lower_32_bits(pt_engine->src_dma); in pt_core_perform_passthru_ae4()
155 desc.dst_lo = upper_32_bits(pt_engine->dst_dma); in pt_core_perform_passthru_ae4()
156 desc.dst_hi = lower_32_bits(pt_engine->dst_dma); in pt_core_perform_passthru_ae4()
158 return ae4_core_execute_cmd(&desc, ae4cmd_q); in pt_core_perform_passthru_ae4()
161 static int pt_dma_start_desc(struct pt_dma_desc *desc, struct pt_dma_chan *chan) in pt_dma_start_desc() argument
168 desc->issued_to_hw = 1; in pt_dma_start_desc()
170 pt_cmd = &desc->pt_cmd; in pt_dma_start_desc()
197 struct pt_dma_desc *desc) in pt_handle_active_desc() argument
207 if (desc) { in pt_handle_active_desc()
208 if (!desc->issued_to_hw) { in pt_handle_active_desc()
210 if (desc->status != DMA_ERROR) in pt_handle_active_desc()
211 return desc; in pt_handle_active_desc()
214 tx_desc = &desc->vd.tx; in pt_handle_active_desc()
215 vd = &desc->vd; in pt_handle_active_desc()
222 if (pt->ver != AE4_DMA_VERSION && desc) { in pt_handle_active_desc()
223 if (desc->status != DMA_COMPLETE) { in pt_handle_active_desc()
224 if (desc->status != DMA_ERROR) in pt_handle_active_desc()
225 desc->status = DMA_COMPLETE; in pt_handle_active_desc()
229 list_del(&desc->vd.node); in pt_handle_active_desc()
236 desc = pt_next_dma_desc(chan); in pt_handle_active_desc()
245 } while (desc); in pt_handle_active_desc()
263 struct pt_dma_desc *desc = data; in pt_cmd_callback() local
274 dma_chan = desc->vd.tx.chan; in pt_cmd_callback()
279 desc->status = DMA_ERROR; in pt_cmd_callback()
303 desc = pt_handle_active_desc(chan, desc); in pt_cmd_callback()
306 if (!desc) in pt_cmd_callback()
309 ret = pt_dma_start_desc(desc, chan); in pt_cmd_callback()
313 desc->status = DMA_ERROR; in pt_cmd_callback()
320 struct pt_dma_desc *desc; in pt_alloc_dma_desc() local
322 desc = kmem_cache_zalloc(chan->pt->dma_desc_cache, GFP_NOWAIT); in pt_alloc_dma_desc()
323 if (!desc) in pt_alloc_dma_desc()
326 vchan_tx_prep(&chan->vc, &desc->vd, flags); in pt_alloc_dma_desc()
328 desc->pt = chan->pt; in pt_alloc_dma_desc()
329 desc->pt->cmd_q.int_en = !!(flags & DMA_PREP_INTERRUPT); in pt_alloc_dma_desc()
330 desc->issued_to_hw = 0; in pt_alloc_dma_desc()
331 desc->status = DMA_IN_PROGRESS; in pt_alloc_dma_desc()
333 return desc; in pt_alloc_dma_desc()
339 struct pt_dma_desc *desc = data; in pt_cmd_callback_work() local
345 dma_chan = desc->vd.tx.chan; in pt_cmd_callback_work()
351 tx_desc = &desc->vd.tx; in pt_cmd_callback_work()
352 vd = &desc->vd; in pt_cmd_callback_work()
355 desc->status = DMA_ERROR; in pt_cmd_callback_work()
358 if (desc) { in pt_cmd_callback_work()
359 if (desc->status != DMA_COMPLETE) { in pt_cmd_callback_work()
360 if (desc->status != DMA_ERROR) in pt_cmd_callback_work()
361 desc->status = DMA_COMPLETE; in pt_cmd_callback_work()
374 list_del(&desc->vd.node); in pt_cmd_callback_work()
389 struct pt_dma_desc *desc; in pt_create_desc() local
393 desc = pt_alloc_dma_desc(chan, flags); in pt_create_desc()
394 if (!desc) in pt_create_desc()
397 pt_cmd = &desc->pt_cmd; in pt_create_desc()
405 pt_cmd->data = desc; in pt_create_desc()
407 desc->len = len; in pt_create_desc()
418 return desc; in pt_create_desc()
425 struct pt_dma_desc *desc; in pt_prep_dma_memcpy() local
427 desc = pt_create_desc(dma_chan, dst, src, len, flags); in pt_prep_dma_memcpy()
428 if (!desc) in pt_prep_dma_memcpy()
431 return &desc->vd.tx; in pt_prep_dma_memcpy()
438 struct pt_dma_desc *desc; in pt_prep_dma_interrupt() local
440 desc = pt_alloc_dma_desc(chan, flags); in pt_prep_dma_interrupt()
441 if (!desc) in pt_prep_dma_interrupt()
444 return &desc->vd.tx; in pt_prep_dma_interrupt()
450 struct pt_dma_desc *desc; in pt_issue_pending() local
459 desc = pt_next_dma_desc(chan); in pt_issue_pending()
460 if (desc && pt->ver != AE4_DMA_VERSION) in pt_issue_pending()
465 desc = pt_next_dma_desc(chan); in pt_issue_pending()
470 if (engine_is_idle && desc) in pt_issue_pending()
471 pt_cmd_callback(desc, 0); in pt_issue_pending()
519 struct pt_dma_desc *desc = NULL; in pt_resume() local
527 desc = pt_next_dma_desc(chan); in pt_resume()
531 if (desc) in pt_resume()
532 pt_cmd_callback(desc, 0); in pt_resume()
591 "%s-dmaengine-desc-cache", in pt_dmaengine_register()