Hi Moudy, Just two nitpicks: On 17/08/2022 11:56, Moudy Ho wrote: > This patch adds driver for MediaTek's Media Data Path ver.3 (MDP3). > It provides the following functions: > color transform, format conversion, resize, crop, rotate, flip > and additional image quality enhancement. > > The MDP3 driver is mainly used for Google Chromebook products to > import the new architecture to set the HW settings as shown below: > User -> V4L2 framework > -> MDP3 driver -> SCP (setting calculations) > -> MDP3 driver -> CMDQ (GCE driver) -> HW > > Each modules' related operation control is sited in mtk-mdp3-comp.c > Each modules' register table is defined in file with "mdp_reg_" prefix > GCE related API, operation control sited in mtk-mdp3-cmdq.c > V4L2 m2m device functions are implemented in mtk-mdp3-m2m.c > Probe, power, suspend/resume, system level functions are defined in > mtk-mdp3-core.c <snip> > diff --git a/drivers/media/platform/mediatek/mdp3/Kconfig b/drivers/media/platform/mediatek/mdp3/Kconfig > new file mode 100644 > index 000000000000..e8c593c1eb69 > --- /dev/null > +++ b/drivers/media/platform/mediatek/mdp3/Kconfig > @@ -0,0 +1,20 @@ > +# SPDX-License-Identifier: GPL-2.0-only > +config VIDEO_MEDIATEK_MDP3 > + tristate "MediaTek MDP v3 driver" > + depends on MTK_IOMMU || COMPILE_TEST > + depends on VIDEO_DEV > + depends on ARCH_MEDIATEK || COMPILE_TEST > + depends on MTK_MMSYS This needs to be MTK_MMSYS || COMPILE_TEST. > + depends on HAS_DMA > + select VIDEOBUF2_DMA_CONTIG > + select V4L2_MEM2MEM_DEV > + select VIDEO_MEDIATEK_VPU > + select MTK_CMDQ > + select MTK_SCP > + default n > + help > + It is a v4l2 driver and present in MediaTek MT8183 SoC. > + The driver supports scaling and color space conversion. > + > + To compile this driver as a module, choose M here: the > + module will be called mtk-mdp3. <snip> > diff --git a/drivers/media/platform/mediatek/mdp3/mtk-mdp3-m2m.c b/drivers/media/platform/mediatek/mdp3/mtk-mdp3-m2m.c > new file mode 100644 > index 000000000000..0c1675c6dce2 > --- /dev/null > +++ b/drivers/media/platform/mediatek/mdp3/mtk-mdp3-m2m.c > @@ -0,0 +1,724 @@ <snip> > +static int mdp_m2m_s_selection(struct file *file, void *fh, > + struct v4l2_selection *s) > +{ > + struct mdp_m2m_ctx *ctx = fh_to_ctx(fh); > + struct mdp_frame *frame = ctx_get_frame(ctx, s->type); > + struct mdp_frame *capture; > + struct v4l2_rect r; > + struct device *dev = &ctx->mdp_dev->pdev->dev; > + bool valid = false; > + int ret; > + > + if (s->type == V4L2_BUF_TYPE_VIDEO_OUTPUT) > + valid = (s->target == V4L2_SEL_TGT_CROP); > + else if (s->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) > + valid = (s->target == V4L2_SEL_TGT_COMPOSE); > + > + if (!valid) { > + dev_err(dev, "[%s:%d] invalid type:%u target:%u", __func__, > + ctx->id, s->type, s->target); This needs to be dev_dbg: you don't want to spam the kernel log for userspace errors. > + return -EINVAL; > + } > + > + ret = mdp_try_crop(ctx, &r, s, frame); > + if (ret) > + return ret; > + capture = ctx_get_frame(ctx, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE); > + > + if (mdp_target_is_crop(s->target)) > + capture->crop.c = r; > + else > + capture->compose = r; > + > + s->r = r; > + > + return 0; > +} I can modify these two changes myself if you are OK with that. Just let me know. If you prefer to post a v26 that's OK too. Regards, Hans