All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sakari Ailus <sakari.ailus@linux.intel.com>
To: Helen Koike <helen.koike@collabora.com>
Cc: linux-media@vger.kernel.org, Hans Verkuil <hverkuil@xs4all.nl>,
	kernel@collabora.com,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>,
	Jacopo Mondi <jacopo@jmondi.org>,
	niklas.soderlund+renesas@ragnatech.se,
	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: Re: [PATCH v3 12/14] media: Clarify v4l2-async subdevice addition API
Date: Mon, 25 Jan 2021 22:42:46 +0200	[thread overview]
Message-ID: <20210125204246.GA4233@paasikivi.fi.intel.com> (raw)
In-Reply-To: <3ed5e3df-d1d2-266d-34fa-edff5abc6a0d@collabora.com>

Hi Helen,

Thanks for the review.

On Mon, Jan 25, 2021 at 02:22:37PM -0300, Helen Koike wrote:
> 
> 
> On 1/25/21 10:22 AM, Sakari Ailus wrote:
> > From: Ezequiel Garcia <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>
> > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> > ---
> >  .../driver-api/media/v4l2-subdev.rst          | 38 ++++++++++++++++---
> >  include/media/v4l2-async.h                    | 15 ++++++--
> >  2 files changed, 44 insertions(+), 9 deletions(-)
> > 
> > diff --git a/Documentation/driver-api/media/v4l2-subdev.rst b/Documentation/driver-api/media/v4l2-subdev.rst
> > index 0e82c77cf3e2..490dd212345d 100644
> > --- a/Documentation/driver-api/media/v4l2-subdev.rst
> > +++ b/Documentation/driver-api/media/v4l2-subdev.rst
> > @@ -201,11 +201,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 f2cac0931372..25c9ebd3f963 100644
> > --- a/include/media/v4l2-async.h
> > +++ b/include/media/v4l2-async.h
> > @@ -128,7 +128,12 @@ void v4l2_async_debug_init(struct dentry *debugfs_dir);
> >   * @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_fwnode_subdev,
> > + * @v4l2_async_register_subdev_sensor_common,
> 
> This function doesn't receive a notifier, it is used by the sensor at probe's
> time to inform the framework this sensor is present (if I understand correctly).
> So it could be called before the isp (who is registering a notifier) is probed.
> 
> There is no need to call v4l2_async_notifier_init() before
> v4l2_async_register_subdev_sensor_common() in my understanding.

Yeah... I guess I shouldn't just write this as I recall from years ago. X-)

Anyway, I added also v4l2_async_notifier_add_fwnode_remote_subdev.

> 
> > + * @v4l2_async_notifier_add_i2c_subdev,
> > + * @v4l2_async_notifier_add_subdev or
> > + * @v4l2_async_notifier_parse_fwnode_endpoints.
> >   */
> >  void v4l2_async_notifier_init(struct v4l2_async_notifier *notifier);
> >  
> > @@ -248,9 +253,11 @@ 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_register_subdev_sensor_common.
> > + * @v4l2_async_notifier_add_fwnode_subdev,
> > + * @v4l2_async_register_subdev_sensor_common,
> 
> The user of v4l2_async_register_*() is not responsible
> for cleaning up the notifier with v4l2_async_notifier_unregister(),
> it calls v4l2_async_unregister_*() instead
> (or am I missing something?)

Agreed. Added the same v4l2_async_notifier_add_fwnode_remote_subdev here,
too.

-- 
Kind regards,

Sakari Ailus

  reply	other threads:[~2021-01-25 20:47 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-25 13:22 [PATCH 01/14] media: v4l2-async: Clean v4l2_async_notifier_add_fwnode_remote_subdev Sakari Ailus
2021-01-25 13:22 ` [PATCH 02/14] media: atmel: Use v4l2_async_notifier_add_fwnode_remote_subdev Sakari Ailus
2021-01-25 13:22 ` [PATCH 03/14] media: stm32: " Sakari Ailus
2021-01-25 13:22 ` [PATCH 04/14] media: exynos4-is: " Sakari Ailus
2021-01-25 13:22 ` [PATCH 05/14] media: st-mipid02: " Sakari Ailus
2021-01-25 13:22 ` [PATCH 06/14] media: cadence: " Sakari Ailus
2021-01-25 13:22 ` [PATCH 07/14] media: marvell-ccic: Use v4l2_async_notifier_add_*_subdev Sakari Ailus
2021-01-25 13:59   ` Sakari Ailus
2021-01-25 13:22 ` [PATCH 08/14] media: renesas-ceu: " Sakari Ailus
2021-01-25 13:22 ` [PATCH 09/14] media: pxa-camera: " Sakari Ailus
2021-01-25 13:22 ` [PATCH 10/14] media: davinci: vpif_display: Remove unused v4l2-async code Sakari Ailus
2021-01-25 13:22 ` [PATCH 11/14] media: v4l2-async: Fix incorrect comment Sakari Ailus
2021-01-25 13:22 ` [PATCH 12/14] media: Clarify v4l2-async subdevice addition API Sakari Ailus
2021-01-25 13:22 ` [PATCH 13/14] media: v4l2-async: Discourage use of v4l2_async_notifier_add_subdev Sakari Ailus
2021-01-25 13:22 ` [PATCH 14/14] media: v4l2-async: Improve v4l2_async_notifier_add_*_subdev() API Sakari Ailus
2021-01-25 13:22 ` [PATCH v3 00/14] V4L2 Async notifier API cleanup Sakari Ailus
2021-01-25 13:22 ` [PATCH v3 01/14] media: v4l2-async: Clean v4l2_async_notifier_add_fwnode_remote_subdev Sakari Ailus
2021-01-25 15:27   ` Helen Koike
2021-01-25 16:16     ` Sakari Ailus
2021-01-25 13:22 ` [PATCH v3 02/14] media: atmel: Use v4l2_async_notifier_add_fwnode_remote_subdev Sakari Ailus
2021-01-25 13:22 ` [PATCH v3 03/14] media: stm32: " Sakari Ailus
2021-01-25 13:22 ` [PATCH v3 04/14] media: exynos4-is: " Sakari Ailus
2021-01-25 17:22   ` Helen Koike
2021-01-25 13:22 ` [PATCH v3 05/14] media: st-mipid02: " Sakari Ailus
2021-01-25 17:22   ` Helen Koike
2021-01-25 13:22 ` [PATCH v3 06/14] media: cadence: " Sakari Ailus
2021-01-25 13:22 ` [PATCH v3 07/14] media: marvell-ccic: Use v4l2_async_notifier_add_*_subdev Sakari Ailus
2021-01-25 13:22 ` [PATCH v3 08/14] media: renesas-ceu: " Sakari Ailus
2021-01-25 16:50   ` Helen Koike
2021-01-25 20:43     ` Sakari Ailus
2021-01-25 13:22 ` [PATCH v3 09/14] media: pxa-camera: " Sakari Ailus
2021-01-25 13:22 ` [PATCH v3 10/14] media: davinci: vpif_display: Remove unused v4l2-async code Sakari Ailus
2021-01-25 13:22 ` [PATCH v3 11/14] media: v4l2-async: Fix incorrect comment Sakari Ailus
2021-01-25 16:50   ` Helen Koike
2021-01-25 20:43     ` Sakari Ailus
2021-01-25 13:22 ` [PATCH v3 12/14] media: Clarify v4l2-async subdevice addition API Sakari Ailus
2021-01-25 17:22   ` Helen Koike
2021-01-25 20:42     ` Sakari Ailus [this message]
2021-01-25 13:22 ` [PATCH v3 13/14] media: v4l2-async: Discourage use of v4l2_async_notifier_add_subdev Sakari Ailus
2021-01-25 17:22   ` Helen Koike
2021-01-25 13:22 ` [PATCH v3 14/14] media: v4l2-async: Improve v4l2_async_notifier_add_*_subdev() API 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=20210125204246.GA4233@paasikivi.fi.intel.com \
    --to=sakari.ailus@linux.intel.com \
    --cc=dafna.hirschfeld@collabora.com \
    --cc=ezequiel@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=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.