Lines Matching full:mdp
105 static struct img_config *__get_config_offset(struct mdp_dev *mdp, in __get_config_offset() argument
109 const int p_id = mdp->mdp_data->mdp_plat_id; in __get_config_offset()
110 struct device *dev = &mdp->pdev->dev; in __get_config_offset()
112 long bound = mdp->vpu.config_size; in __get_config_offset()
114 if (pp_idx >= mdp->mdp_data->pp_used) in __get_config_offset()
127 if ((long)cfg_n - (long)mdp->vpu.config > bound) { in __get_config_offset()
257 static int mdp_path_ctx_init(struct mdp_dev *mdp, struct mdp_path *path) in mdp_path_ctx_init() argument
259 const int p_id = mdp->mdp_data->mdp_plat_id; in mdp_path_ctx_init()
286 ret = mdp_comp_ctx_config(mdp, &path->comps[index], in mdp_path_ctx_init()
385 static int mdp_path_config(struct mdp_dev *mdp, struct mdp_cmdq_cmd *cmd, in mdp_path_config() argument
388 const int p_id = mdp->mdp_data->mdp_plat_id; in mdp_path_config()
471 struct mdp_dev *mdp; in mdp_auto_release_work() local
476 mdp = cmd->mdp; in mdp_auto_release_work()
478 pipe_id = __get_pipe(mdp, cmd->comps[0].public_id); in mdp_auto_release_work()
479 mutex = __get_mutex(mdp, &mdp->mdp_data->pipe_info[pipe_id]); in mdp_auto_release_work()
481 mdp_comp_clocks_off(&mdp->pdev->dev, cmd->comps, in mdp_auto_release_work()
484 if (refcount_dec_and_test(&mdp->job_count)) { in mdp_auto_release_work()
495 wake_up(&mdp->callback_wq); in mdp_auto_release_work()
498 cmdq_pkt_destroy(mdp->cmdq_clt[cmd->pp_idx], &cmd->pkt); in mdp_auto_release_work()
509 struct mdp_dev *mdp; in mdp_handle_cmdq_callback() local
521 mdp = cmd->mdp; in mdp_handle_cmdq_callback()
522 dev = &mdp->pdev->dev; in mdp_handle_cmdq_callback()
525 if (!queue_work(mdp->clock_wq, &cmd->auto_release_work)) { in mdp_handle_cmdq_callback()
529 pipe_id = __get_pipe(mdp, cmd->comps[0].public_id); in mdp_handle_cmdq_callback()
530 mutex = __get_mutex(mdp, &mdp->mdp_data->pipe_info[pipe_id]); in mdp_handle_cmdq_callback()
532 mdp_comp_clocks_off(&mdp->pdev->dev, cmd->comps, in mdp_handle_cmdq_callback()
535 if (refcount_dec_and_test(&mdp->job_count)) in mdp_handle_cmdq_callback()
536 wake_up(&mdp->callback_wq); in mdp_handle_cmdq_callback()
538 cmdq_pkt_destroy(mdp->cmdq_clt[cmd->pp_idx], &cmd->pkt); in mdp_handle_cmdq_callback()
546 static struct mdp_cmdq_cmd *mdp_cmdq_prepare(struct mdp_dev *mdp, in mdp_cmdq_prepare() argument
553 struct device *dev = &mdp->pdev->dev; in mdp_cmdq_prepare()
554 const int p_id = mdp->mdp_data->mdp_plat_id; in mdp_cmdq_prepare()
561 config = __get_config_offset(mdp, param, pp_idx); in mdp_cmdq_prepare()
573 ret = cmdq_pkt_create(mdp->cmdq_clt[pp_idx], &cmd->pkt, SZ_16K); in mdp_cmdq_prepare()
598 path->mdp_dev = mdp; in mdp_cmdq_prepare()
611 ret = mdp_path_ctx_init(mdp, path); in mdp_cmdq_prepare()
617 pipe_id = __get_pipe(mdp, path->comps[0].comp->public_id); in mdp_cmdq_prepare()
618 mutex = __get_mutex(mdp, &mdp->mdp_data->pipe_info[pipe_id]); in mdp_cmdq_prepare()
625 ret = mdp_path_config(mdp, cmd, path); in mdp_cmdq_prepare()
631 cmdq_pkt_jump_rel(&cmd->pkt, CMDQ_INST_SIZE, mdp->cmdq_shift_pa[pp_idx]); in mdp_cmdq_prepare()
641 if (mdp_cfg_comp_is_dummy(mdp, inner_id)) in mdp_cmdq_prepare()
647 mdp->cmdq_clt[pp_idx]->client.rx_callback = mdp_handle_cmdq_callback; in mdp_cmdq_prepare()
648 cmd->mdp = mdp; in mdp_cmdq_prepare()
666 cmdq_pkt_destroy(mdp->cmdq_clt[pp_idx], &cmd->pkt); in mdp_cmdq_prepare()
673 int mdp_cmdq_send(struct mdp_dev *mdp, struct mdp_cmdq_param *param) in mdp_cmdq_send() argument
676 struct device *dev = &mdp->pdev->dev; in mdp_cmdq_send()
680 refcount_set(&mdp->job_count, pp_used); in mdp_cmdq_send()
681 if (atomic_read(&mdp->suspended)) { in mdp_cmdq_send()
682 refcount_set(&mdp->job_count, 0); in mdp_cmdq_send()
687 cmd[i] = mdp_cmdq_prepare(mdp, param, i); in mdp_cmdq_send()
695 ret = mdp_comp_clocks_on(&mdp->pdev->dev, cmd[i]->comps, cmd[i]->num_comps); in mdp_cmdq_send()
701 dma_sync_single_for_device(mdp->cmdq_clt[i]->chan->mbox->dev, in mdp_cmdq_send()
705 ret = mbox_send_message(mdp->cmdq_clt[i]->chan, &cmd[i]->pkt); in mdp_cmdq_send()
711 mbox_client_txdone(mdp->cmdq_clt[i]->chan, 0); in mdp_cmdq_send()
717 mdp_comp_clocks_off(&mdp->pdev->dev, cmd[i]->comps, in mdp_cmdq_send()
720 refcount_set(&mdp->job_count, 0); in mdp_cmdq_send()