mdp_dev
struct device *mdp_dev = dev->dev;
if (device_iommu_mapped(mdp_dev))
iommu_dev = mdp_dev;
dev_err(mdp_dev, "vm create, error %pe\n", vm);
struct mtk_mdp_dev *mdp_dev;
dev_err(&ctx->mdp_dev->pdev->dev,
struct mtk_mdp_dev *mdp = ctx->mdp_dev;
ctx->mdp_dev = mdp;
struct mtk_mdp_dev *mdp = ctx->mdp_dev;
struct mtk_mdp_dev *mdp = ctx->mdp_dev;
dev_dbg(&ctx->mdp_dev->pdev->dev,
struct mtk_mdp_dev *mdp = ctx->mdp_dev;
dev_err(&ctx->mdp_dev->pdev->dev,
ret = pm_runtime_resume_and_get(&ctx->mdp_dev->pdev->dev);
pm_runtime_put(&ctx->mdp_dev->pdev->dev);
dev_err(&ctx->mdp_dev->pdev->dev,
v4l2_m2m_job_finish(ctx->mdp_dev->m2m_dev, ctx->m2m_ctx);
struct mtk_mdp_dev *mdp = ctx->mdp_dev;
queue_work(ctx->mdp_dev->job_wq, &ctx->work);
struct mtk_mdp_dev *mdp = ctx->mdp_dev;
dev_info(&ctx->mdp_dev->pdev->dev, "queue %d busy", f->type);
dev_err(&ctx->mdp_dev->pdev->dev,
struct mtk_mdp_variant *variant = ctx->mdp_dev->variant;
dev_info(&ctx->mdp_dev->pdev->dev,
src_vq->dev = &ctx->mdp_dev->pdev->dev;
src_vq->lock = &ctx->mdp_dev->lock;
dst_vq->dev = &ctx->mdp_dev->pdev->dev;
dst_vq->lock = &ctx->mdp_dev->lock;
struct mtk_mdp_dev *mdp = ctx->mdp_dev;
vpu->pdev = ctx->mdp_dev->vpu_dev;
dev_err(&ctx->mdp_dev->pdev->dev,
mutex_lock(&ctx->mdp_dev->vpulock);
dev_err(&ctx->mdp_dev->pdev->dev,
mutex_unlock(&ctx->mdp_dev->vpulock);
s32 mdp_cfg_get_id_inner(struct mdp_dev *mdp_dev, enum mtk_mdp_comp_id id)
if (!mdp_dev)
return mdp_dev->mdp_data->comp_data[id].match.inner_id;
enum mtk_mdp_comp_id mdp_cfg_get_id_public(struct mdp_dev *mdp_dev, s32 inner_id)
if (IS_ERR(mdp_dev) || !inner_id)
if (mdp_dev->mdp_data->comp_data[i].match.inner_id == inner_id) {
bool mdp_cfg_comp_is_dummy(struct mdp_dev *mdp_dev, s32 inner_id)
enum mtk_mdp_comp_id id = mdp_cfg_get_id_public(mdp_dev, inner_id);
enum mdp_comp_type type = mdp_dev->mdp_data->comp_data[id].match.type;
struct mdp_dev;
s32 mdp_cfg_get_id_inner(struct mdp_dev *mdp_dev, enum mtk_mdp_comp_id id);
enum mtk_mdp_comp_id mdp_cfg_get_id_public(struct mdp_dev *mdp_dev, s32 id);
bool mdp_cfg_comp_is_dummy(struct mdp_dev *mdp_dev, s32 inner_id);
static struct img_config *__get_config_offset(struct mdp_dev *mdp,
const int p_id = path->mdp_dev->mdp_data->mdp_plat_id;
const struct mtk_mdp_driver_data *data = path->mdp_dev->mdp_data;
index = __get_pipe(path->mdp_dev, path->comps[0].comp->public_id);
mutex = __get_mutex(path->mdp_dev, p);
if (mdp_cfg_comp_is_dummy(path->mdp_dev, inner_id))
struct mdp_dev *mdp_dev;
const int p_id = path->mdp_dev->mdp_data->mdp_plat_id;
struct device *dev = &path->mdp_dev->pdev->dev;
if (mdp_cfg_comp_is_dummy(path->mdp_dev, inner_id))
mutex = __get_mutex(path->mdp_dev, p);
if (mdp_cfg_comp_is_dummy(path->mdp_dev, inner_id))
static int mdp_path_ctx_init(struct mdp_dev *mdp, struct mdp_path *path)
if (mdp_cfg_comp_is_dummy(path->mdp_dev, inner_id))
const int p_id = path->mdp_dev->mdp_data->mdp_plat_id;
if (mdp_cfg_comp_is_dummy(path->mdp_dev, inner_id))
if (mdp_cfg_comp_is_dummy(path->mdp_dev, inner_id))
if (mdp_cfg_comp_is_dummy(path->mdp_dev, inner_id))
static int mdp_path_config(struct mdp_dev *mdp, struct mdp_cmdq_cmd *cmd,
if (mdp_cfg_comp_is_dummy(path->mdp_dev, inner_id))
if (mdp_cfg_comp_is_dummy(path->mdp_dev, inner_id))
if (mdp_cfg_comp_is_dummy(path->mdp_dev, inner_id))
struct mdp_dev *mdp;
struct mdp_dev *mdp;
static struct mtk_mutex *__get_mutex(const struct mdp_dev *mdp_dev,
static struct mdp_cmdq_cmd *mdp_cmdq_prepare(struct mdp_dev *mdp,
return mdp_dev->mm_subsys[p->sub_id].mdp_mutex[p->mutex_id];
path->mdp_dev = mdp;
int mdp_cmdq_send(struct mdp_dev *mdp, struct mdp_cmdq_param *param)
static enum mdp_pipe_id __get_pipe(const struct mdp_dev *mdp_dev,
dev_err(&mdp_dev->pdev->dev, "Unknown pipeline id %d", id);
struct mdp_dev *mdp;
struct mdp_dev;
int mdp_cmdq_send(struct mdp_dev *mdp, struct mdp_cmdq_param *param);
static int mdp_comp_get_id(struct mdp_dev *mdp, enum mdp_comp_type type, u32 alias_id)
struct mdp_dev *m = comps[i].mdp_dev;
struct mdp_dev *m = comps[i].mdp_dev;
static int mdp_get_subsys_id(struct mdp_dev *mdp, struct device *dev,
static void __mdp_comp_init(struct mdp_dev *mdp, struct device_node *node,
comp->mdp_dev = mdp;
static int mdp_comp_init(struct mdp_dev *mdp, struct device_node *node,
devm_kfree(&comp->mdp_dev->pdev->dev, comp->clks);
static struct mdp_comp *mdp_comp_create(struct mdp_dev *mdp,
mdp->comp[id]->mdp_dev = mdp;
static int mdp_comp_sub_create(struct mdp_dev *mdp)
void mdp_comp_destroy(struct mdp_dev *mdp)
int mdp_comp_config(struct mdp_dev *mdp)
int mdp_comp_ctx_config(struct mdp_dev *mdp, struct mdp_comp_ctx *ctx,
struct device *dev = &ctx->comp->mdp_dev->pdev->dev;
return ctx->comp->mdp_dev->mdp_data->mdp_cfg;
dev = ctx->comp->mdp_dev->mm_subsys[MDP_MM_SUBSYS_1].mmsys;
rdma0 = mdp_cfg_get_id_inner(ctx->comp->mdp_dev, MDP_COMP_RDMA0);
rsz1 = mdp_cfg_get_id_inner(ctx->comp->mdp_dev, MDP_COMP_RSZ1);
const struct mtk_mdp_driver_data *data = ctx->comp->mdp_dev->mdp_data;
merge = ctx->comp->mdp_dev->comp[MDP_COMP_MERGE2];
merge = ctx->comp->mdp_dev->comp[MDP_COMP_MERGE3];
dev = ctx->comp->mdp_dev->mm_subsys[MDP_MM_SUBSYS_1].mmsys;
rdma0 = mdp_cfg_get_id_inner(ctx->comp->mdp_dev, MDP_COMP_RDMA0);
struct mdp_comp *prz1 = ctx->comp->mdp_dev->comp[MDP_COMP_RSZ1];
struct device *dev = &ctx->comp->mdp_dev->pdev->dev;
struct mdp_dev *mdp_dev;
struct mdp_dev;
int mdp_comp_config(struct mdp_dev *mdp);
void mdp_comp_destroy(struct mdp_dev *mdp);
int mdp_comp_ctx_config(struct mdp_dev *mdp, struct mdp_comp_ctx *ctx,
void mdp_vpu_put_locked(struct mdp_dev *mdp)
struct mdp_dev *mdp = (struct mdp_dev *)video_get_drvdata(vdev);
static int mdp_mm_subsys_deploy(struct mdp_dev *mdp, enum mdp_infra_id id)
struct mdp_dev *mdp;
struct mdp_dev *mdp = platform_get_drvdata(pdev);
struct mdp_dev *mdp = dev_get_drvdata(dev);
struct mdp_dev *mdp = dev_get_drvdata(dev);
int mdp_vpu_get_locked(struct mdp_dev *mdp)
int mdp_vpu_get_locked(struct mdp_dev *mdp);
void mdp_vpu_put_locked(struct mdp_dev *mdp);
int mdp_vpu_register(struct mdp_dev *mdp);
void mdp_vpu_unregister(struct mdp_dev *mdp);
task.config = ctx->mdp_dev->vpu.config;
if (refcount_read(&ctx->mdp_dev->job_count)) {
ret = wait_event_timeout(ctx->mdp_dev->callback_wq,
!refcount_read(&ctx->mdp_dev->job_count),
dev_err(&ctx->mdp_dev->pdev->dev,
refcount_read(&ctx->mdp_dev->job_count));
ret = mdp_cmdq_send(ctx->mdp_dev, &task);
dev_err(&ctx->mdp_dev->pdev->dev,
dev_err(&ctx->mdp_dev->pdev->dev,
ret = mdp_vpu_get_locked(ctx->mdp_dev);
dev_err(&ctx->mdp_dev->pdev->dev,
return mdp_enum_fmt_mplane(ctx->mdp_dev, f);
fmt = mdp_try_fmt_mplane(ctx->mdp_dev, f, &ctx->curr_param, ctx->id);
if (!mdp_try_fmt_mplane(ctx->mdp_dev, f, &ctx->curr_param, ctx->id))
struct device *dev = &ctx->mdp_dev->pdev->dev;
src_vq->dev = &ctx->mdp_dev->pdev->dev;
dst_vq->dev = &ctx->mdp_dev->pdev->dev;
dev_err(&ctx->mdp_dev->pdev->dev,
struct mdp_dev *mdp = video_get_drvdata(vdev);
v4l2_m2m_job_finish(ctx->mdp_dev->m2m_dev, ctx->m2m_ctx);
ctx->mdp_dev = mdp;
struct mdp_dev *mdp = video_drvdata(file);
int mdp_m2m_device_register(struct mdp_dev *mdp)
dev_err(&ctx->mdp_dev->pdev->dev,
void mdp_m2m_device_unregister(struct mdp_dev *mdp)
if (mdp_check_pp_enable(ctx->mdp_dev, frame))
ret = mdp_vpu_process(&ctx->mdp_dev->vpu, ¶m);
dev_err(&ctx->mdp_dev->pdev->dev,
struct mdp_dev *mdp_dev;
int mdp_m2m_device_register(struct mdp_dev *mdp);
void mdp_m2m_device_unregister(struct mdp_dev *mdp);
int mdp_enum_fmt_mplane(struct mdp_dev *mdp, struct v4l2_fmtdesc *f)
const struct mdp_format *mdp_try_fmt_mplane(struct mdp_dev *mdp,
struct device *dev = ¶m->ctx->mdp_dev->pdev->dev;
struct device *dev = &ctx->mdp_dev->pdev->dev;
bool mdp_check_pp_enable(struct mdp_dev *mdp, struct mdp_frame *frame)
int mdp_frameparam_init(struct mdp_dev *mdp, struct mdp_frameparam *param)
struct mdp_dev;
int mdp_enum_fmt_mplane(struct mdp_dev *mdp, struct v4l2_fmtdesc *f);
const struct mdp_format *mdp_try_fmt_mplane(struct mdp_dev *mdp,
bool mdp_check_pp_enable(struct mdp_dev *mdp, struct mdp_frame *frame);
int mdp_frameparam_init(struct mdp_dev *mdp, struct mdp_frameparam *param);
struct mdp_dev *mdp = vpu_to_mdp(vpu);
int mdp_vpu_register(struct mdp_dev *mdp)
static inline struct mdp_dev *vpu_to_mdp(struct mdp_vpu_dev *vpu)
void mdp_vpu_unregister(struct mdp_dev *mdp)
return container_of(vpu, struct mdp_dev, vpu);
struct mdp_dev *mdp = vpu_to_mdp(vpu);
struct mdp_dev *mdp = vpu_to_mdp(vpu);
struct mdp_dev *mdp = vpu_to_mdp(vpu);