|
|
Log in / Subscribe / Register

media: add new API simple subdev register and add imx parallel camera support

From:  Frank.Li-AT-oss.nxp.com
To:  Sakari Ailus <sakari.ailus-AT-linux.intel.com>, Mauro Carvalho Chehab <mchehab-AT-kernel.org>, Michael Riesch <michael.riesch-AT-collabora.com>, Laurent Pinchart <laurent.pinchart-AT-ideasonboard.com>, Frank Li <Frank.Li-AT-nxp.com>, Martin Kepplinger-Novakovic <martink-AT-posteo.de>, Rui Miguel Silva <rmfrfs-AT-gmail.com>, Purism Kernel Team <kernel-AT-puri.sm>, Rob Herring <robh-AT-kernel.org>, Krzysztof Kozlowski <krzk+dt-AT-kernel.org>, Conor Dooley <conor+dt-AT-kernel.org>, Sascha Hauer <s.hauer-AT-pengutronix.de>, Pengutronix Kernel Team <kernel-AT-pengutronix.de>, Fabio Estevam <festevam-AT-gmail.com>
Subject:  [PATCH v7 0/8] media: add new API simple subdev register and add imx parallel camera support
Date:  Thu, 02 Jul 2026 12:03:56 -0400
Message-ID:  <20260702-imx8qxp_pcam-v7-0-b47d9e363400@nxp.com>
Cc:  linux-media-AT-vger.kernel.org, linux-kernel-AT-vger.kernel.org, imx-AT-lists.linux.dev, Guoniu Zhou <guoniu.zhou-AT-nxp.com>, devicetree-AT-vger.kernel.org, linux-arm-kernel-AT-lists.infradead.org, Alice Yuan <alice.yuan-AT-nxp.com>, Robert Chiras <robert.chiras-AT-nxp.com>, Zhipeng Wang <zhipeng.wang_1-AT-nxp.com>, Krzysztof Kozlowski <krzk-AT-kernel.org>
Archive-link:  Article

Base on patches "media: add and use fwnode_graph_for_each_endpoint_scoped()"
https://lore.kernel.org/imx/20260624200237.GJ851255@killa...

This patches base on previous' thread "media: imx8qxp: add parallel camera
support".

Add new API media_async_register_subdev() to simplify subdev register.

Require only one endpoint under port

	port@n
	{
		endpoint {
			-> sensor 0
		}
	}

Do NOT support
	port@0
	{
		endpoint@0{
			-> sensor 0
		}

		endpoint@1{
			-> sensor 1
		}
	}

By centralizing firmware graph parsing, media pad creation, notifier
registration, and link creation, this helper reduces duplicated code and
simplifies error handling in V4L2 sub-device drivers.

Add media_async_register_subdev(), a helper to register a V4L2 sub-device
with the asynchronous sub-device framework.

This reduces code duplication and simplifies the implementation of
simple bridge and converter drivers.

    In subdev driver:

    your_device_probe()
    {
            v4l2_subdev_init(sd, &dw_mipi_csi2rx_ops);
            ...
            return media_async_register_subdev_1to1(sd);
    }

    ...
    your_device_remove()
    {
            media_async_subdev_cleanup(sd);
    }

This API help reduce over line duplcated code in synopsys/dw-mipi-csi2rx.c.
And use this API at imx8's parallel CPI driver, which over 90% code now
hardware related.

And also benefit on going pix format patch
https://lore.kernel.org/imx/20260525-csi_formatter-v8-0-6...

It will also reduce missed media_entity_cleanup() problem at some error path
https://lore.kernel.org/linux-media/20260614202835.11977-...

Previous do partial simpilfy at
https://lore.kernel.org/imx/aaisdJSsFE5-PLx1@lizhi-Precis...

To: Sakari Ailus <sakari.ailus@linux.intel.com>
To: Mauro Carvalho Chehab <mchehab@kernel.org>
To: Michael Riesch <michael.riesch@collabora.com>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Frank Li <Frank.Li@nxp.com>
To: Martin Kepplinger-Novakovic <martink@posteo.de>
To: Rui Miguel Silva <rmfrfs@gmail.com>
To: Purism Kernel Team <kernel@puri.sm>
To: Rob Herring <robh@kernel.org>
To: Krzysztof Kozlowski <krzk+dt@kernel.org>
To: Conor Dooley <conor+dt@kernel.org>
To: Sascha Hauer <s.hauer@pengutronix.de>
To: Pengutronix Kernel Team <kernel@pengutronix.de>
To: Fabio Estevam <festevam@gmail.com>
Cc: linux-media@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: imx@lists.linux.dev
Cc: Guoniu Zhou <guoniu.zhou@nxp.com>
Cc: devicetree@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org

Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
Changes in v7:
- Don't save struct v4l2_fwnode_endpoint vep to media-pad
- add vep argument at set_pad_by_ep call back
- Link to v6: https://patch.msgid.link/20260624-imx8qxp_pcam-v6-0-4b3f4...

Changes in v6:
- Change API to fix more width user case, assume a media pad have one endpoint
on dts.
- other detail change see each patch's change log
- Link to v5: https://patch.msgid.link/20260617-imx8qxp_pcam-v5-0-7fa6c...

Changes in v5:
- Add media_async_register_subdev_1to1() to simple code.
- Link to v4: https://lore.kernel.org/r/20250729-imx8qxp_pcam-v4-0-4dfc...

Changes in v4:
- remove imx93 driver support since have not camera sensor module to do test now.
  Add it later
- Add new patch
  media: v4l2-common: Add helper function v4l_get_required_align_by_bpp()
- See each patche's change log for detail.
- Link to v3: https://lore.kernel.org/r/20250708-imx8qxp_pcam-v3-0-c853...

Changes in v3:
- replace CSI with CPI.
- detail change see each patch's change logs
- Link to v2: https://lore.kernel.org/r/20250703-imx8qxp_pcam-v2-0-188b...

Changes in v2:
- remove patch media: nxp: isi: add support for UYVY8_2X8 and YUYV8_2X8 bus codes
  because pcif controller convert 2x8 to 1x16 to match isi's input
- rename comaptible string to fsl,imx8qxp-pcif
- See each patches's change log for detail
- Link to v1: https://lore.kernel.org/r/20250630-imx8qxp_pcam-v1-0-eccd...

---
Alice Yuan (2):
      dt-bindings: media: add i.MX parallel CPI support
      media: nxp: add V4L2 subdev driver for camera parallel interface (CPI)

Frank Li (6):
      media: subdev: Add set_pad_by_ep() callback to internal ops
      media: subdev: Add media_async_register_subdev() helper
      media: synopsys: Use v4l2_subdev_get_frame_desc_passthrough()
      media: synopsys: Use media_async_register_subdev() to simplify code
      arm64: dts: imx8: add camera parallel interface (CPI) node
      arm64: dts: imx8qxp-mek: add parallel ov5640 camera support

 .../devicetree/bindings/media/fsl,imx93-pcif.yaml  | 126 +++++
 MAINTAINERS                                        |   2 +
 arch/arm64/boot/dts/freescale/Makefile             |   3 +
 arch/arm64/boot/dts/freescale/imx8-ss-img.dtsi     |  13 +
 .../boot/dts/freescale/imx8qxp-mek-ov5640-cpi.dtso |  83 +++
 arch/arm64/boot/dts/freescale/imx8qxp-ss-img.dtsi  |  27 +
 drivers/media/platform/nxp/Kconfig                 |  12 +
 drivers/media/platform/nxp/Makefile                |   1 +
 drivers/media/platform/nxp/imx-parallel-cpi.c      | 629 +++++++++++++++++++++
 drivers/media/platform/synopsys/dw-mipi-csi2rx.c   | 194 ++-----
 drivers/media/v4l2-core/v4l2-fwnode.c              | 169 ++++++
 include/media/v4l2-async.h                         |  39 ++
 include/media/v4l2-subdev.h                        |   7 +
 13 files changed, 1151 insertions(+), 154 deletions(-)
---
base-commit: 3c96488c275bd6a036b4131b0838affd371d55c2
change-id: 20250626-imx8qxp_pcam-d851238343c3

Best regards,
--  
Frank Li <Frank.Li@nxp.com>




Copyright © 2026, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds