From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Sakari Ailus <sakari.ailus@linux.intel.com>
Cc: Jacopo Mondi <jacopo.mondi@ideasonboard.com>,
linux-media@vger.kernel.org,
Philipp Zabel <p.zabel@pengutronix.de>,
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: Re: [PATCH 08/18] media: v4l: async: Rename v4l2_async_subdev as v4l2_async_connection
Date: Tue, 25 Apr 2023 03:59:50 +0300 [thread overview]
Message-ID: <20230425005950.GF4921@pendragon.ideasonboard.com> (raw)
In-Reply-To: <ZDlEdALIMuekuIxj@kekkonen.localdomain>
Hi Sakari
On Fri, Apr 14, 2023 at 03:17:56PM +0300, Sakari Ailus wrote:
> On Fri, Apr 14, 2023 at 10:22:41AM +0200, Jacopo Mondi wrote:
> > On Thu, Mar 30, 2023 at 02:58:43PM +0300, Sakari Ailus wrote:
> > > This patch has been generated by:
> > >
> > > git grep -l v4l2_async_subdev | \
> > > while read i; do \
> > > spatch --sp-file async.spatch --in-place $i; done \
> > > perl -i -pe 's/v4l2_async_\Ksubdev/connection/g' $i \
> > > done
> > >
> > > While async.spatch looks like:
> > >
> > > @ name @
> > > @@
> > > - struct v4l2_async_subdev
> > > + struct v4l2_async_connection
> > >
> > > Additionally, __v4l2_async_nf_add_subdev() has been renamed as
> > > __v4l2_async_nf_add_connection(). Some manual editing has been performed
> > > as well.
The commit message fails to explain why.
> > > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> > > ---
> > > .../driver-api/media/v4l2-subdev.rst | 10 +-
> > > drivers/media/i2c/max9286.c | 9 +-
> > > drivers/media/i2c/st-mipid02.c | 8 +-
> > > drivers/media/i2c/tc358746.c | 6 +-
> > > drivers/media/pci/intel/ipu3/ipu3-cio2-main.c | 10 +-
> > > drivers/media/platform/atmel/atmel-isi.c | 8 +-
> > > drivers/media/platform/atmel/atmel-isi.h | 2 +-
> > > drivers/media/platform/cadence/cdns-csi2rx.c | 6 +-
> > > drivers/media/platform/intel/pxa_camera.c | 12 +-
> > > drivers/media/platform/marvell/cafe-driver.c | 5 +-
> > > drivers/media/platform/marvell/mcam-core.c | 4 +-
> > > drivers/media/platform/marvell/mmp-driver.c | 4 +-
> > > .../platform/microchip/microchip-csi2dc.c | 6 +-
> > > .../platform/microchip/microchip-isc-base.c | 4 +-
> > > .../media/platform/microchip/microchip-isc.h | 2 +-
> > > .../microchip/microchip-sama5d2-isc.c | 4 +-
> > > .../microchip/microchip-sama7g5-isc.c | 4 +-
> > > drivers/media/platform/nxp/imx-mipi-csis.c | 6 +-
> > > drivers/media/platform/nxp/imx7-media-csi.c | 6 +-
> > > drivers/media/platform/qcom/camss/camss.c | 2 +-
> > > drivers/media/platform/qcom/camss/camss.h | 2 +-
> > > drivers/media/platform/renesas/rcar-isp.c | 8 +-
> > > .../platform/renesas/rcar-vin/rcar-core.c | 18 +-
> > > .../platform/renesas/rcar-vin/rcar-csi2.c | 8 +-
> > > .../platform/renesas/rcar-vin/rcar-vin.h | 4 +-
> > > drivers/media/platform/renesas/rcar_drif.c | 8 +-
> > > drivers/media/platform/renesas/renesas-ceu.c | 6 +-
> > > .../platform/renesas/rzg2l-cru/rzg2l-core.c | 10 +-
> > > .../platform/renesas/rzg2l-cru/rzg2l-cru.h | 2 +-
> > > .../platform/renesas/rzg2l-cru/rzg2l-csi2.c | 8 +-
> > > .../platform/rockchip/rkisp1/rkisp1-common.h | 2 +-
> > > .../platform/rockchip/rkisp1/rkisp1-dev.c | 4 +-
> > > .../platform/samsung/exynos4-is/media-dev.c | 6 +-
> > > .../platform/samsung/exynos4-is/media-dev.h | 2 +-
> > > drivers/media/platform/st/stm32/stm32-dcmi.c | 8 +-
> > > .../platform/sunxi/sun4i-csi/sun4i_csi.c | 6 +-
> > > .../sunxi/sun6i-csi/sun6i_csi_bridge.c | 2 +-
> > > .../sunxi/sun6i-csi/sun6i_csi_bridge.h | 2 +-
> > > .../sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c | 6 +-
> > > .../sun8i_a83t_mipi_csi2.c | 6 +-
> > > .../media/platform/ti/am437x/am437x-vpfe.c | 5 +-
> > > .../media/platform/ti/am437x/am437x-vpfe.h | 2 +-
> > > drivers/media/platform/ti/cal/cal.c | 6 +-
> > > .../media/platform/ti/davinci/vpif_capture.c | 7 +-
> > > drivers/media/platform/ti/omap3isp/isp.h | 2 +-
> > > drivers/media/platform/video-mux.c | 6 +-
> > > drivers/media/platform/xilinx/xilinx-vipp.c | 24 +--
> > > drivers/media/v4l2-core/v4l2-async.c | 166 +++++++++---------
> > > drivers/media/v4l2-core/v4l2-fwnode.c | 14 +-
> > > .../media/deprecated/atmel/atmel-isc-base.c | 4 +-
> > > .../media/deprecated/atmel/atmel-isc.h | 2 +-
> > > .../deprecated/atmel/atmel-sama5d2-isc.c | 4 +-
> > > .../deprecated/atmel/atmel-sama7g5-isc.c | 4 +-
> > > drivers/staging/media/imx/imx-media-csi.c | 6 +-
> > > .../staging/media/imx/imx-media-dev-common.c | 4 +-
> > > 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 | 8 +-
> > > drivers/staging/media/imx/imx8mq-mipi-csi2.c | 6 +-
> > > .../media/sunxi/sun6i-isp/sun6i_isp_proc.c | 2 +-
> > > .../media/sunxi/sun6i-isp/sun6i_isp_proc.h | 2 +-
> > > drivers/staging/media/tegra-video/vi.c | 14 +-
> > > drivers/staging/media/tegra-video/vi.h | 2 +-
> > > include/media/davinci/vpif_types.h | 2 +-
> > > include/media/v4l2-async.h | 78 ++++----
> > > include/media/v4l2-fwnode.h | 10 +-
> > > include/media/v4l2-subdev.h | 4 +-
> > > 67 files changed, 313 insertions(+), 313 deletions(-)
> > >
> > > diff --git a/Documentation/driver-api/media/v4l2-subdev.rst b/Documentation/driver-api/media/v4l2-subdev.rst
> > > index 260cfa8c3f3d..1c5cb1a637ab 100644
> > > --- a/Documentation/driver-api/media/v4l2-subdev.rst
> > > +++ b/Documentation/driver-api/media/v4l2-subdev.rst
> > > @@ -215,13 +215,13 @@ found in firmware. The notifier for the sub-device is unregistered with the
> > > async sub-device.
> > >
> > > These functions allocate an async sub-device descriptor which is of type struct
> > > -:c:type:`v4l2_async_subdev` embedded in a driver-specific struct. The &struct
> > > -:c:type:`v4l2_async_subdev` shall be the first member of this struct:
> > > +:c:type:`v4l2_async_connection` embedded in a driver-specific struct. The &struct
> > > +:c:type:`v4l2_async_connection` shall be the first member of this struct:
> > >
> > > .. code-block:: c
> > >
> > > struct my_async_subdev {
> > > - struct v4l2_async_subdev asd;
> > > + struct v4l2_async_connection asd;
s/asd/asc/
> > > ...
> > > };
> > >
> > > @@ -244,10 +244,10 @@ notifier callback is called. After all subdevices have been located the
> > > system the .unbind() method is called. All three callbacks are optional.
> > >
> > > Drivers can store any type of custom data in their driver-specific
> > > -:c:type:`v4l2_async_subdev` wrapper. If any of that data requires special
> > > +:c:type:`v4l2_async_connection` wrapper. If any of that data requires special
> > > handling when the structure is freed, drivers must implement the ``.destroy()``
> > > notifier callback. The framework will call it right before freeing the
> > > -:c:type:`v4l2_async_subdev`.
> > > +:c:type:`v4l2_async_connection`.
> > >
> > > Calling subdev operations
> > > ~~~~~~~~~~~~~~~~~~~~~~~~~
> > > diff --git a/drivers/media/i2c/max9286.c b/drivers/media/i2c/max9286.c
> > > index 2d0f43e3fb9f..13cb2537a06d 100644
> >
> > [snip: I'll only comment framework changes as I presume if driver
> > changes compile, they're good]
> >
> > > diff --git a/include/media/v4l2-async.h b/include/media/v4l2-async.h
> > > index 425280b4d387..9cf383e81a16 100644
> > > --- a/include/media/v4l2-async.h
> > > +++ b/include/media/v4l2-async.h
> > > @@ -63,23 +63,23 @@ struct v4l2_async_match {
> > > };
> > >
> > > /**
> > > - * struct v4l2_async_subdev - sub-device descriptor, as known to a bridge
> > > + * struct v4l2_async_connection - sub-device descriptor, as known to a bridge
> > > *
> > > * @match: struct of match type and per-bus type matching data sets
> > > - * @asd_list: used to add struct v4l2_async_subdev objects to the
> > > - * master notifier @asd_list
> > > - * @waiting_list: used to link struct v4l2_async_subdev objects, waiting to be
> > > - * probed, to a notifier->waiting list
> > > + * @asc_list: used to add struct v4l2_async_connection objects to the
> > > + * master notifier @asc_list
> >
> > notifier asc_head
>
> Thanks!
>
> > > + * @waiting_list: used to link struct v4l2_async_connection objects, waiting to
> > > + * be probed, to a notifier->waiting list
> > > *
> > > * When this struct is used as a member in a driver specific struct,
> > > * the driver specific struct shall contain the &struct
> > > - * v4l2_async_subdev as its first member.
> > > + * v4l2_async_connection as its first member.
> > > */
> > > -struct v4l2_async_subdev {
> > > +struct v4l2_async_connection {
> > > struct v4l2_async_match match;
> > >
> > > /* v4l2-async core private: not to be used by drivers */
> > > - struct list_head asd_list;
> > > + struct list_head asc_list;
> > > struct list_head waiting_list;
> > > };
> > >
> > > @@ -89,17 +89,17 @@ struct v4l2_async_subdev {
> >
> > For more context:
> >
> > * @bound: a subdevice driver has successfully probed one of the subdevices
> > > * @complete: All subdevices have been probed successfully. The complete
> >
> > the usage of the term "subdevice" when referring to connection is
> > spread everywhere in documentation :/
I don't think I really like the name "connection" :-S Maybe that's
because it's not explained properly here, neither in the commit message
nor in the documentation. I may have better ideas when reviewing the
next patch, but I wonder if v4l2_async_nf_entry or v4l2_async_entry
would be a better name. It would also allow renaming the "asd" variables
to something more explicit.
> > But I mostly wonder, and I guess this is a comment on the next patch:
> > do we now get multiple 'bound' calls for the same subdevice when
> > matched on multiple connections ?
>
> Correct. That isn't an issue for current drivers as the API before this set
> only allowed a single downstream link per async sub-device. Some more of
> the documentation probably needs to be reworked due to this.
>
> > > * callback is only executed for the root notifier.
> > > * @unbind: a subdevice is leaving
> > > - * @destroy: the asd is about to be freed
> > > + * @destroy: the asc is about to be freed
> > > */
> > > struct v4l2_async_notifier_operations {
> > > int (*bound)(struct v4l2_async_notifier *notifier,
> > > struct v4l2_subdev *subdev,
> > > - struct v4l2_async_subdev *asd);
> > > + struct v4l2_async_connection *asc);
> > > int (*complete)(struct v4l2_async_notifier *notifier);
> > > void (*unbind)(struct v4l2_async_notifier *notifier,
> > > struct v4l2_subdev *subdev,
> > > - struct v4l2_async_subdev *asd);
> > > - void (*destroy)(struct v4l2_async_subdev *asd);
> > > + struct v4l2_async_connection *asc);
> > > + void (*destroy)(struct v4l2_async_connection *asc);
> > > };
> > >
> > > /**
> > > @@ -109,7 +109,7 @@ struct v4l2_async_notifier_operations {
> > > * @v4l2_dev: v4l2_device of the root notifier, NULL otherwise
> > > * @sd: sub-device that registered the notifier, NULL otherwise
> > > * @parent: parent notifier
> > > - * @asd_head: master list of struct v4l2_async_subdev
> > > + * @asc_head: master list of struct v4l2_async_subdev
> > > * @waiting_list: list of struct v4l2_async_subdev, waiting for their drivers
> > > * @done_head: list of struct v4l2_subdev, already probed
> > > * @notifier_list: member in a global list of notifiers
> > > @@ -119,7 +119,7 @@ struct v4l2_async_notifier {
> > > struct v4l2_device *v4l2_dev;
> > > struct v4l2_subdev *sd;
> > > struct v4l2_async_notifier *parent;
> > > - struct list_head asd_head;
> > > + struct list_head asc_head;
> > > struct list_head waiting_head;
> > > struct list_head done_head;
> > > struct list_head notifier_list;
> > > @@ -137,75 +137,75 @@ 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
> > > + * This function initializes the notifier @asc_list. It must be called
> > > * before adding a subdevice to a notifier, using one of:
> > > * v4l2_async_nf_add_fwnode_remote(),
> > > * v4l2_async_nf_add_fwnode(),
> > > * v4l2_async_nf_add_i2c(),
> > > - * __v4l2_async_nf_add_subdev() or
> > > + * __v4l2_async_nf_add_connection() or
> > > * v4l2_async_nf_parse_fwnode_endpoints().
> > > */
> > > void v4l2_async_nf_init(struct v4l2_async_notifier *notifier);
> > >
> > > /**
> > > - * __v4l2_async_nf_add_subdev - Add an async subdev to the
> > > - * notifier's master asd list.
> > > + * __v4l2_async_nf_add_connection() - Add an async subdev to the notifier's
> > > + * master asc list.
> > > *
> > > * @notifier: pointer to &struct v4l2_async_notifier
> > > - * @asd: pointer to &struct v4l2_async_subdev
> > > + * @asc: pointer to &struct v4l2_async_connection
> > > *
> > > * \warning: Drivers should avoid using this function and instead use one of:
> > > * v4l2_async_nf_add_fwnode(),
> > > * v4l2_async_nf_add_fwnode_remote() or
> > > * v4l2_async_nf_add_i2c().
> > > *
> > > - * Call this function before registering a notifier to link the provided @asd to
> > > - * the notifiers master @asd_list. The @asd must be allocated with k*alloc() as
> > > + * Call this function before registering a notifier to link the provided @asc to
> > > + * the notifiers master @asc_list. The @asc must be allocated with k*alloc() as
> > > * it will be freed by the framework when the notifier is destroyed.
> > > */
> > > -int __v4l2_async_nf_add_subdev(struct v4l2_async_notifier *notifier,
> > > - struct v4l2_async_subdev *asd);
> > > +int __v4l2_async_nf_add_connection(struct v4l2_async_notifier *notifier,
> > > + struct v4l2_async_connection *asc);
> > >
> > > -struct v4l2_async_subdev *
> > > +struct v4l2_async_connection *
> > > __v4l2_async_nf_add_fwnode(struct v4l2_async_notifier *notifier,
> > > struct fwnode_handle *fwnode,
> > > - unsigned int asd_struct_size);
> > > + unsigned int asc_struct_size);
> > > /**
> > > * v4l2_async_nf_add_fwnode - Allocate and add a fwnode async
> > > - * subdev to the notifier's master asd_list.
> > > + * subdev to the notifier's master asc_list.
> > > *
> > > * @notifier: pointer to &struct v4l2_async_notifier
> > > * @fwnode: fwnode handle of the sub-device to be matched, pointer to
> > > * &struct fwnode_handle
> > > * @type: Type of the driver's async sub-device struct. The &struct
> > > - * v4l2_async_subdev shall be the first member of the driver's async
> > > + * v4l2_async_connection shall be the first member of the driver's async
> > > * sub-device struct, i.e. both begin at the same memory address.
> > > *
> > > - * Allocate a fwnode-matched asd of size asd_struct_size, and add it to the
> > > - * notifiers @asd_list. The function also gets a reference of the fwnode which
> > > + * Allocate a fwnode-matched asc of size asc_struct_size, and add it to the
> > > + * notifiers @asc_list. The function also gets a reference of the fwnode which
> > > * is released later at notifier cleanup time.
> > > */
> > > #define v4l2_async_nf_add_fwnode(notifier, fwnode, type) \
> > > ((type *)__v4l2_async_nf_add_fwnode(notifier, fwnode, sizeof(type)))
> > >
> > > -struct v4l2_async_subdev *
> > > +struct v4l2_async_connection *
> > > __v4l2_async_nf_add_fwnode_remote(struct v4l2_async_notifier *notif,
> > > struct fwnode_handle *endpoint,
> > > - unsigned int asd_struct_size);
> > > + unsigned int asc_struct_size);
> > > /**
> > > * v4l2_async_nf_add_fwnode_remote - Allocate and add a fwnode
> > > * remote async subdev to the
> > > - * notifier's master asd_list.
> > > + * notifier's master asc_list.
> > > *
> > > * @notifier: pointer to &struct v4l2_async_notifier
> > > * @ep: local endpoint pointing to the remote sub-device to be matched,
> > > * pointer to &struct fwnode_handle
> > > * @type: Type of the driver's async sub-device struct. The &struct
> > > - * v4l2_async_subdev shall be the first member of the driver's async
> > > + * v4l2_async_connection shall be the first member of the driver's async
> > > * sub-device struct, i.e. both begin at the same memory address.
> > > *
> > > * Gets the remote endpoint of a given local endpoint, set it up for fwnode
> > > - * matching and adds the async sub-device to the notifier's @asd_list. The
> > > + * matching and adds the async sub-device to the notifier's @asc_list. The
> > > * function also gets a reference of the fwnode which is released later at
> > > * notifier cleanup time.
> > > *
> > > @@ -215,19 +215,19 @@ __v4l2_async_nf_add_fwnode_remote(struct v4l2_async_notifier *notif,
> > > #define v4l2_async_nf_add_fwnode_remote(notifier, ep, type) \
> > > ((type *)__v4l2_async_nf_add_fwnode_remote(notifier, ep, sizeof(type)))
> > >
> > > -struct v4l2_async_subdev *
> > > +struct v4l2_async_connection *
> > > __v4l2_async_nf_add_i2c(struct v4l2_async_notifier *notifier,
> > > int adapter_id, unsigned short address,
> > > - unsigned int asd_struct_size);
> > > + unsigned int asc_struct_size);
> > > /**
> > > * v4l2_async_nf_add_i2c - Allocate and add an i2c async
> > > - * subdev to the notifier's master asd_list.
> > > + * subdev to the notifier's master asc_list.
> > > *
> > > * @notifier: pointer to &struct v4l2_async_notifier
> > > * @adapter: I2C adapter ID to be matched
> > > * @address: I2C address of sub-device to be matched
> > > * @type: Type of the driver's async sub-device struct. The &struct
> > > - * v4l2_async_subdev shall be the first member of the driver's async
> > > + * v4l2_async_connection shall be the first member of the driver's async
> > > * sub-device struct, i.e. both begin at the same memory address.
> > > *
> > > * Same as v4l2_async_nf_add_fwnode() but for I2C matched
> > > @@ -275,7 +275,7 @@ void v4l2_async_nf_unregister(struct v4l2_async_notifier *notifier);
> > > * v4l2_async_nf_add_fwnode_remote(),
> > > * v4l2_async_nf_add_fwnode(),
> > > * v4l2_async_nf_add_i2c(),
> > > - * __v4l2_async_nf_add_subdev() or
> > > + * __v4l2_async_nf_add_connection() or
> > > * v4l2_async_nf_parse_fwnode_endpoints().
> > > *
> > > * There is no harm from calling v4l2_async_nf_cleanup() in other
> > > diff --git a/include/media/v4l2-fwnode.h b/include/media/v4l2-fwnode.h
> > > index 394d798f3dfa..ebb83154abd5 100644
> > > --- a/include/media/v4l2-fwnode.h
> > > +++ b/include/media/v4l2-fwnode.h
> > > @@ -23,7 +23,7 @@
> > >
> > > struct fwnode_handle;
> > > struct v4l2_async_notifier;
> > > -struct v4l2_async_subdev;
> > > +struct v4l2_async_connection;
> > >
> > > /**
> > > * struct v4l2_fwnode_endpoint - the endpoint data structure
> > > @@ -399,7 +399,7 @@ int v4l2_fwnode_device_parse(struct device *dev,
> > > *
> > > * @dev: pointer to &struct device
> > > * @vep: pointer to &struct v4l2_fwnode_endpoint
> > > - * @asd: pointer to &struct v4l2_async_subdev
> > > + * @asd: pointer to &struct v4l2_async_connection
s/asd/asc/
> > > *
> > > * Return:
> > > * * %0 on success
> > > @@ -409,7 +409,7 @@ int v4l2_fwnode_device_parse(struct device *dev,
> > > */
> > > typedef int (*parse_endpoint_func)(struct device *dev,
> > > struct v4l2_fwnode_endpoint *vep,
> > > - struct v4l2_async_subdev *asd);
> > > + struct v4l2_async_connection *asd);
s/asd/asc/
> > >
> > > /**
> > > * v4l2_async_nf_parse_fwnode_endpoints - Parse V4L2 fwnode endpoints in a
> >
> > Ah nice this function is DEPRECATED and not used anywhere anymore.
> > I'll send a patch on top of this series to drop it
>
> Thanks! I'll toss it in.
>
> > > @@ -417,8 +417,8 @@ typedef int (*parse_endpoint_func)(struct device *dev,
> > > * @dev: the device the endpoints of which are to be parsed
> > > * @notifier: notifier for @dev
> > > * @asd_struct_size: size of the driver's async sub-device struct, including
> > > - * sizeof(struct v4l2_async_subdev). The &struct
> > > - * v4l2_async_subdev shall be the first member of
> > > + * sizeof(struct v4l2_async_connection). The &struct
> > > + * v4l2_async_connection shall be the first member of
> > > * the driver's async sub-device struct, i.e. both
> > > * begin at the same memory address.
> > > * @parse_endpoint: Driver's callback function called on each V4L2 fwnode
> > > diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h
> > > index 17773be4a4ee..a2cce11dda5c 100644
> > > --- a/include/media/v4l2-subdev.h
> > > +++ b/include/media/v4l2-subdev.h
> > > @@ -1021,7 +1021,7 @@ struct v4l2_subdev_platform_data {
> > > * either dev->of_node->fwnode or dev->fwnode (whichever is non-NULL).
> > > * @async_list: Links this subdev to a global subdev_list or @notifier->done
> > > * list.
> > > - * @asd: Pointer to respective &struct v4l2_async_subdev.
> > > + * @asc: Pointer to respective &struct v4l2_async_connection.
> >
> > this is still named 'asd' in code
>
> Fixed.
"asd" used to stand for "Async SubDev". "asc" could be argued to stand
for "ASync Connection", but that's a weird acronym. Would "connection"
or "conn" be a better variable name ?
I'm also sure you'll dislike this, but I'd like driver code to be
changed to rename the variables too.
> > > * @notifier: Pointer to the managing notifier.
> > > * @subdev_notifier: A sub-device notifier implicitly registered for the sub-
> > > * device using v4l2_async_register_subdev_sensor().
> > > @@ -1063,7 +1063,7 @@ struct v4l2_subdev {
> > > struct device *dev;
> > > struct fwnode_handle *fwnode;
> > > struct list_head async_list;
> > > - struct v4l2_async_subdev *asd;
> > > + struct v4l2_async_connection *asd;
> > > struct v4l2_async_notifier *notifier;
> > > struct v4l2_async_notifier *subdev_notifier;
> > > struct v4l2_subdev_platform_data *pdata;
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2023-04-25 0:59 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-30 11:58 [PATCH 00/18] Separate links and async sub-devices Sakari Ailus
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 [this message]
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=20230425005950.GF4921@pendragon.ideasonboard.com \
--to=laurent.pinchart@ideasonboard.com \
--cc=aishwarya.kothari@toradex.com \
--cc=francesco@dolcini.it \
--cc=hverkuil@xs4all.nl \
--cc=hyun.kwon@xilinx.com \
--cc=jacopo.mondi@ideasonboard.com \
--cc=linux-media@vger.kernel.org \
--cc=p.zabel@pengutronix.de \
--cc=rfoss@kernel.org \
--cc=sakari.ailus@linux.intel.com \
--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