[PATCH v7 0/8] media: add new API simple subdev register and add imx parallel camera support
Frank.Li at oss.nxp.com
Frank.Li at oss.nxp.com
Thu Jul 2 09:03:56 PDT 2026
Base on patches "media: add and use fwnode_graph_for_each_endpoint_scoped()"
https://lore.kernel.org/imx/20260624200237.GJ851255@killaraus.ideasonboard.com/T/#m7969735b6c236c6b3abc16b9f3f55ec0488dbe89
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 at n
{
endpoint {
-> sensor 0
}
}
Do NOT support
port at 0
{
endpoint at 0{
-> sensor 0
}
endpoint at 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-6b646231224b@oss.nxp.com/
It will also reduce missed media_entity_cleanup() problem at some error path
https://lore.kernel.org/linux-media/20260614202835.11977-15-birenpandya@gmail.com/
Previous do partial simpilfy at
https://lore.kernel.org/imx/aaisdJSsFE5-PLx1@lizhi-Precision-Tower-5810/
To: Sakari Ailus <sakari.ailus at linux.intel.com>
To: Mauro Carvalho Chehab <mchehab at kernel.org>
To: Michael Riesch <michael.riesch at collabora.com>
To: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
To: Frank Li <Frank.Li at nxp.com>
To: Martin Kepplinger-Novakovic <martink at posteo.de>
To: Rui Miguel Silva <rmfrfs at gmail.com>
To: Purism Kernel Team <kernel at puri.sm>
To: Rob Herring <robh at kernel.org>
To: Krzysztof Kozlowski <krzk+dt at kernel.org>
To: Conor Dooley <conor+dt at kernel.org>
To: Sascha Hauer <s.hauer at pengutronix.de>
To: Pengutronix Kernel Team <kernel at pengutronix.de>
To: Fabio Estevam <festevam at gmail.com>
Cc: linux-media at vger.kernel.org
Cc: linux-kernel at vger.kernel.org
Cc: imx at lists.linux.dev
Cc: Guoniu Zhou <guoniu.zhou at nxp.com>
Cc: devicetree at vger.kernel.org
Cc: linux-arm-kernel at lists.infradead.org
Signed-off-by: Frank Li <Frank.Li at 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-4b3f45920d2f@nxp.com
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-7fa6c8e7fba7@nxp.com
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-4dfca4ed2f87@nxp.com
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-c8533e405df1@nxp.com
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-188be85f06f1@nxp.com
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-eccd38d99201@nxp.com
---
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 at nxp.com>
More information about the linux-arm-kernel
mailing list