Hi Frederic Chen,
On 2/1/19 12:21 PM, Frederic Chen wrote:
> Hello,
>
> This is the first version of the RFC patch series adding Digital Image
> Processing (DIP) driver on Mediatek mt8183 SoC, which will be used in camera
> features on CrOS application. It belongs to the first Mediatek’s ISP driver
> series based on V4L2 and media controller framework. I posted the main part of
> the DIP driver as RFC to discuss first and would like some review comments on
> the overall structure of the driver.
>
> Digital Image Processing (DIP) unit can accept the tuning parameters and
> adjust
> the image content in Mediatek ISP system. Furthermore, it performs demosaicing
> and noise reduction on the image to support the advanced camera features of
> the
> application. The DIP driver also support image format conversion, resizing and
> rotation with its hardware path.
>
> The driver is implemented with V4L2 and media controller framework. We have
> the
> following entities describing the DIP path.
>
> 1. Meta (output video device): connects to DIP sub device. It accepts the
> input
> tuning buffer from userspace. The metadata interface used currently is only
> a temporary solution to kick off driver development and is not ready for
> reviewed yet.
>
> 2. RAW (output video device): connects to DIP sub device. It accepts input
> image
> buffer from userspace.
>
> 3. DIP (sub device): connects to MDP-0 and MDP-1. When processing an image,
> DIP
> hardware support multiple output image with different size and format so it
> needs two capture video devices to return the streaming data to the user.
>
> 4. MDP-0 (capture video device): return the processed image data.
>
> 5. MDP-1 (capture video device): return the processed image data, the image
> size and format can be different from the ones of MDP-0.
Just a high-level comment before you post the next version of this series
and for your "platform: Add support for ISP Pass 1 on mt8183 SoC" series
Please compile the latest version of v4l2-compliance (part of
git://linuxtv.org/v4l-utils.git) and run it against your driver:
v4l2-compliance -m /dev/mediaX
Whenever you post a new version of this series, please do a 'git pull' of
the v4l-utils repo, recompile and retest with v4l2-compliance and post the
test results in the cover letter.
Obviously, there should be no FAILs and probably no warnings.
I suspect that streaming (e.g. adding the -s10 option to v4l2-compliance)
might not work since v4l2-compliance doesn't know about the meta data
formats. But give it a try and see what happens :-)
Regards,
Hans
>
> The overall file structure of the DIP driver is as following:
>
> * mtk_dip-dev-ctx-core.c: Implements common software flow of DIP driver.
> DIP driver supports two or more software contexts. For example, context 0 is
> created for preview path and context 1 is for capture path. Both the two
> contexts share the same DIP hardware to process the images.
> * mtk_dip-v4l2.c: Static DIP contexts configuration.
> * mtk_dip.c: Controls the hardware flow.
> * mtk_dip-dev.c: Implements context-independent flow.
> * mtk_dip-ctrl.c: Handles the HW ctrl request from userspace.
> * mtk_dip-smem-drv.c: Provides the shared memory management required
> operation.
> We reserved a memory region for the co-processor and DIP to exchange the
> tuning and hardware configuration data.
> * mtk_dip-v4l2-util.c: Implements V4L2 and vb2 ops.
>
> Frederic Chen (7):
> [media] dt-bindings: mt8183: Add binding for DIP shared memory
> dts: arm64: mt8183: Add DIP shared memory node
> [media] dt-bindings: mt8183: Added DIP-SMEM dt-bindings
> [media] dt-bindings: mt8183: Added DIP dt-bindings
> dts: arm64: mt8183: Add DIP nodes
> media: platform: Add Mediatek DIP driver KConfig
> [media] platform: mtk-isp: Add Mediatek DIP driver
>
> .../bindings/media/mediatek,dip_smem.txt | 29 +
> .../bindings/media/mediatek,mt8183-dip.txt | 35 +
> .../mediatek,reserve-memory-dip_smem.txt | 45 +
> arch/arm64/boot/dts/mediatek/mt8183.dtsi | 36 +
> drivers/media/platform/Kconfig | 2 +
> drivers/media/platform/mtk-isp/Kconfig | 21 +
> drivers/media/platform/mtk-isp/Makefile | 18 +
> drivers/media/platform/mtk-isp/isp_50/Makefile | 17 +
> drivers/media/platform/mtk-isp/isp_50/dip/Makefile | 35 +
> .../platform/mtk-isp/isp_50/dip/mtk_dip-core.h | 188 +++
> .../platform/mtk-isp/isp_50/dip/mtk_dip-ctrl.c | 173 +++
> .../platform/mtk-isp/isp_50/dip/mtk_dip-ctrl.h | 43 +
> .../platform/mtk-isp/isp_50/dip/mtk_dip-ctx.h | 319 ++++
> .../mtk-isp/isp_50/dip/mtk_dip-dev-ctx-core.c | 1643
> ++++++++++++++++++++
> .../platform/mtk-isp/isp_50/dip/mtk_dip-dev.c | 374 +++++
> .../platform/mtk-isp/isp_50/dip/mtk_dip-dev.h | 191 +++
> .../platform/mtk-isp/isp_50/dip/mtk_dip-smem-drv.c | 452 ++++++
> .../platform/mtk-isp/isp_50/dip/mtk_dip-smem.h | 25 +
> .../mtk-isp/isp_50/dip/mtk_dip-v4l2-util.c | 1000 ++++++++++++
> .../mtk-isp/isp_50/dip/mtk_dip-v4l2-util.h | 38 +
> .../platform/mtk-isp/isp_50/dip/mtk_dip-v4l2.c | 292 ++++
> .../platform/mtk-isp/isp_50/dip/mtk_dip-v4l2.h | 60 +
> .../media/platform/mtk-isp/isp_50/dip/mtk_dip.c | 1385 +++++++++++++++++
> .../media/platform/mtk-isp/isp_50/dip/mtk_dip.h | 93 ++
> 24 files changed, 6514 insertions(+)
> create mode 100644
> Documentation/devicetree/bindings/media/mediatek,dip_smem.txt
> create mode 100644
> Documentation/devicetree/bindings/media/mediatek,mt8183-dip.txt
> create mode 100644
> Documentation/devicetree/bindings/reserved-memory/mediatek,reserve-memory-dip_smem.txt
> create mode 100644 drivers/media/platform/mtk-isp/Kconfig
> create mode 100644 drivers/media/platform/mtk-isp/Makefile
> create mode 100644 drivers/media/platform/mtk-isp/isp_50/Makefile
> create mode 100644 drivers/media/platform/mtk-isp/isp_50/dip/Makefile
> create mode 100644 drivers/media/platform/mtk-isp/isp_50/dip/mtk_dip-core.h
> create mode 100644 drivers/media/platform/mtk-isp/isp_50/dip/mtk_dip-ctrl.c
> create mode 100644 drivers/media/platform/mtk-isp/isp_50/dip/mtk_dip-ctrl.h
> create mode 100644 drivers/media/platform/mtk-isp/isp_50/dip/mtk_dip-ctx.h
> create mode 100644
> drivers/media/platform/mtk-isp/isp_50/dip/mtk_dip-dev-ctx-core.c
> create mode 100644 drivers/media/platform/mtk-isp/isp_50/dip/mtk_dip-dev.c
> create mode 100644 drivers/media/platform/mtk-isp/isp_50/dip/mtk_dip-dev.h
> create mode 100644
> drivers/media/platform/mtk-isp/isp_50/dip/mtk_dip-smem-drv.c
> create mode 100644 drivers/media/platform/mtk-isp/isp_50/dip/mtk_dip-smem.h
> create mode 100644
> drivers/media/platform/mtk-isp/isp_50/dip/mtk_dip-v4l2-util.c
> create mode 100644
> drivers/media/platform/mtk-isp/isp_50/dip/mtk_dip-v4l2-util.h
> create mode 100644 drivers/media/platform/mtk-isp/isp_50/dip/mtk_dip-v4l2.c
> create mode 100644 drivers/media/platform/mtk-isp/isp_50/dip/mtk_dip-v4l2.h
> create mode 100644 drivers/media/platform/mtk-isp/isp_50/dip/mtk_dip.c
> create mode 100644 drivers/media/platform/mtk-isp/isp_50/dip/mtk_dip.h
>