Hi Moudy, Can you provide the 'v4l2-compliance -s' output? Make sure to compile v4l2-compliance from the latest code base: https://git.linuxtv.org/v4l-utils.git/ Compiling on x86_64 (so using COMPILE_TEST) fails: LD .tmp_vmlinux.kallsyms1 ld: drivers/media/platform/mtk-mdp3/mtk-mdp3-core.o: in function `mdp_probe': mtk-mdp3-core.c:(.text+0x415): undefined reference to `mtk_mutex_mdp_get' ld: drivers/media/platform/mtk-mdp3/mtk-mdp3-comp.o: in function `config_camin_subfrm': mtk-mdp3-comp.c:(.text+0x9b): undefined reference to `mtk_mmsys_mdp_camin_ctrl' ld: mtk-mdp3-comp.c:(.text+0xbc): undefined reference to `mtk_mmsys_mdp_camin_ctrl' ld: drivers/media/platform/mtk-mdp3/mtk-mdp3-comp.o: in function `mdp_component_deinit': mtk-mdp3-comp.c:(.text+0x2707): undefined reference to `mtk_mutex_put' ld: drivers/media/platform/mtk-mdp3/mtk-mdp3-comp.o: in function `init_isp.cold': mtk-mdp3-comp.c:(.text.unlikely+0x4f): undefined reference to `mtk_mmsys_mdp_isp_ctrl' ld: mtk-mdp3-comp.c:(.text.unlikely+0x7a): undefined reference to `mtk_mmsys_mdp_isp_ctrl' ld: drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.o: in function `mdp_auto_release_work': mtk-mdp3-cmdq.c:(.text+0x13): undefined reference to `mtk_mutex_unprepare' ld: drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.o: in function `mdp_path_subfrm_require': mtk-mdp3-cmdq.c:(.text+0x45e): undefined reference to `mtk_mutex_add_mdp_mod' ld: drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.o: in function `mdp_path_subfrm_run.isra.0': mtk-mdp3-cmdq.c:(.text+0x78b): undefined reference to `mtk_mutex_enable_by_cmdq' ld: drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.o: in function `mdp_path_config_subfrm': mtk-mdp3-cmdq.c:(.text+0xa0d): undefined reference to `mtk_mmsys_mdp_connect' ld: mtk-mdp3-cmdq.c:(.text+0xd08): undefined reference to `mtk_mmsys_mdp_disconnect' ld: drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.o: in function `mdp_cmdq_send': (.text+0x1358): undefined reference to `mtk_mutex_prepare' ld: drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.o: in function `mdp_handle_cmdq_callback.cold': mtk-mdp3-cmdq.c:(.text.unlikely+0x34): undefined reference to `mtk_mutex_unprepare' ld: drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.o: in function `mdp_cmdq_send.cold': mtk-mdp3-cmdq.c:(.text.unlikely+0xe3): undefined reference to `mtk_mutex_unprepare' make: *** [Makefile:1177: vmlinux] Error 1 I also get compile warnings: drivers/media/platform/mtk-mdp3/mtk-mdp3-comp.c: In function ‘mdp_sub_comps_create’: drivers/media/platform/mtk-mdp3/mtk-mdp3-comp.c:1151:29: warning: implicit conversion from ‘enum mtk_mdp_comp_id’ to ‘enum mdp_comp_type’ [-Wenum-conversion] 1151 | enum mdp_comp_type type = MDP_COMP_NONE; | ^~~~~~~~~~~~~ drivers/media/platform/mtk-mdp3/mtk-mdp3-comp.c: In function ‘mdp_component_init’: drivers/media/platform/mtk-mdp3/mtk-mdp3-comp.c:1217:6: warning: unused variable ‘i’ [-Wunused-variable] 1217 | int i, ret; | ^ drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.c: In function ‘mdp_cmdq_send’: drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.c:489:1: warning: the frame size of 1312 bytes is larger than 1024 bytes [-Wframe-larger-than=] 489 | } | ^ Regards, Hans On 24/08/2021 12:00, Moudy Ho wrote: > Changes since v6: > - Refactor GCE event to corresponding node. > - Fix dt_binding_check fail. > - Fix compilation errors. > > Changes since v5: > - Rebase on v5.14-rc6. > - Move MMSYS/Mutex settings to corresponding driver. > - Revise the software license description and copyright. > - Remove unnecessary enum. or definitions. > - Optimize platform/chip definition conditions. > - Use general printing functions instead of MDP3 private ones. > - Fix compile warning. > > Changes since v4: > - Rebase on v5.13-rc1. > - Remove the CMDQ flush flow to match the CMDQ API change. > - Integrate four of MDP's direct-link subcomponents into MDP controller node > from syscon node to avoid illegal clock usage. > - Rewrite dt-binding in a JSON compatible subset of YAML > - Fix a bit of macro argument precedence. > > Changes since v3: > - Rebase on v5.9-rc1. > - modify code for review comment from Rob Herring, cancel multiple nodes using > same register base situation. > - control IOMMU port through pm runtime get/put to DMA components' device. > - SCP(VPU) driver revision. > - stop queuing jobs(remove flush_workqueue()) after mdp_m2m_release(). > - add computation of plane address with data_offset. > - fix scale ratio check issue. > - add default v4l2_format setting. > > Changes since v2: > - modify code for review comment from Tomasz Figa & Alexandre Courbot > - review comment from Rob Herring will offer code revision in v4, due to > it's related to device node modification, will need to modify code > architecture > > Changes since v1: > - modify code for CMDQ v3 API support > - EC ipi cmd migration > - fix compliance test fail item (m2m cmd with -f) due to there is two problem in runing all format(-f) cmd: > 1. out of memory before test complete > Due to capture buffer mmap (refcount + 1) after reqbuf but seems > no corresponding munmap called before device close. > There are total 12XX items(formats) in format test and each format > alloc 8 capture/output buffers. > 2. unceasingly captureBufs() (randomly) > Seems the break statement didn't catch the count == 0 situation: > In v4l2-test-buffers.cpp, function: captureBufs() > ... > count--; > if (!node->is_m2m && !count) > break; > Log is as attachment > > I will paste the test result with problem part in another e-mail > > Hi, > > This is the first version of RFC patch for Media Data Path 3 (MDP3), > MDP3 is used for scaling and color format conversion. > support using GCE to write register in critical time limitation. > support V4L2 m2m device control. > > Moudy Ho (5): > soc: mediatek: mutex: add support for MDP > soc: mediatek: mmsys: Add support for MDP > dt-binding: mt8183: Add Mediatek MDP3 dt-bindings > dts: arm64: mt8183: Add Mediatek MDP3 nodes > media: platform: mtk-mdp3: Add Mediatek MDP3 driver > > .../bindings/media/mediatek,mdp3-ccorr.yaml | 57 + > .../bindings/media/mediatek,mdp3-rdma.yaml | 207 +++ > .../bindings/media/mediatek,mdp3-rsz.yaml | 65 + > .../bindings/media/mediatek,mdp3-wdma.yaml | 71 + > .../bindings/media/mediatek,mdp3-wrot.yaml | 71 + > arch/arm64/boot/dts/mediatek/mt8183.dtsi | 110 ++ > drivers/media/platform/Kconfig | 19 + > drivers/media/platform/Makefile | 2 + > drivers/media/platform/mtk-mdp3/Makefile | 6 + > .../media/platform/mtk-mdp3/mdp_reg_ccorr.h | 19 + > drivers/media/platform/mtk-mdp3/mdp_reg_isp.h | 27 + > .../media/platform/mtk-mdp3/mdp_reg_rdma.h | 65 + > drivers/media/platform/mtk-mdp3/mdp_reg_rsz.h | 39 + > .../media/platform/mtk-mdp3/mdp_reg_wdma.h | 47 + > .../media/platform/mtk-mdp3/mdp_reg_wrot.h | 55 + > drivers/media/platform/mtk-mdp3/mtk-img-ipi.h | 280 ++++ > .../media/platform/mtk-mdp3/mtk-mdp3-cmdq.c | 507 +++++++ > .../media/platform/mtk-mdp3/mtk-mdp3-cmdq.h | 46 + > .../media/platform/mtk-mdp3/mtk-mdp3-comp.c | 1307 +++++++++++++++++ > .../media/platform/mtk-mdp3/mtk-mdp3-comp.h | 147 ++ > .../media/platform/mtk-mdp3/mtk-mdp3-core.c | 329 +++++ > .../media/platform/mtk-mdp3/mtk-mdp3-core.h | 75 + > .../media/platform/mtk-mdp3/mtk-mdp3-m2m.c | 801 ++++++++++ > .../media/platform/mtk-mdp3/mtk-mdp3-m2m.h | 41 + > .../media/platform/mtk-mdp3/mtk-mdp3-regs.c | 746 ++++++++++ > .../media/platform/mtk-mdp3/mtk-mdp3-regs.h | 372 +++++ > .../media/platform/mtk-mdp3/mtk-mdp3-vpu.c | 312 ++++ > .../media/platform/mtk-mdp3/mtk-mdp3-vpu.h | 78 + > drivers/soc/mediatek/mt8183-mmsys.h | 235 +++ > drivers/soc/mediatek/mtk-mmsys.c | 164 +++ > drivers/soc/mediatek/mtk-mmsys.h | 9 +- > drivers/soc/mediatek/mtk-mutex.c | 106 +- > include/linux/soc/mediatek/mtk-mmsys.h | 81 + > include/linux/soc/mediatek/mtk-mutex.h | 8 + > 34 files changed, 6495 insertions(+), 9 deletions(-) > create mode 100644 Documentation/devicetree/bindings/media/mediatek,mdp3-ccorr.yaml > create mode 100644 Documentation/devicetree/bindings/media/mediatek,mdp3-rdma.yaml > create mode 100644 Documentation/devicetree/bindings/media/mediatek,mdp3-rsz.yaml > create mode 100644 Documentation/devicetree/bindings/media/mediatek,mdp3-wdma.yaml > create mode 100644 Documentation/devicetree/bindings/media/mediatek,mdp3-wrot.yaml > create mode 100644 drivers/media/platform/mtk-mdp3/Makefile > create mode 100644 drivers/media/platform/mtk-mdp3/mdp_reg_ccorr.h > create mode 100644 drivers/media/platform/mtk-mdp3/mdp_reg_isp.h > create mode 100644 drivers/media/platform/mtk-mdp3/mdp_reg_rdma.h > create mode 100644 drivers/media/platform/mtk-mdp3/mdp_reg_rsz.h > create mode 100644 drivers/media/platform/mtk-mdp3/mdp_reg_wdma.h > create mode 100644 drivers/media/platform/mtk-mdp3/mdp_reg_wrot.h > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-img-ipi.h > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.c > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-mdp3-cmdq.h > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-mdp3-comp.c > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-mdp3-comp.h > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-mdp3-core.c > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-mdp3-core.h > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-mdp3-m2m.c > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-mdp3-m2m.h > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-mdp3-regs.c > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-mdp3-regs.h > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-mdp3-vpu.c > create mode 100644 drivers/media/platform/mtk-mdp3/mtk-mdp3-vpu.h >