From: Sakari Ailus <sakari.ailus@linux.intel.com>
To: linux-media@vger.kernel.org
Cc: Philipp Zabel <p.zabel@pengutronix.de>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
hverkuil@xs4all.nl, Francesco Dolcini <francesco@dolcini.it>,
aishwarya.kothari@toradex.com, Robert Foss <rfoss@kernel.org>,
Todor Tomov <todor.too@gmail.com>,
Hyun Kwon <hyun.kwon@xilinx.com>
Subject: [PATCH 00/18] Separate links and async sub-devices
Date: Thu, 30 Mar 2023 14:58:35 +0300 [thread overview]
Message-ID: <20230330115853.1628216-1-sakari.ailus@linux.intel.com> (raw)
Hi all,
This set adds support for multiple downstream links in an async
sub-device, by separating the sub-device registration from the link
creation.
A new concept, V4L2 async connection is added. Generally async notifiers
have a number of connections but at that level there is no knowledge of
how many sub-devices they will connect to. The bound and unbound callbacks
now work on connections. For the existing drivers there's only one
connection so I do not expect regressions because of that.
Async sub-device fwnode matching will now take place between the device
(the dev field of struct v4l2_subdev) and a struct v4l2_async_connection
(an endpoint for devices that have endpoints or the device for those that
do not). This is because the graph data structure only describes
point-to-point connections so therefore defining one end of the connection
defines the entire connection.
This set is unlikely to address all needs people have related to the async
framework but I think that beyond what it does, it paves some way for
addressing more of those additional needs.
To be frank, I'd like to get rid of the entire V4L2 async framework, but
it would require allowing much more dynamic driver initialisation,
including sub-devices and device nodes popping up in the system in the
order and extent there is successfully probed hardware. Until that, and
this may well be the entire foreseeable future, we have at least some of
this complexity.
There's a bugfix, too, in the first patch. That should be merged
separately. The rest depends on it so I'm sending it as part of the set.
since RFC v1:
- Address missing API usage changes in a lot of drivers.
- Fix compilation problems in intermediate patches.
- Move V4L2 device registration earlier or move notifier initialisation
and fwnode endpoint parsing past the current V4L2 device registration
(patches 11--16).
Sakari Ailus (18):
media: v4l: async: Return async sub-devices to subnotifier list
media: v4l: async: Add some debug prints
media: v4l: async: Simplify async sub-device fwnode matching
media: v4l: async: Make V4L2 async match information a struct
media: v4l: async: Clean testing for duplicated async subdevs
media: v4l: async: Only pass match information for async subdev
validation
media: v4l: async: Clean up list heads and entries
media: v4l: async: Rename v4l2_async_subdev as v4l2_async_connection
media: v4l: async: Differentiate connecting and creating sub-devices
media: pxa_camera: Register V4L2 device early, fix probe error
handling
media: marvell: cafe: Register V4L2 device earlier
media: am437x-vpfe: Register V4L2 device early
media: omap3isp: Initialise V4L2 async notifier later
media: xilinx-vipp: Init async notifier after registering V4L2 device
media: davinci: Init async notifier after registering V4L2 device
media: qcom: Initialise V4L2 async notifier later
media: v4l: async: Set v4l2_device in async notifier init
Documentation: media: Document sub-device notifiers
.../driver-api/media/v4l2-subdev.rst | 16 +-
drivers/media/i2c/adv748x/adv748x-csi2.c | 3 -
drivers/media/i2c/max9286.c | 27 +-
drivers/media/i2c/rdacm20.c | 15 +-
drivers/media/i2c/rdacm21.c | 15 +-
drivers/media/i2c/st-mipid02.c | 12 +-
drivers/media/i2c/tc358746.c | 13 +-
drivers/media/pci/intel/ipu3/ipu3-cio2-main.c | 14 +-
drivers/media/platform/atmel/atmel-isi.c | 12 +-
drivers/media/platform/atmel/atmel-isi.h | 2 +-
drivers/media/platform/cadence/cdns-csi2rx.c | 10 +-
drivers/media/platform/intel/pxa_camera.c | 46 +-
drivers/media/platform/marvell/cafe-driver.c | 19 +-
drivers/media/platform/marvell/mcam-core.c | 12 +-
drivers/media/platform/marvell/mmp-driver.c | 6 +-
.../platform/microchip/microchip-csi2dc.c | 11 +-
.../platform/microchip/microchip-isc-base.c | 4 +-
.../media/platform/microchip/microchip-isc.h | 2 +-
.../microchip/microchip-sama5d2-isc.c | 9 +-
.../microchip/microchip-sama7g5-isc.c | 9 +-
drivers/media/platform/nxp/imx-mipi-csis.c | 10 +-
drivers/media/platform/nxp/imx7-media-csi.c | 10 +-
drivers/media/platform/qcom/camss/camss.c | 26 +-
drivers/media/platform/qcom/camss/camss.h | 2 +-
drivers/media/platform/renesas/rcar-isp.c | 12 +-
.../platform/renesas/rcar-vin/rcar-core.c | 26 +-
.../platform/renesas/rcar-vin/rcar-csi2.c | 12 +-
.../platform/renesas/rcar-vin/rcar-vin.h | 4 +-
drivers/media/platform/renesas/rcar_drif.c | 12 +-
drivers/media/platform/renesas/renesas-ceu.c | 10 +-
.../platform/renesas/rzg2l-cru/rzg2l-core.c | 14 +-
.../platform/renesas/rzg2l-cru/rzg2l-cru.h | 2 +-
.../platform/renesas/rzg2l-cru/rzg2l-csi2.c | 12 +-
.../platform/rockchip/rkisp1/rkisp1-dev.c | 12 +-
.../platform/samsung/exynos4-is/media-dev.c | 11 +-
.../platform/samsung/exynos4-is/media-dev.h | 2 +-
drivers/media/platform/st/stm32/stm32-dcmi.c | 12 +-
.../platform/sunxi/sun4i-csi/sun4i_csi.c | 10 +-
.../sunxi/sun6i-csi/sun6i_csi_bridge.c | 8 +-
.../sunxi/sun6i-csi/sun6i_csi_bridge.h | 2 +-
.../sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c | 10 +-
.../sun8i_a83t_mipi_csi2.c | 10 +-
.../media/platform/ti/am437x/am437x-vpfe.c | 37 +-
.../media/platform/ti/am437x/am437x-vpfe.h | 2 +-
drivers/media/platform/ti/cal/cal.c | 10 +-
.../media/platform/ti/davinci/vpif_capture.c | 33 +-
drivers/media/platform/ti/omap3isp/isp.c | 17 +-
drivers/media/platform/video-mux.c | 10 +-
drivers/media/platform/xilinx/xilinx-vipp.c | 29 +-
drivers/media/v4l2-core/v4l2-async.c | 601 +++++++++++-------
drivers/media/v4l2-core/v4l2-fwnode.c | 20 +-
.../media/deprecated/atmel/atmel-isc-base.c | 4 +-
.../media/deprecated/atmel/atmel-isc.h | 2 +-
.../deprecated/atmel/atmel-sama5d2-isc.c | 9 +-
.../deprecated/atmel/atmel-sama7g5-isc.c | 4 +-
drivers/staging/media/imx/imx-media-csi.c | 10 +-
.../staging/media/imx/imx-media-dev-common.c | 8 +-
drivers/staging/media/imx/imx-media-dev.c | 2 +-
drivers/staging/media/imx/imx-media-of.c | 4 +-
drivers/staging/media/imx/imx6-mipi-csi2.c | 12 +-
drivers/staging/media/imx/imx8mq-mipi-csi2.c | 10 +-
.../media/sunxi/sun6i-isp/sun6i_isp_proc.c | 6 +-
.../media/sunxi/sun6i-isp/sun6i_isp_proc.h | 2 +-
drivers/staging/media/tegra-video/vi.c | 18 +-
drivers/staging/media/tegra-video/vi.h | 2 +-
include/media/davinci/vpif_types.h | 2 +-
include/media/v4l2-async.h | 181 +++---
include/media/v4l2-fwnode.h | 10 +-
include/media/v4l2-subdev.h | 2 +-
69 files changed, 825 insertions(+), 708 deletions(-)
--
2.30.2
next reply other threads:[~2023-03-30 11:59 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-30 11:58 Sakari Ailus [this message]
2023-03-30 11:58 ` [PATCH 01/18] media: v4l: async: Return async sub-devices to subnotifier list Sakari Ailus
2023-04-13 16:49 ` Jacopo Mondi
2023-04-25 1:28 ` Laurent Pinchart
2023-04-25 8:32 ` Sakari Ailus
2023-03-30 11:58 ` [PATCH 02/18] media: v4l: async: Add some debug prints Sakari Ailus
2023-04-13 16:49 ` Jacopo Mondi
2023-04-14 10:46 ` Sakari Ailus
2023-04-21 8:18 ` Laurent Pinchart
2023-04-27 9:18 ` Sakari Ailus
2023-04-27 17:27 ` Laurent Pinchart
2023-04-28 7:29 ` Sakari Ailus
2023-03-30 11:58 ` [PATCH 03/18] media: v4l: async: Simplify async sub-device fwnode matching Sakari Ailus
2023-04-13 16:50 ` Jacopo Mondi
2023-04-14 11:07 ` Sakari Ailus
2023-04-24 19:20 ` Niklas Söderlund
2023-04-24 19:33 ` Sakari Ailus
2023-04-25 1:37 ` Laurent Pinchart
2023-04-27 9:23 ` Sakari Ailus
2023-03-30 11:58 ` [PATCH 04/18] media: v4l: async: Make V4L2 async match information a struct Sakari Ailus
2023-04-13 16:51 ` Jacopo Mondi
2023-04-27 10:47 ` Sakari Ailus
2023-04-25 1:10 ` Laurent Pinchart
2023-04-27 10:36 ` Sakari Ailus
2023-03-30 11:58 ` [PATCH 05/18] media: v4l: async: Clean testing for duplicated async subdevs Sakari Ailus
2023-04-13 16:58 ` Jacopo Mondi
2023-04-14 11:16 ` Sakari Ailus
2023-04-25 1:15 ` Laurent Pinchart
2023-04-27 11:06 ` Sakari Ailus
2023-03-30 11:58 ` [PATCH 06/18] media: v4l: async: Only pass match information for async subdev validation Sakari Ailus
2023-04-14 7:15 ` Jacopo Mondi
2023-04-14 11:39 ` Sakari Ailus
2023-04-25 1:24 ` Laurent Pinchart
2023-04-27 11:45 ` Sakari Ailus
2023-03-30 11:58 ` [PATCH 07/18] media: v4l: async: Clean up list heads and entries Sakari Ailus
2023-04-14 7:26 ` Jacopo Mondi
2023-04-14 11:54 ` Sakari Ailus
2023-04-25 0:49 ` Laurent Pinchart
2023-04-27 11:52 ` Sakari Ailus
2023-04-27 17:36 ` Laurent Pinchart
2023-04-28 7:37 ` Sakari Ailus
2023-03-30 11:58 ` [PATCH 08/18] media: v4l: async: Rename v4l2_async_subdev as v4l2_async_connection Sakari Ailus
2023-04-14 8:22 ` Jacopo Mondi
2023-04-14 12:17 ` Sakari Ailus
2023-04-25 0:59 ` Laurent Pinchart
2023-04-28 9:33 ` Sakari Ailus
2023-03-30 11:58 ` [PATCH 09/18] media: v4l: async: Differentiate connecting and creating sub-devices Sakari Ailus
2023-04-14 8:52 ` Jacopo Mondi
2023-04-14 13:35 ` Sakari Ailus
2023-04-25 2:14 ` Laurent Pinchart
2023-04-28 9:46 ` Sakari Ailus
2023-04-28 10:29 ` Sakari Ailus
2023-03-30 11:58 ` [PATCH 10/18] media: pxa_camera: Register V4L2 device early, fix probe error handling Sakari Ailus
2023-04-25 0:25 ` Laurent Pinchart
2023-04-28 11:21 ` Sakari Ailus
2023-03-30 11:58 ` [PATCH 11/18] media: marvell: cafe: Register V4L2 device earlier Sakari Ailus
2023-04-25 0:27 ` Laurent Pinchart
2023-04-28 11:22 ` Sakari Ailus
2023-03-30 11:58 ` [PATCH 12/18] media: am437x-vpfe: Register V4L2 device early Sakari Ailus
2023-03-30 11:58 ` [PATCH 13/18] media: omap3isp: Initialise V4L2 async notifier later Sakari Ailus
2023-03-30 11:58 ` [PATCH 14/18] media: xilinx-vipp: Init async notifier after registering V4L2 device Sakari Ailus
2023-04-25 0:31 ` Laurent Pinchart
2023-03-30 11:58 ` [PATCH 15/18] media: davinci: " Sakari Ailus
2023-03-30 11:58 ` [PATCH 16/18] media: qcom: Initialise V4L2 async notifier later Sakari Ailus
2023-03-30 11:58 ` [PATCH 17/18] media: v4l: async: Set v4l2_device in async notifier init Sakari Ailus
2023-04-25 0:35 ` Laurent Pinchart
2023-04-25 2:00 ` Laurent Pinchart
2023-04-28 10:35 ` Sakari Ailus
2023-04-28 10:33 ` Sakari Ailus
2023-03-30 11:58 ` [PATCH 18/18] Documentation: media: Document sub-device notifiers Sakari Ailus
2023-04-14 9:14 ` [PATCH 19/18] media: v4l: Drop v4l2_async_nf_parse_fwnode_endpoints() Jacopo Mondi
2023-04-25 1:06 ` Laurent Pinchart
2023-04-28 11:30 ` Sakari Ailus
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230330115853.1628216-1-sakari.ailus@linux.intel.com \
--to=sakari.ailus@linux.intel.com \
--cc=aishwarya.kothari@toradex.com \
--cc=francesco@dolcini.it \
--cc=hverkuil@xs4all.nl \
--cc=hyun.kwon@xilinx.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-media@vger.kernel.org \
--cc=p.zabel@pengutronix.de \
--cc=rfoss@kernel.org \
--cc=todor.too@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox