All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ezequiel Garcia <ezequiel@collabora.com>
To: linux-media@vger.kernel.org, Hans Verkuil <hverkuil@xs4all.nl>
Cc: kernel@collabora.com,
	"Laurent Pinchart" <laurent.pinchart@ideasonboard.com>,
	"Sakari Ailus" <sakari.ailus@linux.intel.com>,
	"Kieran Bingham" <kieran.bingham+renesas@ideasonboard.com>,
	"Jacopo Mondi" <jacopo@jmondi.org>,
	"Niklas Söderlund" <niklas.soderlund+renesas@ragnatech.se>,
	"Helen Koike" <helen.koike@collabora.com>,
	"Dafna Hirschfeld" <dafna.hirschfeld@collabora.com>,
	"Hugues Fruchet" <hugues.fruchet@st.com>,
	"Nicolas Ferre" <nicolas.ferre@microchip.com>,
	"Yong Zhi" <yong.zhi@intel.com>,
	"Sylwester Nawrocki" <s.nawrocki@samsung.com>,
	"Maxime Ripard" <mripard@kernel.org>,
	"Robert Foss" <robert.foss@linaro.org>,
	"Philipp Zabel" <p.zabel@pengutronix.de>,
	"Ezequiel Garcia" <ezequiel@collabora.com>
Subject: [PATCH v2 12/14] media: Clarify v4l2-async subdevice addition API
Date: Sun, 17 Jan 2021 22:52:56 -0300	[thread overview]
Message-ID: <20210118015258.3993-13-ezequiel@collabora.com> (raw)
In-Reply-To: <20210118015258.3993-1-ezequiel@collabora.com>

Now that most users of v4l2_async_notifier_add_subdev have
been converted, let's fix the documentation so it's more clear
how the v4l2-async API should be used.

Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 .../driver-api/media/v4l2-subdev.rst          | 38 ++++++++++++++++---
 include/media/v4l2-async.h                    | 11 ++++--
 2 files changed, 41 insertions(+), 8 deletions(-)

diff --git a/Documentation/driver-api/media/v4l2-subdev.rst b/Documentation/driver-api/media/v4l2-subdev.rst
index bb5b1a7cdfd9..47a70538d758 100644
--- a/Documentation/driver-api/media/v4l2-subdev.rst
+++ b/Documentation/driver-api/media/v4l2-subdev.rst
@@ -204,11 +204,39 @@ Before registering the notifier, bridge drivers must do two things:
 first, the notifier must be initialized using the
 :c:func:`v4l2_async_notifier_init`. Second, bridge drivers can then
 begin to form a list of subdevice descriptors that the bridge device
-needs for its operation. Subdevice descriptors are added to the notifier
-using the :c:func:`v4l2_async_notifier_add_subdev` call. This function
-takes two arguments: a pointer to struct :c:type:`v4l2_async_notifier`,
-and a pointer to the subdevice descripter, which is of type struct
-:c:type:`v4l2_async_subdev`.
+needs for its operation. Several functions are available, to add subdevice
+descriptors to a notifier, depending on the type of device:
+:c:func:`v4l2_async_notifier_add_fwnode_subdev`,
+:c:func:`v4l2_async_notifier_add_fwnode_remote_subdev` or
+:c:func:`v4l2_async_notifier_add_i2c_subdev`.
+
+These functions allocate a subdevice descriptor, which is of
+type struct :c:type:`v4l2_async_subdev`, and take a size argument
+which can be used to embed the descriptor in a driver-specific
+async subdevice struct. The &struct :c:type:`v4l2_async_subdev`
+shall be the first member of this struct:
+
+.. code-block:: c
+
+	struct my_async_subdev {
+		struct v4l2_async_subdev asd;
+		...
+	};
+
+	struct my_async_subdev *my_asd;
+	struct v4l2_async_subdev *asd;
+	struct fwnode_handle *ep;
+
+	...
+
+	asd = v4l2_async_notifier_add_fwnode_subdev(
+			&notifier, ep, sizeof(*my_asd));
+	fwnode_handle_put(ep);
+
+	if (IS_ERR(asd))
+		return PTR_ERR(asd);
+
+	my_asd = container_of(asd, struct my_async_subdev, asd);
 
 The V4L2 core will then use these descriptors to match asynchronously
 registered subdevices to them. If a match is detected the ``.bound()``
diff --git a/include/media/v4l2-async.h b/include/media/v4l2-async.h
index 2144502c95e0..7b45427aafb5 100644
--- a/include/media/v4l2-async.h
+++ b/include/media/v4l2-async.h
@@ -120,7 +120,11 @@ struct v4l2_async_notifier {
  * @notifier: pointer to &struct v4l2_async_notifier
  *
  * This function initializes the notifier @asd_list. It must be called
- * before the first call to @v4l2_async_notifier_add_subdev.
+ * before adding a subdevice to a notifier, using one of:
+ * @v4l2_async_notifier_add_i2c_subdev,
+ * @v4l2_async_notifier_add_fwnode_subdev,
+ * @v4l2_async_notifier_add_fwnode_remote_subdev or
+ * @v4l2_async_notifier_parse_fwnode_sensor_common.
  */
 void v4l2_async_notifier_init(struct v4l2_async_notifier *notifier);
 
@@ -240,8 +244,9 @@ void v4l2_async_notifier_unregister(struct v4l2_async_notifier *notifier);
  * sub-devices allocated for the purposes of the notifier but not the notifier
  * itself. The user is responsible for calling this function to clean up the
  * notifier after calling
- * @v4l2_async_notifier_add_subdev,
- * @v4l2_async_notifier_parse_fwnode_endpoints or
+ * @v4l2_async_notifier_add_i2c_subdev,
+ * @v4l2_async_notifier_add_fwnode_subdev,
+ * @v4l2_async_notifier_add_fwnode_remote_subdev or
  * @v4l2_async_notifier_parse_fwnode_sensor_common.
  *
  * There is no harm from calling v4l2_async_notifier_cleanup in other
-- 
2.29.2


  parent reply	other threads:[~2021-01-18  1:55 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-18  1:52 [PATCH v2 00/14] V4L2 Async notifier API cleanup Ezequiel Garcia
2021-01-18  1:52 ` [PATCH v2 01/14] media: v4l2-async: Clean v4l2_async_notifier_add_fwnode_remote_subdev Ezequiel Garcia
2021-01-19 18:51   ` Helen Koike
2021-01-19 19:45     ` Ezequiel Garcia
2021-01-25 11:02     ` Sakari Ailus
2021-01-25 15:05       ` Helen Koike
2021-01-18  1:52 ` [PATCH v2 02/14] media: atmel: Use v4l2_async_notifier_add_fwnode_remote_subdev Ezequiel Garcia
2021-01-19 18:51   ` Helen Koike
2021-01-18  1:52 ` [PATCH v2 03/14] media: stm32: " Ezequiel Garcia
2021-01-19 18:51   ` Helen Koike
2021-01-18  1:52 ` [PATCH v2 04/14] media: exynos4-is: " Ezequiel Garcia
2021-01-19 18:52   ` Helen Koike
2021-01-19 19:59     ` Ezequiel Garcia
2021-01-18  1:52 ` [PATCH v2 05/14] media: st-mipid02: " Ezequiel Garcia
2021-01-19 18:52   ` Helen Koike
2021-01-19 20:06     ` Ezequiel Garcia
2021-01-18  1:52 ` [PATCH v2 06/14] media: cadence: " Ezequiel Garcia
2021-01-19 18:52   ` Helen Koike
2021-01-18  1:52 ` [PATCH v2 07/14] media: marvell-ccic: Use v4l2_async_notifier_add_*_subdev Ezequiel Garcia
2021-01-19 18:52   ` Helen Koike
2021-01-18  1:52 ` [PATCH v2 08/14] media: renesas-ceu: " Ezequiel Garcia
2021-01-19 18:53   ` Helen Koike
2021-01-18  1:52 ` [PATCH v2 09/14] media: pxa-camera: " Ezequiel Garcia
2021-01-19 18:53   ` Helen Koike
2021-01-18  1:52 ` [PATCH v2 10/14] media: davinci: vpif_display: Remove unused v4l2-async code Ezequiel Garcia
2021-01-19 18:53   ` Helen Koike
2021-01-18  1:52 ` [PATCH v2 11/14] media: v4l2-async: Fix incorrect comment Ezequiel Garcia
2021-01-19 18:54   ` Helen Koike
2021-01-19 20:12     ` Ezequiel Garcia
2021-01-21 10:55       ` Sakari Ailus
2021-01-18  1:52 ` Ezequiel Garcia [this message]
2021-01-19 18:54   ` [PATCH v2 12/14] media: Clarify v4l2-async subdevice addition API Helen Koike
2021-01-18  1:52 ` [PATCH v2 13/14] media: v4l2-async: Discourage use of v4l2_async_notifier_add_subdev Ezequiel Garcia
2021-01-19 18:54   ` Helen Koike
2021-01-18  1:52 ` [PATCH v2 14/14] media: v4l2-async: Improve v4l2_async_notifier_add_*_subdev() API Ezequiel Garcia
2021-01-19 18:54   ` Helen Koike
  -- strict thread matches above, loose matches on Subject: below --
2021-01-17 18:29 [PATCH v2 00/14] V4L2 Async notifier API cleanup Ezequiel Garcia
2021-01-17 18:29 ` [PATCH v2 12/14] media: Clarify v4l2-async subdevice addition API Ezequiel Garcia

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=20210118015258.3993-13-ezequiel@collabora.com \
    --to=ezequiel@collabora.com \
    --cc=dafna.hirschfeld@collabora.com \
    --cc=helen.koike@collabora.com \
    --cc=hugues.fruchet@st.com \
    --cc=hverkuil@xs4all.nl \
    --cc=jacopo@jmondi.org \
    --cc=kernel@collabora.com \
    --cc=kieran.bingham+renesas@ideasonboard.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-media@vger.kernel.org \
    --cc=mripard@kernel.org \
    --cc=nicolas.ferre@microchip.com \
    --cc=niklas.soderlund+renesas@ragnatech.se \
    --cc=p.zabel@pengutronix.de \
    --cc=robert.foss@linaro.org \
    --cc=s.nawrocki@samsung.com \
    --cc=sakari.ailus@linux.intel.com \
    --cc=yong.zhi@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.