Lines Matching refs:task
83 #define to_vdpu_task(task) \ argument
84 container_of(task, struct vdpu_task, mpp_task)
204 struct vdpu_task *task, in vdpu_process_reg_fd() argument
208 int fmt = VDPU2_GET_FORMAT(task->reg[VDPU2_REG_SYS_CTRL_INDEX]); in vdpu_process_reg_fd()
210 ret = mpp_translate_reg_address(session, &task->mpp_task, in vdpu_process_reg_fd()
211 fmt, task->reg, &task->off_inf); in vdpu_process_reg_fd()
223 fd = task->reg[idx]; in vdpu_process_reg_fd()
226 fd = task->reg[idx] & 0x3ff; in vdpu_process_reg_fd()
227 offset = task->reg[idx] >> 10 << 4; in vdpu_process_reg_fd()
229 mem_region = mpp_task_attach_fd(&task->mpp_task, fd); in vdpu_process_reg_fd()
232 idx, task->reg[idx], fd); in vdpu_process_reg_fd()
239 task->reg[idx] = iova + offset; in vdpu_process_reg_fd()
241 mpp_translate_reg_offset_info(&task->mpp_task, in vdpu_process_reg_fd()
242 &task->off_inf, task->reg); in vdpu_process_reg_fd()
246 static int vdpu_extract_task_msg(struct vdpu_task *task, in vdpu_extract_task_msg() argument
252 struct mpp_hw_info *hw_info = task->mpp_task.hw_info; in vdpu_extract_task_msg()
265 ret = mpp_check_req(req, 0, sizeof(task->reg), in vdpu_extract_task_msg()
269 if (copy_from_user((u8 *)task->reg + req->offset, in vdpu_extract_task_msg()
274 memcpy(&task->w_reqs[task->w_req_cnt++], in vdpu_extract_task_msg()
280 ret = mpp_check_req(req, 0, sizeof(task->reg), in vdpu_extract_task_msg()
284 memcpy(&task->r_reqs[task->r_req_cnt++], in vdpu_extract_task_msg()
288 mpp_extract_reg_offset_info(&task->off_inf, req); in vdpu_extract_task_msg()
295 task->w_req_cnt, task->r_req_cnt); in vdpu_extract_task_msg()
305 struct vdpu_task *task = NULL; in vdpu_alloc_task() local
310 task = kzalloc(sizeof(*task), GFP_KERNEL); in vdpu_alloc_task()
311 if (!task) in vdpu_alloc_task()
314 mpp_task = &task->mpp_task; in vdpu_alloc_task()
317 mpp_task->reg = task->reg; in vdpu_alloc_task()
319 ret = vdpu_extract_task_msg(task, msgs); in vdpu_alloc_task()
324 ret = vdpu_process_reg_fd(session, task, msgs); in vdpu_alloc_task()
328 task->strm_addr = task->reg[VDPU2_REG_STREAM_RLC_BASE_INDEX]; in vdpu_alloc_task()
329 task->clk_mode = CLK_MODE_NORMAL; in vdpu_alloc_task()
339 kfree(task); in vdpu_alloc_task()
348 struct vdpu_task *task = to_vdpu_task(mpp_task); in vdpu_run() local
357 for (i = 0; i < task->w_req_cnt; i++) { in vdpu_run()
358 struct mpp_request *req = &task->w_reqs[i]; in vdpu_run()
362 mpp_write_req(mpp, task->reg, s, e, reg_en); in vdpu_run()
376 task->reg[reg_en] | VDPU2_DEC_START); in vdpu_run()
400 struct vdpu_task *task = to_vdpu_task(mpp_task); in vdpu_finish() local
405 for (i = 0; i < task->r_req_cnt; i++) { in vdpu_finish()
406 req = &task->r_reqs[i]; in vdpu_finish()
409 mpp_read_req(mpp, task->reg, s, e); in vdpu_finish()
412 task->reg[VDPU2_REG_DEC_INT_INDEX] = task->irq_status; in vdpu_finish()
415 dec_length = dec_get - task->strm_addr; in vdpu_finish()
416 task->reg[VDPU2_REG_STREAM_RLC_BASE_INDEX] = dec_length << 10; in vdpu_finish()
431 struct vdpu_task *task = to_vdpu_task(mpp_task); in vdpu_result() local
434 for (i = 0; i < task->r_req_cnt; i++) { in vdpu_result()
435 req = &task->r_reqs[i]; in vdpu_result()
438 (u8 *)task->reg + req->offset, in vdpu_result()
451 struct vdpu_task *task = to_vdpu_task(mpp_task); in vdpu_free_task() local
454 kfree(task); in vdpu_free_task()
563 struct vdpu_task *task = to_vdpu_task(mpp_task); in vdpu_set_freq() local
565 mpp_clk_set_rate(&dec->aclk_info, task->clk_mode); in vdpu_set_freq()
595 struct vdpu_task *task = NULL; in vdpu_isr() local
605 task = to_vdpu_task(mpp_task); in vdpu_isr()
606 task->irq_status = mpp->irq_status; in vdpu_isr()
608 task->irq_status); in vdpu_isr()
616 if (err_mask & task->irq_status) in vdpu_isr()