Message ID | 20230330115853.1628216-9-sakari.ailus@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Separate links and async sub-devices | expand |
Hi Sakari 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. > > 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; > ... > }; > > @@ -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 > + * @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 :/ 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 ? > * 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 > * > * 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); > > /** > * 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 > @@ -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 > * @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; > -- > 2.30.2 >
Hi Jacopo, On Fri, Apr 14, 2023 at 10:22:41AM +0200, Jacopo Mondi wrote: > Hi Sakari > > 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. > > > > 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; > > ... > > }; > > > > @@ -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 :/ > > 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 > > * > > * 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); > > > > /** > > * 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. > > > * @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;
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;
Hi Laurent, On Tue, Apr 25, 2023 at 03:59:50AM +0300, Laurent Pinchart wrote: > 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. I'll add this for v2. > > > > > 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/ Yes. > > > > > ... > > > > }; > > > > > > > > @@ -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 Connection covers data links and ancillary links that in practice are created in bound callbacks. Feel free to propose something else. I'll add more description for this. > 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. Nf entry is rather abstract, isn't it? Although that is not necessarily an issue: some of the current async sub-devices continue to be matched the same way, for association rather than for actual physical bus between them. > > > > 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/ > I'm rebasing Jacopo's patch early in the set so these changes will be eliminated. > > > > * > > > > * 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 thought "asc" would be better distinguished by folks who already know v4l2-async and async sub-devices. I actually did use "conn" in early version of this set. > > I'm also sure you'll dislike this, but I'd like driver code to be > changed to rename the variables too. I have no objections, however this can be done driver-by-driver once this set is merged. The set is already touching a large number of drivers, in various ways. In practice, an async connection is functionally equivalent to an async sub-device for existing drivers after all. > > > > > * @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; >
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; ... }; @@ -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 --- a/drivers/media/i2c/max9286.c +++ b/drivers/media/i2c/max9286.c @@ -161,11 +161,12 @@ struct max9286_source { }; struct max9286_asd { - struct v4l2_async_subdev base; + struct v4l2_async_connection base; struct max9286_source *source; }; -static inline struct max9286_asd *to_max9286_asd(struct v4l2_async_subdev *asd) +static inline struct max9286_asd * +to_max9286_asd(struct v4l2_async_connection *asd) { return container_of(asd, struct max9286_asd, base); } @@ -659,7 +660,7 @@ static int max9286_set_pixelrate(struct max9286_priv *priv) static int max9286_notify_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct max9286_priv *priv = sd_to_max9286(notifier->sd); struct max9286_source *source = to_max9286_asd(asd)->source; @@ -721,7 +722,7 @@ static int max9286_notify_bound(struct v4l2_async_notifier *notifier, static void max9286_notify_unbind(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct max9286_priv *priv = sd_to_max9286(notifier->sd); struct max9286_source *source = to_max9286_asd(asd)->source; diff --git a/drivers/media/i2c/st-mipid02.c b/drivers/media/i2c/st-mipid02.c index 31b89aff0e86..daea4cb29ec8 100644 --- a/drivers/media/i2c/st-mipid02.c +++ b/drivers/media/i2c/st-mipid02.c @@ -820,7 +820,7 @@ static const struct media_entity_operations mipid02_subdev_entity_ops = { static int mipid02_async_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *s_subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct mipid02_dev *bridge = to_mipid02_dev(notifier->sd); struct i2c_client *client = bridge->i2c_client; @@ -854,7 +854,7 @@ static int mipid02_async_bound(struct v4l2_async_notifier *notifier, static void mipid02_async_unbind(struct v4l2_async_notifier *notifier, struct v4l2_subdev *s_subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct mipid02_dev *bridge = to_mipid02_dev(notifier->sd); @@ -870,7 +870,7 @@ static int mipid02_parse_rx_ep(struct mipid02_dev *bridge) { struct v4l2_fwnode_endpoint ep = { .bus_type = V4L2_MBUS_CSI2_DPHY }; struct i2c_client *client = bridge->i2c_client; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct device_node *ep_node; int ret; @@ -905,7 +905,7 @@ static int mipid02_parse_rx_ep(struct mipid02_dev *bridge) v4l2_async_nf_init(&bridge->notifier); asd = v4l2_async_nf_add_fwnode_remote(&bridge->notifier, of_fwnode_handle(ep_node), - struct v4l2_async_subdev); + struct v4l2_async_connection); of_node_put(ep_node); if (IS_ERR(asd)) { diff --git a/drivers/media/i2c/tc358746.c b/drivers/media/i2c/tc358746.c index 56f2b43d4edf..f1f747f12228 100644 --- a/drivers/media/i2c/tc358746.c +++ b/drivers/media/i2c/tc358746.c @@ -1426,7 +1426,7 @@ static int tc358746_init_controls(struct tc358746 *tc358746) static int tc358746_notify_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *sd, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct tc358746 *tc358746 = container_of(notifier, struct tc358746, notifier); @@ -1445,7 +1445,7 @@ static int tc358746_async_register(struct tc358746 *tc358746) struct v4l2_fwnode_endpoint vep = { .bus_type = V4L2_MBUS_PARALLEL, }; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct fwnode_handle *ep; int err; @@ -1462,7 +1462,7 @@ static int tc358746_async_register(struct tc358746 *tc358746) v4l2_async_nf_init(&tc358746->notifier); asd = v4l2_async_nf_add_fwnode_remote(&tc358746->notifier, ep, - struct v4l2_async_subdev); + struct v4l2_async_connection); fwnode_handle_put(ep); if (IS_ERR(asd)) { diff --git a/drivers/media/pci/intel/ipu3/ipu3-cio2-main.c b/drivers/media/pci/intel/ipu3/ipu3-cio2-main.c index 8b37c2ec8643..b70db7e20acb 100644 --- a/drivers/media/pci/intel/ipu3/ipu3-cio2-main.c +++ b/drivers/media/pci/intel/ipu3/ipu3-cio2-main.c @@ -1370,7 +1370,7 @@ static const struct v4l2_subdev_ops cio2_subdev_ops = { /******* V4L2 sub-device asynchronous registration callbacks***********/ struct sensor_async_subdev { - struct v4l2_async_subdev asd; + struct v4l2_async_connection asd; struct csi2_bus_info csi2; }; @@ -1379,7 +1379,7 @@ struct sensor_async_subdev { /* The .bound() notifier callback when a match is found */ static int cio2_notifier_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *sd, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct cio2_device *cio2 = to_cio2_device(notifier); struct sensor_async_subdev *s_asd = to_sensor_asd(asd); @@ -1400,7 +1400,7 @@ static int cio2_notifier_bound(struct v4l2_async_notifier *notifier, /* The .unbind callback */ static void cio2_notifier_unbind(struct v4l2_async_notifier *notifier, struct v4l2_subdev *sd, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct cio2_device *cio2 = to_cio2_device(notifier); struct sensor_async_subdev *s_asd = to_sensor_asd(asd); @@ -1414,12 +1414,12 @@ static int cio2_notifier_complete(struct v4l2_async_notifier *notifier) struct cio2_device *cio2 = to_cio2_device(notifier); struct device *dev = &cio2->pci_dev->dev; struct sensor_async_subdev *s_asd; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct cio2_queue *q; unsigned int pad; int ret; - list_for_each_entry(asd, &cio2->notifier.asd_head, asd_list) { + list_for_each_entry(asd, &cio2->notifier.asc_head, asc_list) { s_asd = to_sensor_asd(asd); q = &cio2->queue[s_asd->csi2.port]; diff --git a/drivers/media/platform/atmel/atmel-isi.c b/drivers/media/platform/atmel/atmel-isi.c index 4d15814e4481..2da5918bbff0 100644 --- a/drivers/media/platform/atmel/atmel-isi.c +++ b/drivers/media/platform/atmel/atmel-isi.c @@ -1120,7 +1120,7 @@ static int isi_graph_notify_complete(struct v4l2_async_notifier *notifier) static void isi_graph_notify_unbind(struct v4l2_async_notifier *notifier, struct v4l2_subdev *sd, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct atmel_isi *isi = notifier_to_isi(notifier); @@ -1132,7 +1132,7 @@ static void isi_graph_notify_unbind(struct v4l2_async_notifier *notifier, static int isi_graph_notify_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct atmel_isi *isi = notifier_to_isi(notifier); @@ -1151,7 +1151,7 @@ static const struct v4l2_async_notifier_operations isi_graph_notify_ops = { static int isi_graph_init(struct atmel_isi *isi) { - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct device_node *ep; int ret; @@ -1163,7 +1163,7 @@ static int isi_graph_init(struct atmel_isi *isi) asd = v4l2_async_nf_add_fwnode_remote(&isi->notifier, of_fwnode_handle(ep), - struct v4l2_async_subdev); + struct v4l2_async_connection); of_node_put(ep); if (IS_ERR(asd)) diff --git a/drivers/media/platform/atmel/atmel-isi.h b/drivers/media/platform/atmel/atmel-isi.h index 7ad3895a2c87..58ce900ca4c9 100644 --- a/drivers/media/platform/atmel/atmel-isi.h +++ b/drivers/media/platform/atmel/atmel-isi.h @@ -121,7 +121,7 @@ #define ISI_DATAWIDTH_8 0x01 #define ISI_DATAWIDTH_10 0x02 -struct v4l2_async_subdev; +struct v4l2_async_connection; struct isi_platform_data { u8 has_emb_sync; diff --git a/drivers/media/platform/cadence/cdns-csi2rx.c b/drivers/media/platform/cadence/cdns-csi2rx.c index cc3ebb0d96f6..790a27205f5d 100644 --- a/drivers/media/platform/cadence/cdns-csi2rx.c +++ b/drivers/media/platform/cadence/cdns-csi2rx.c @@ -246,7 +246,7 @@ static const struct v4l2_subdev_ops csi2rx_subdev_ops = { static int csi2rx_async_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *s_subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct v4l2_subdev *subdev = notifier->sd; struct csi2rx_priv *csi2rx = v4l2_subdev_to_csi2rx(subdev); @@ -365,7 +365,7 @@ static int csi2rx_get_resources(struct csi2rx_priv *csi2rx, static int csi2rx_parse_dt(struct csi2rx_priv *csi2rx) { struct v4l2_fwnode_endpoint v4l2_ep = { .bus_type = 0 }; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct fwnode_handle *fwh; struct device_node *ep; int ret; @@ -402,7 +402,7 @@ static int csi2rx_parse_dt(struct csi2rx_priv *csi2rx) v4l2_async_nf_init(&csi2rx->notifier); asd = v4l2_async_nf_add_fwnode_remote(&csi2rx->notifier, fwh, - struct v4l2_async_subdev); + struct v4l2_async_connection); of_node_put(ep); if (IS_ERR(asd)) return PTR_ERR(asd); diff --git a/drivers/media/platform/intel/pxa_camera.c b/drivers/media/platform/intel/pxa_camera.c index 54270d6b6f50..b848a2a9032f 100644 --- a/drivers/media/platform/intel/pxa_camera.c +++ b/drivers/media/platform/intel/pxa_camera.c @@ -2044,7 +2044,7 @@ static const struct video_device pxa_camera_videodev_template = { static int pxa_camera_sensor_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { int err; struct v4l2_device *v4l2_dev = notifier->v4l2_dev; @@ -2123,7 +2123,7 @@ static int pxa_camera_sensor_bound(struct v4l2_async_notifier *notifier, static void pxa_camera_sensor_unbind(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct pxa_camera_dev *pcdev = v4l2_dev_to_pcdev(notifier->v4l2_dev); @@ -2197,7 +2197,7 @@ static int pxa_camera_pdata_from_dt(struct device *dev, struct pxa_camera_dev *pcdev) { u32 mclk_rate; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct device_node *np = dev->of_node; struct v4l2_fwnode_endpoint ep = { .bus_type = 0 }; int err = of_property_read_u32(np, "clock-frequency", @@ -2252,7 +2252,7 @@ static int pxa_camera_pdata_from_dt(struct device *dev, asd = v4l2_async_nf_add_fwnode_remote(&pcdev->notifier, of_fwnode_handle(np), - struct v4l2_async_subdev); + struct v4l2_async_connection); if (IS_ERR(asd)) err = PTR_ERR(asd); out: @@ -2293,14 +2293,14 @@ static int pxa_camera_probe(struct platform_device *pdev) pcdev->res = res; pcdev->pdata = pdev->dev.platform_data; if (pcdev->pdata) { - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; pcdev->platform_flags = pcdev->pdata->flags; pcdev->mclk = pcdev->pdata->mclk_10khz * 10000; asd = v4l2_async_nf_add_i2c(&pcdev->notifier, pcdev->pdata->sensor_i2c_adapter_id, pcdev->pdata->sensor_i2c_address, - struct v4l2_async_subdev); + struct v4l2_async_connection); if (IS_ERR(asd)) err = PTR_ERR(asd); } else if (pdev->dev.of_node) { diff --git a/drivers/media/platform/marvell/cafe-driver.c b/drivers/media/platform/marvell/cafe-driver.c index ae97ce4ead98..dd1bba70bd79 100644 --- a/drivers/media/platform/marvell/cafe-driver.c +++ b/drivers/media/platform/marvell/cafe-driver.c @@ -478,7 +478,7 @@ static int cafe_pci_probe(struct pci_dev *pdev, int ret; struct cafe_camera *cam; struct mcam_camera *mcam; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct i2c_client *i2c_dev; /* @@ -540,7 +540,8 @@ static int cafe_pci_probe(struct pci_dev *pdev, asd = v4l2_async_nf_add_i2c(&mcam->notifier, i2c_adapter_id(cam->i2c_adapter), - ov7670_info.addr, struct v4l2_async_subdev); + ov7670_info.addr, + struct v4l2_async_connection); if (IS_ERR(asd)) { ret = PTR_ERR(asd); goto out_smbus_shutdown; diff --git a/drivers/media/platform/marvell/mcam-core.c b/drivers/media/platform/marvell/mcam-core.c index ad4a7922d0d7..b74a362ec075 100644 --- a/drivers/media/platform/marvell/mcam-core.c +++ b/drivers/media/platform/marvell/mcam-core.c @@ -1756,7 +1756,7 @@ EXPORT_SYMBOL_GPL(mccic_irq); */ static int mccic_notify_bound(struct v4l2_async_notifier *notifier, - struct v4l2_subdev *subdev, struct v4l2_async_subdev *asd) + struct v4l2_subdev *subdev, struct v4l2_async_connection *asd) { struct mcam_camera *cam = notifier_to_mcam(notifier); int ret; @@ -1801,7 +1801,7 @@ static int mccic_notify_bound(struct v4l2_async_notifier *notifier, } static void mccic_notify_unbind(struct v4l2_async_notifier *notifier, - struct v4l2_subdev *subdev, struct v4l2_async_subdev *asd) + struct v4l2_subdev *subdev, struct v4l2_async_connection *asd) { struct mcam_camera *cam = notifier_to_mcam(notifier); diff --git a/drivers/media/platform/marvell/mmp-driver.c b/drivers/media/platform/marvell/mmp-driver.c index ef22bf8f276c..36f58ea830f3 100644 --- a/drivers/media/platform/marvell/mmp-driver.c +++ b/drivers/media/platform/marvell/mmp-driver.c @@ -180,7 +180,7 @@ static int mmpcam_probe(struct platform_device *pdev) struct resource *res; struct fwnode_handle *ep; struct mmp_camera_platform_data *pdata; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; int ret; cam = devm_kzalloc(&pdev->dev, sizeof(*cam), GFP_KERNEL); @@ -242,7 +242,7 @@ static int mmpcam_probe(struct platform_device *pdev) v4l2_async_nf_init(&mcam->notifier); asd = v4l2_async_nf_add_fwnode_remote(&mcam->notifier, ep, - struct v4l2_async_subdev); + struct v4l2_async_connection); fwnode_handle_put(ep); if (IS_ERR(asd)) { ret = PTR_ERR(asd); diff --git a/drivers/media/platform/microchip/microchip-csi2dc.c b/drivers/media/platform/microchip/microchip-csi2dc.c index d5b359f607ae..c2b7f50520cd 100644 --- a/drivers/media/platform/microchip/microchip-csi2dc.c +++ b/drivers/media/platform/microchip/microchip-csi2dc.c @@ -476,7 +476,7 @@ static const struct v4l2_subdev_ops csi2dc_subdev_ops = { static int csi2dc_async_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct csi2dc_device *csi2dc = container_of(notifier, struct csi2dc_device, notifier); @@ -520,14 +520,14 @@ static const struct v4l2_async_notifier_operations csi2dc_async_ops = { static int csi2dc_prepare_notifier(struct csi2dc_device *csi2dc, struct fwnode_handle *input_fwnode) { - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; int ret = 0; v4l2_async_nf_init(&csi2dc->notifier); asd = v4l2_async_nf_add_fwnode_remote(&csi2dc->notifier, input_fwnode, - struct v4l2_async_subdev); + struct v4l2_async_connection); fwnode_handle_put(input_fwnode); diff --git a/drivers/media/platform/microchip/microchip-isc-base.c b/drivers/media/platform/microchip/microchip-isc-base.c index 71758ee8474b..6fae2b4eaf02 100644 --- a/drivers/media/platform/microchip/microchip-isc-base.c +++ b/drivers/media/platform/microchip/microchip-isc-base.c @@ -1711,7 +1711,7 @@ static int isc_ctrl_init(struct isc_device *isc) static int isc_async_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct isc_device *isc = container_of(notifier->v4l2_dev, struct isc_device, v4l2_dev); @@ -1740,7 +1740,7 @@ static int isc_async_bound(struct v4l2_async_notifier *notifier, static void isc_async_unbind(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct isc_device *isc = container_of(notifier->v4l2_dev, struct isc_device, v4l2_dev); diff --git a/drivers/media/platform/microchip/microchip-isc.h b/drivers/media/platform/microchip/microchip-isc.h index e3a6c7367e70..ad4e98a1dd8f 100644 --- a/drivers/media/platform/microchip/microchip-isc.h +++ b/drivers/media/platform/microchip/microchip-isc.h @@ -44,7 +44,7 @@ struct isc_buffer { struct isc_subdev_entity { struct v4l2_subdev *sd; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct device_node *epn; struct v4l2_async_notifier notifier; diff --git a/drivers/media/platform/microchip/microchip-sama5d2-isc.c b/drivers/media/platform/microchip/microchip-sama5d2-isc.c index ac4715d91de6..4c341908d69d 100644 --- a/drivers/media/platform/microchip/microchip-sama5d2-isc.c +++ b/drivers/media/platform/microchip/microchip-sama5d2-isc.c @@ -525,7 +525,7 @@ static int microchip_isc_probe(struct platform_device *pdev) } list_for_each_entry(subdev_entity, &isc->subdev_entities, list) { - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct fwnode_handle *fwnode = of_fwnode_handle(subdev_entity->epn); @@ -533,7 +533,7 @@ static int microchip_isc_probe(struct platform_device *pdev) asd = v4l2_async_nf_add_fwnode_remote(&subdev_entity->notifier, fwnode, - struct v4l2_async_subdev); + struct v4l2_async_connection); of_node_put(subdev_entity->epn); subdev_entity->epn = NULL; diff --git a/drivers/media/platform/microchip/microchip-sama7g5-isc.c b/drivers/media/platform/microchip/microchip-sama7g5-isc.c index d583eafe5cc1..44e7818f2e5d 100644 --- a/drivers/media/platform/microchip/microchip-sama7g5-isc.c +++ b/drivers/media/platform/microchip/microchip-sama7g5-isc.c @@ -515,7 +515,7 @@ static int microchip_xisc_probe(struct platform_device *pdev) } list_for_each_entry(subdev_entity, &isc->subdev_entities, list) { - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct fwnode_handle *fwnode = of_fwnode_handle(subdev_entity->epn); @@ -523,7 +523,7 @@ static int microchip_xisc_probe(struct platform_device *pdev) asd = v4l2_async_nf_add_fwnode_remote(&subdev_entity->notifier, fwnode, - struct v4l2_async_subdev); + struct v4l2_async_connection); of_node_put(subdev_entity->epn); subdev_entity->epn = NULL; diff --git a/drivers/media/platform/nxp/imx-mipi-csis.c b/drivers/media/platform/nxp/imx-mipi-csis.c index be2768a47995..9c5407b59e8b 100644 --- a/drivers/media/platform/nxp/imx-mipi-csis.c +++ b/drivers/media/platform/nxp/imx-mipi-csis.c @@ -1230,7 +1230,7 @@ mipi_notifier_to_csis_state(struct v4l2_async_notifier *n) static int mipi_csis_notify_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *sd, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct mipi_csis_device *csis = mipi_notifier_to_csis_state(notifier); struct media_pad *sink = &csis->sd.entity.pads[CSIS_PAD_SINK]; @@ -1247,7 +1247,7 @@ static int mipi_csis_async_register(struct mipi_csis_device *csis) struct v4l2_fwnode_endpoint vep = { .bus_type = V4L2_MBUS_CSI2_DPHY, }; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct fwnode_handle *ep; unsigned int i; int ret; @@ -1278,7 +1278,7 @@ static int mipi_csis_async_register(struct mipi_csis_device *csis) dev_dbg(csis->dev, "flags: 0x%08x\n", csis->bus.flags); asd = v4l2_async_nf_add_fwnode_remote(&csis->notifier, ep, - struct v4l2_async_subdev); + struct v4l2_async_connection); if (IS_ERR(asd)) { ret = PTR_ERR(asd); goto err_parse; diff --git a/drivers/media/platform/nxp/imx7-media-csi.c b/drivers/media/platform/nxp/imx7-media-csi.c index c22bf5c827e7..0c57165c4ec1 100644 --- a/drivers/media/platform/nxp/imx7-media-csi.c +++ b/drivers/media/platform/nxp/imx7-media-csi.c @@ -2074,7 +2074,7 @@ static const struct media_entity_operations imx7_csi_entity_ops = { static int imx7_csi_notify_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *sd, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct imx7_csi *csi = imx7_csi_notifier_to_dev(notifier); struct media_pad *sink = &csi->sd.entity.pads[IMX7_CSI_PAD_SINK]; @@ -2099,7 +2099,7 @@ static const struct v4l2_async_notifier_operations imx7_csi_notify_ops = { static int imx7_csi_async_register(struct imx7_csi *csi) { - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct fwnode_handle *ep; int ret; @@ -2109,7 +2109,7 @@ static int imx7_csi_async_register(struct imx7_csi *csi) FWNODE_GRAPH_ENDPOINT_NEXT); if (ep) { asd = v4l2_async_nf_add_fwnode_remote(&csi->notifier, ep, - struct v4l2_async_subdev); + struct v4l2_async_connection); fwnode_handle_put(ep); diff --git a/drivers/media/platform/qcom/camss/camss.c b/drivers/media/platform/qcom/camss/camss.c index 9cda284f1e71..ae13ae455b52 100644 --- a/drivers/media/platform/qcom/camss/camss.c +++ b/drivers/media/platform/qcom/camss/camss.c @@ -1383,7 +1383,7 @@ static void camss_unregister_entities(struct camss *camss) static int camss_subdev_notifier_bound(struct v4l2_async_notifier *async, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct camss *camss = container_of(async, struct camss, notifier); struct camss_async_subdev *csd = diff --git a/drivers/media/platform/qcom/camss/camss.h b/drivers/media/platform/qcom/camss/camss.h index 3acd2b3403e8..f6c326cb853b 100644 --- a/drivers/media/platform/qcom/camss/camss.h +++ b/drivers/media/platform/qcom/camss/camss.h @@ -113,7 +113,7 @@ struct camss_camera_interface { }; struct camss_async_subdev { - struct v4l2_async_subdev asd; /* must be first */ + struct v4l2_async_connection asd; /* must be first */ struct camss_camera_interface interface; }; diff --git a/drivers/media/platform/renesas/rcar-isp.c b/drivers/media/platform/renesas/rcar-isp.c index 10b3474f93a4..eb851c9686f8 100644 --- a/drivers/media/platform/renesas/rcar-isp.c +++ b/drivers/media/platform/renesas/rcar-isp.c @@ -326,7 +326,7 @@ static const struct v4l2_subdev_ops rcar_isp_subdev_ops = { static int risp_notify_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct rcar_isp *isp = notifier_to_isp(notifier); int pad; @@ -350,7 +350,7 @@ static int risp_notify_bound(struct v4l2_async_notifier *notifier, static void risp_notify_unbind(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct rcar_isp *isp = notifier_to_isp(notifier); @@ -366,7 +366,7 @@ static const struct v4l2_async_notifier_operations risp_notify_ops = { static int risp_parse_dt(struct rcar_isp *isp) { - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct fwnode_handle *fwnode; struct fwnode_handle *ep; unsigned int id; @@ -396,7 +396,7 @@ static int risp_parse_dt(struct rcar_isp *isp) isp->notifier.ops = &risp_notify_ops; asd = v4l2_async_nf_add_fwnode(&isp->notifier, fwnode, - struct v4l2_async_subdev); + struct v4l2_async_connection); fwnode_handle_put(fwnode); if (IS_ERR(asd)) return PTR_ERR(asd); diff --git a/drivers/media/platform/renesas/rcar-vin/rcar-core.c b/drivers/media/platform/renesas/rcar-vin/rcar-core.c index 1b530da1c341..1d64373e7cd7 100644 --- a/drivers/media/platform/renesas/rcar-vin/rcar-core.c +++ b/drivers/media/platform/renesas/rcar-vin/rcar-core.c @@ -253,7 +253,7 @@ static int rvin_group_notify_complete(struct v4l2_async_notifier *notifier) static void rvin_group_notify_unbind(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct rvin_dev *vin = v4l2_dev_to_vin(notifier->v4l2_dev); unsigned int i; @@ -279,7 +279,7 @@ static void rvin_group_notify_unbind(struct v4l2_async_notifier *notifier, static int rvin_group_notify_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct rvin_dev *vin = v4l2_dev_to_vin(notifier->v4l2_dev); unsigned int i; @@ -312,7 +312,7 @@ static int rvin_group_parse_of(struct rvin_dev *vin, unsigned int port, struct v4l2_fwnode_endpoint vep = { .bus_type = V4L2_MBUS_CSI2_DPHY, }; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; int ret; ep = fwnode_graph_get_endpoint_by_id(dev_fwnode(vin->dev), port, id, 0); @@ -329,7 +329,7 @@ static int rvin_group_parse_of(struct rvin_dev *vin, unsigned int port, } asd = v4l2_async_nf_add_fwnode(&vin->group->notifier, fwnode, - struct v4l2_async_subdev); + struct v4l2_async_connection); if (IS_ERR(asd)) { ret = PTR_ERR(asd); goto out; @@ -397,7 +397,7 @@ static int rvin_group_notifier_init(struct rvin_dev *vin, unsigned int port, } } - if (list_empty(&vin->group->notifier.asd_head)) + if (list_empty(&vin->group->notifier.asc_head)) return 0; vin->group->notifier.ops = &rvin_group_notify_ops; @@ -612,7 +612,7 @@ static int rvin_parallel_notify_complete(struct v4l2_async_notifier *notifier) static void rvin_parallel_notify_unbind(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct rvin_dev *vin = v4l2_dev_to_vin(notifier->v4l2_dev); @@ -625,7 +625,7 @@ static void rvin_parallel_notify_unbind(struct v4l2_async_notifier *notifier, static int rvin_parallel_notify_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct rvin_dev *vin = v4l2_dev_to_vin(notifier->v4l2_dev); int ret; @@ -657,7 +657,7 @@ static int rvin_parallel_parse_of(struct rvin_dev *vin) struct v4l2_fwnode_endpoint vep = { .bus_type = V4L2_MBUS_UNKNOWN, }; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; int ret; ep = fwnode_graph_get_endpoint_by_id(dev_fwnode(vin->dev), 0, 0, 0); @@ -689,7 +689,7 @@ static int rvin_parallel_parse_of(struct rvin_dev *vin) } asd = v4l2_async_nf_add_fwnode(&vin->notifier, fwnode, - struct v4l2_async_subdev); + struct v4l2_async_connection); if (IS_ERR(asd)) { ret = PTR_ERR(asd); goto out; diff --git a/drivers/media/platform/renesas/rcar-vin/rcar-csi2.c b/drivers/media/platform/renesas/rcar-vin/rcar-csi2.c index 174aa6176f54..654d56a57a00 100644 --- a/drivers/media/platform/renesas/rcar-vin/rcar-csi2.c +++ b/drivers/media/platform/renesas/rcar-vin/rcar-csi2.c @@ -968,7 +968,7 @@ static irqreturn_t rcsi2_irq_thread(int irq, void *data) static int rcsi2_notify_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct rcar_csi2 *priv = notifier_to_csi2(notifier); int pad; @@ -993,7 +993,7 @@ static int rcsi2_notify_bound(struct v4l2_async_notifier *notifier, static void rcsi2_notify_unbind(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct rcar_csi2 *priv = notifier_to_csi2(notifier); @@ -1044,7 +1044,7 @@ static int rcsi2_parse_v4l2(struct rcar_csi2 *priv, static int rcsi2_parse_dt(struct rcar_csi2 *priv) { - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct fwnode_handle *fwnode; struct fwnode_handle *ep; struct v4l2_fwnode_endpoint v4l2_ep = { @@ -1080,7 +1080,7 @@ static int rcsi2_parse_dt(struct rcar_csi2 *priv) priv->notifier.ops = &rcar_csi2_notify_ops; asd = v4l2_async_nf_add_fwnode(&priv->notifier, fwnode, - struct v4l2_async_subdev); + struct v4l2_async_connection); fwnode_handle_put(fwnode); if (IS_ERR(asd)) return PTR_ERR(asd); diff --git a/drivers/media/platform/renesas/rcar-vin/rcar-vin.h b/drivers/media/platform/renesas/rcar-vin/rcar-vin.h index cb206d3976dd..09d8160c8b3b 100644 --- a/drivers/media/platform/renesas/rcar-vin/rcar-vin.h +++ b/drivers/media/platform/renesas/rcar-vin/rcar-vin.h @@ -115,7 +115,7 @@ struct rvin_video_format { * */ struct rvin_parallel_entity { - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct v4l2_subdev *subdev; enum v4l2_mbus_type mbus_type; @@ -291,7 +291,7 @@ struct rvin_group { int (*link_setup)(struct rvin_dev *vin); struct { - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct v4l2_subdev *subdev; } remotes[RVIN_REMOTES_MAX]; }; diff --git a/drivers/media/platform/renesas/rcar_drif.c b/drivers/media/platform/renesas/rcar_drif.c index 3fec41f6e964..5c8f5a53eb4d 100644 --- a/drivers/media/platform/renesas/rcar_drif.c +++ b/drivers/media/platform/renesas/rcar_drif.c @@ -1097,7 +1097,7 @@ static void rcar_drif_sdr_unregister(struct rcar_drif_sdr *sdr) /* Sub-device bound callback */ static int rcar_drif_notify_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct rcar_drif_sdr *sdr = container_of(notifier, struct rcar_drif_sdr, notifier); @@ -1112,7 +1112,7 @@ static int rcar_drif_notify_bound(struct v4l2_async_notifier *notifier, /* Sub-device unbind callback */ static void rcar_drif_notify_unbind(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct rcar_drif_sdr *sdr = container_of(notifier, struct rcar_drif_sdr, notifier); @@ -1205,7 +1205,7 @@ static int rcar_drif_parse_subdevs(struct rcar_drif_sdr *sdr) { struct v4l2_async_notifier *notifier = &sdr->notifier; struct fwnode_handle *fwnode, *ep; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; v4l2_async_nf_init(notifier); @@ -1225,7 +1225,7 @@ static int rcar_drif_parse_subdevs(struct rcar_drif_sdr *sdr) } asd = v4l2_async_nf_add_fwnode(notifier, fwnode, - struct v4l2_async_subdev); + struct v4l2_async_connection); fwnode_handle_put(fwnode); if (IS_ERR(asd)) return PTR_ERR(asd); diff --git a/drivers/media/platform/renesas/renesas-ceu.c b/drivers/media/platform/renesas/renesas-ceu.c index f70f91b006b7..8d47910a8d11 100644 --- a/drivers/media/platform/renesas/renesas-ceu.c +++ b/drivers/media/platform/renesas/renesas-ceu.c @@ -152,7 +152,7 @@ static inline struct ceu_buffer *vb2_to_ceu(struct vb2_v4l2_buffer *vbuf) * ceu_subdev - Wraps v4l2 sub-device and provides async subdevice. */ struct ceu_subdev { - struct v4l2_async_subdev asd; + struct v4l2_async_connection asd; struct v4l2_subdev *v4l2_sd; /* per-subdevice mbus configuration options */ @@ -160,7 +160,7 @@ struct ceu_subdev { struct ceu_mbus_fmt mbus_fmt; }; -static struct ceu_subdev *to_ceu_subdev(struct v4l2_async_subdev *asd) +static struct ceu_subdev *to_ceu_subdev(struct v4l2_async_connection *asd) { return container_of(asd, struct ceu_subdev, asd); } @@ -1384,7 +1384,7 @@ static void ceu_vdev_release(struct video_device *vdev) static int ceu_notify_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *v4l2_sd, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct v4l2_device *v4l2_dev = notifier->v4l2_dev; struct ceu_device *ceudev = v4l2_to_ceu(v4l2_dev); diff --git a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-core.c b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-core.c index bfef297f5ec5..4abf9f1e88dc 100644 --- a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-core.c +++ b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-core.c @@ -93,7 +93,7 @@ static int rzg2l_cru_group_notify_complete(struct v4l2_async_notifier *notifier) static void rzg2l_cru_group_notify_unbind(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct rzg2l_cru_dev *cru = notifier_to_cru(notifier); @@ -111,7 +111,7 @@ static void rzg2l_cru_group_notify_unbind(struct v4l2_async_notifier *notifier, static int rzg2l_cru_group_notify_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct rzg2l_cru_dev *cru = notifier_to_cru(notifier); @@ -139,7 +139,7 @@ static int rzg2l_cru_mc_parse_of(struct rzg2l_cru_dev *cru) .bus_type = V4L2_MBUS_CSI2_DPHY, }; struct fwnode_handle *ep, *fwnode; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; int ret; ep = fwnode_graph_get_endpoint_by_id(dev_fwnode(cru->dev), 1, 0, 0); @@ -163,7 +163,7 @@ static int rzg2l_cru_mc_parse_of(struct rzg2l_cru_dev *cru) } asd = v4l2_async_nf_add_fwnode(&cru->notifier, fwnode, - struct v4l2_async_subdev); + struct v4l2_async_connection); if (IS_ERR(asd)) { ret = PTR_ERR(asd); goto out; @@ -191,7 +191,7 @@ static int rzg2l_cru_mc_parse_of_graph(struct rzg2l_cru_dev *cru) cru->notifier.ops = &rzg2l_cru_async_ops; - if (list_empty(&cru->notifier.asd_head)) + if (list_empty(&cru->notifier.asc_head)) return 0; ret = v4l2_async_nf_register(&cru->v4l2_dev, &cru->notifier); diff --git a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-cru.h b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-cru.h index 0b682cbae3eb..811603f18af0 100644 --- a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-cru.h +++ b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-cru.h @@ -45,7 +45,7 @@ enum rzg2l_cru_dma_state { }; struct rzg2l_cru_csi { - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct v4l2_subdev *subdev; u32 channel; }; diff --git a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-csi2.c b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-csi2.c index 384fb54e219a..5aa3b0239ead 100644 --- a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-csi2.c +++ b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-csi2.c @@ -600,7 +600,7 @@ static const struct v4l2_subdev_ops rzg2l_csi2_subdev_ops = { static int rzg2l_csi2_notify_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct rzg2l_csi2 *csi2 = notifier_to_csi2(notifier); @@ -616,7 +616,7 @@ static int rzg2l_csi2_notify_bound(struct v4l2_async_notifier *notifier, static void rzg2l_csi2_notify_unbind(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct rzg2l_csi2 *csi2 = notifier_to_csi2(notifier); @@ -647,7 +647,7 @@ static int rzg2l_csi2_parse_dt(struct rzg2l_csi2 *csi2) struct v4l2_fwnode_endpoint v4l2_ep = { .bus_type = V4L2_MBUS_CSI2_DPHY }; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct fwnode_handle *fwnode; struct fwnode_handle *ep; int ret; @@ -678,7 +678,7 @@ static int rzg2l_csi2_parse_dt(struct rzg2l_csi2 *csi2) csi2->notifier.ops = &rzg2l_csi2_notify_ops; asd = v4l2_async_nf_add_fwnode(&csi2->notifier, fwnode, - struct v4l2_async_subdev); + struct v4l2_async_connection); fwnode_handle_put(fwnode); if (IS_ERR(asd)) return PTR_ERR(asd); diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h index a1293c45aae1..d30f0ecb1bfd 100644 --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h @@ -148,7 +148,7 @@ struct rkisp1_info { * @port: port number (0: MIPI, 1: Parallel) */ struct rkisp1_sensor_async { - struct v4l2_async_subdev asd; + struct v4l2_async_connection asd; unsigned int index; struct fwnode_handle *source_ep; unsigned int lanes; diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c index f2475c6235ea..39fa98e6dbbc 100644 --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c @@ -122,7 +122,7 @@ struct rkisp1_isr_data { static int rkisp1_subdev_notifier_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *sd, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct rkisp1_device *rkisp1 = container_of(notifier, struct rkisp1_device, notifier); @@ -165,7 +165,7 @@ static int rkisp1_subdev_notifier_complete(struct v4l2_async_notifier *notifier) return v4l2_device_register_subdev_nodes(&rkisp1->v4l2_dev); } -static void rkisp1_subdev_notifier_destroy(struct v4l2_async_subdev *asd) +static void rkisp1_subdev_notifier_destroy(struct v4l2_async_connection *asd) { struct rkisp1_sensor_async *rk_asd = container_of(asd, struct rkisp1_sensor_async, asd); diff --git a/drivers/media/platform/samsung/exynos4-is/media-dev.c b/drivers/media/platform/samsung/exynos4-is/media-dev.c index 98a60f01129d..8c9dad6231a6 100644 --- a/drivers/media/platform/samsung/exynos4-is/media-dev.c +++ b/drivers/media/platform/samsung/exynos4-is/media-dev.c @@ -401,7 +401,7 @@ static int fimc_md_parse_one_endpoint(struct fimc_md *fmd, int index = fmd->num_sensors; struct fimc_source_info *pd = &fmd->sensor[index].pdata; struct device_node *rem, *np; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct v4l2_fwnode_endpoint endpoint = { .bus_type = 0 }; int ret; @@ -466,7 +466,7 @@ static int fimc_md_parse_one_endpoint(struct fimc_md *fmd, asd = v4l2_async_nf_add_fwnode_remote(&fmd->subdev_notifier, of_fwnode_handle(ep), - struct v4l2_async_subdev); + struct v4l2_async_connection); of_node_put(ep); @@ -1372,7 +1372,7 @@ static int fimc_md_register_clk_provider(struct fimc_md *fmd) static int subdev_notifier_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct fimc_md *fmd = notifier_to_fimc_md(notifier); struct fimc_sensor_info *si = NULL; diff --git a/drivers/media/platform/samsung/exynos4-is/media-dev.h b/drivers/media/platform/samsung/exynos4-is/media-dev.h index 079105d88bab..786264cf79dc 100644 --- a/drivers/media/platform/samsung/exynos4-is/media-dev.h +++ b/drivers/media/platform/samsung/exynos4-is/media-dev.h @@ -82,7 +82,7 @@ struct fimc_camclk_info { */ struct fimc_sensor_info { struct fimc_source_info pdata; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct v4l2_subdev *subdev; struct fimc_dev *host; }; diff --git a/drivers/media/platform/st/stm32/stm32-dcmi.c b/drivers/media/platform/st/stm32/stm32-dcmi.c index ad8e9742e1ae..cf03c9529749 100644 --- a/drivers/media/platform/st/stm32/stm32-dcmi.c +++ b/drivers/media/platform/st/stm32/stm32-dcmi.c @@ -1837,7 +1837,7 @@ static int dcmi_graph_notify_complete(struct v4l2_async_notifier *notifier) static void dcmi_graph_notify_unbind(struct v4l2_async_notifier *notifier, struct v4l2_subdev *sd, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct stm32_dcmi *dcmi = notifier_to_dcmi(notifier); @@ -1849,7 +1849,7 @@ static void dcmi_graph_notify_unbind(struct v4l2_async_notifier *notifier, static int dcmi_graph_notify_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct stm32_dcmi *dcmi = notifier_to_dcmi(notifier); unsigned int ret; @@ -1887,7 +1887,7 @@ static const struct v4l2_async_notifier_operations dcmi_graph_notify_ops = { static int dcmi_graph_init(struct stm32_dcmi *dcmi) { - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct device_node *ep; int ret; @@ -1901,7 +1901,7 @@ static int dcmi_graph_init(struct stm32_dcmi *dcmi) asd = v4l2_async_nf_add_fwnode_remote(&dcmi->notifier, of_fwnode_handle(ep), - struct v4l2_async_subdev); + struct v4l2_async_connection); of_node_put(ep); diff --git a/drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c b/drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c index 86c5235a0c7a..1a550713ecfb 100644 --- a/drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c +++ b/drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c @@ -42,7 +42,7 @@ static const struct media_entity_operations sun4i_csi_video_entity_ops = { static int sun4i_csi_notify_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct sun4i_csi *csi = container_of(notifier, struct sun4i_csi, notifier); @@ -118,7 +118,7 @@ static int sun4i_csi_notifier_init(struct sun4i_csi *csi) struct v4l2_fwnode_endpoint vep = { .bus_type = V4L2_MBUS_PARALLEL, }; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct fwnode_handle *ep; int ret; @@ -136,7 +136,7 @@ static int sun4i_csi_notifier_init(struct sun4i_csi *csi) csi->bus = vep.bus.parallel; asd = v4l2_async_nf_add_fwnode_remote(&csi->notifier, ep, - struct v4l2_async_subdev); + struct v4l2_async_connection); if (IS_ERR(asd)) { ret = PTR_ERR(asd); goto out; diff --git a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.c b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.c index 4db950973ce2..ebb725fc11ba 100644 --- a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.c +++ b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.c @@ -642,7 +642,7 @@ static int sun6i_csi_bridge_link(struct sun6i_csi_device *csi_dev, static int sun6i_csi_bridge_notifier_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *remote_subdev, - struct v4l2_async_subdev *async_subdev) + struct v4l2_async_connection *async_subdev) { struct sun6i_csi_device *csi_dev = container_of(notifier, struct sun6i_csi_device, diff --git a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.h b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.h index ee592a14b9c5..44653b38f722 100644 --- a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.h +++ b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.h @@ -34,7 +34,7 @@ struct sun6i_csi_bridge_source { }; struct sun6i_csi_bridge_async_subdev { - struct v4l2_async_subdev async_subdev; + struct v4l2_async_connection async_subdev; struct sun6i_csi_bridge_source *source; }; diff --git a/drivers/media/platform/sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c b/drivers/media/platform/sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c index a220ce849b41..f2746f77aad0 100644 --- a/drivers/media/platform/sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c +++ b/drivers/media/platform/sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c @@ -408,7 +408,7 @@ static const struct media_entity_operations sun6i_mipi_csi2_entity_ops = { static int sun6i_mipi_csi2_notifier_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *remote_subdev, - struct v4l2_async_subdev *async_subdev) + struct v4l2_async_connection *async_subdev) { struct v4l2_subdev *subdev = notifier->sd; struct sun6i_mipi_csi2_device *csi2_dev = @@ -462,7 +462,7 @@ sun6i_mipi_csi2_bridge_source_setup(struct sun6i_mipi_csi2_device *csi2_dev) { struct v4l2_async_notifier *notifier = &csi2_dev->bridge.notifier; struct v4l2_fwnode_endpoint *endpoint = &csi2_dev->bridge.endpoint; - struct v4l2_async_subdev *subdev_async; + struct v4l2_async_connection *subdev_async; struct fwnode_handle *handle; struct device *dev = csi2_dev->dev; int ret; @@ -480,7 +480,7 @@ sun6i_mipi_csi2_bridge_source_setup(struct sun6i_mipi_csi2_device *csi2_dev) subdev_async = v4l2_async_nf_add_fwnode_remote(notifier, handle, - struct v4l2_async_subdev); + struct v4l2_async_connection); if (IS_ERR(subdev_async)) ret = PTR_ERR(subdev_async); diff --git a/drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_mipi_csi2.c b/drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_mipi_csi2.c index cd2e92ae2293..e7f45673ed82 100644 --- a/drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_mipi_csi2.c +++ b/drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_mipi_csi2.c @@ -445,7 +445,7 @@ static const struct media_entity_operations sun8i_a83t_mipi_csi2_entity_ops = { static int sun8i_a83t_mipi_csi2_notifier_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *remote_subdev, - struct v4l2_async_subdev *async_subdev) + struct v4l2_async_connection *async_subdev) { struct v4l2_subdev *subdev = notifier->sd; struct sun8i_a83t_mipi_csi2_device *csi2_dev = @@ -499,7 +499,7 @@ sun8i_a83t_mipi_csi2_bridge_source_setup(struct sun8i_a83t_mipi_csi2_device *csi { struct v4l2_async_notifier *notifier = &csi2_dev->bridge.notifier; struct v4l2_fwnode_endpoint *endpoint = &csi2_dev->bridge.endpoint; - struct v4l2_async_subdev *subdev_async; + struct v4l2_async_connection *subdev_async; struct fwnode_handle *handle; struct device *dev = csi2_dev->dev; int ret; @@ -517,7 +517,7 @@ sun8i_a83t_mipi_csi2_bridge_source_setup(struct sun8i_a83t_mipi_csi2_device *csi subdev_async = v4l2_async_nf_add_fwnode_remote(notifier, handle, - struct v4l2_async_subdev); + struct v4l2_async_connection); if (IS_ERR(subdev_async)) ret = PTR_ERR(subdev_async); diff --git a/drivers/media/platform/ti/am437x/am437x-vpfe.c b/drivers/media/platform/ti/am437x/am437x-vpfe.c index 2dfae9bc0bba..a21f3b91cc06 100644 --- a/drivers/media/platform/ti/am437x/am437x-vpfe.c +++ b/drivers/media/platform/ti/am437x/am437x-vpfe.c @@ -2142,7 +2142,7 @@ static const struct v4l2_ioctl_ops vpfe_ioctl_ops = { static int vpfe_async_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct vpfe_device *vpfe = container_of(notifier->v4l2_dev, struct vpfe_device, v4l2_dev); @@ -2367,8 +2367,7 @@ vpfe_get_pdata(struct vpfe_device *vpfe) pdata->asd[i] = v4l2_async_nf_add_fwnode(&vpfe->notifier, of_fwnode_handle(rem), - struct - v4l2_async_subdev); + struct v4l2_async_connection); of_node_put(rem); if (IS_ERR(pdata->asd[i])) goto cleanup; diff --git a/drivers/media/platform/ti/am437x/am437x-vpfe.h b/drivers/media/platform/ti/am437x/am437x-vpfe.h index f8b4e917b91a..50c3c793b370 100644 --- a/drivers/media/platform/ti/am437x/am437x-vpfe.h +++ b/drivers/media/platform/ti/am437x/am437x-vpfe.h @@ -84,7 +84,7 @@ struct vpfe_config { /* information about each subdev */ struct vpfe_subdev_info sub_devs[VPFE_MAX_SUBDEV]; /* Flat array, arranged in groups */ - struct v4l2_async_subdev *asd[VPFE_MAX_SUBDEV]; + struct v4l2_async_connection *asd[VPFE_MAX_SUBDEV]; }; struct vpfe_cap_buffer { diff --git a/drivers/media/platform/ti/cal/cal.c b/drivers/media/platform/ti/cal/cal.c index 1236215ec70e..37906c23237e 100644 --- a/drivers/media/platform/ti/cal/cal.c +++ b/drivers/media/platform/ti/cal/cal.c @@ -804,19 +804,19 @@ static irqreturn_t cal_irq(int irq_cal, void *data) */ struct cal_v4l2_async_subdev { - struct v4l2_async_subdev asd; /* Must be first */ + struct v4l2_async_connection asd; /* Must be first */ struct cal_camerarx *phy; }; static inline struct cal_v4l2_async_subdev * -to_cal_asd(struct v4l2_async_subdev *asd) +to_cal_asd(struct v4l2_async_connection *asd) { return container_of(asd, struct cal_v4l2_async_subdev, asd); } static int cal_async_notifier_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct cal_camerarx *phy = to_cal_asd(asd)->phy; int pad; diff --git a/drivers/media/platform/ti/davinci/vpif_capture.c b/drivers/media/platform/ti/davinci/vpif_capture.c index 580723333fcc..2bbd7017f67c 100644 --- a/drivers/media/platform/ti/davinci/vpif_capture.c +++ b/drivers/media/platform/ti/davinci/vpif_capture.c @@ -1363,12 +1363,12 @@ static inline void free_vpif_objs(void) static int vpif_async_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { int i; for (i = 0; i < vpif_obj.config->asd_sizes[0]; i++) { - struct v4l2_async_subdev *_asd = vpif_obj.config->asd[i]; + struct v4l2_async_connection *_asd = vpif_obj.config->asd[i]; const struct fwnode_handle *fwnode = _asd->match.fwnode; if (fwnode == subdev->fwnode) { @@ -1570,8 +1570,7 @@ vpif_capture_get_pdata(struct platform_device *pdev) pdata->asd[i] = v4l2_async_nf_add_fwnode(&vpif_obj.notifier, of_fwnode_handle(rem), - struct - v4l2_async_subdev); + struct v4l2_async_connection); if (IS_ERR(pdata->asd[i])) goto err_cleanup; diff --git a/drivers/media/platform/ti/omap3isp/isp.h b/drivers/media/platform/ti/omap3isp/isp.h index a9d760fbf349..32ea70c8d2f9 100644 --- a/drivers/media/platform/ti/omap3isp/isp.h +++ b/drivers/media/platform/ti/omap3isp/isp.h @@ -220,7 +220,7 @@ struct isp_device { }; struct isp_async_subdev { - struct v4l2_async_subdev asd; + struct v4l2_async_connection asd; struct isp_bus_cfg bus; }; diff --git a/drivers/media/platform/video-mux.c b/drivers/media/platform/video-mux.c index 71d97042a470..7d48fb9bc09d 100644 --- a/drivers/media/platform/video-mux.c +++ b/drivers/media/platform/video-mux.c @@ -343,7 +343,7 @@ static const struct v4l2_subdev_ops video_mux_subdev_ops = { static int video_mux_notify_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *sd, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct video_mux *vmux = notifier_to_video_mux(notifier); @@ -363,7 +363,7 @@ static int video_mux_async_register(struct video_mux *vmux, v4l2_async_nf_init(&vmux->notifier); for (i = 0; i < num_input_pads; i++) { - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct fwnode_handle *ep, *remote_ep; ep = fwnode_graph_get_endpoint_by_id( @@ -381,7 +381,7 @@ static int video_mux_async_register(struct video_mux *vmux, fwnode_handle_put(remote_ep); asd = v4l2_async_nf_add_fwnode_remote(&vmux->notifier, ep, - struct v4l2_async_subdev); + struct v4l2_async_connection); fwnode_handle_put(ep); diff --git a/drivers/media/platform/xilinx/xilinx-vipp.c b/drivers/media/platform/xilinx/xilinx-vipp.c index 80157b7a28ee..70e7a1f6ed3b 100644 --- a/drivers/media/platform/xilinx/xilinx-vipp.c +++ b/drivers/media/platform/xilinx/xilinx-vipp.c @@ -34,13 +34,13 @@ * @subdev: V4L2 subdev */ struct xvip_graph_entity { - struct v4l2_async_subdev asd; /* must be first */ + struct v4l2_async_connection asd; /* must be first */ struct media_entity *entity; struct v4l2_subdev *subdev; }; static inline struct xvip_graph_entity * -to_xvip_entity(struct v4l2_async_subdev *asd) +to_xvip_entity(struct v4l2_async_connection *asd) { return container_of(asd, struct xvip_graph_entity, asd); } @@ -54,9 +54,9 @@ xvip_graph_find_entity(struct xvip_composite_device *xdev, const struct fwnode_handle *fwnode) { struct xvip_graph_entity *entity; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; - list_for_each_entry(asd, &xdev->notifier.asd_head, asd_list) { + list_for_each_entry(asd, &xdev->notifier.asc_head, asc_list) { entity = to_xvip_entity(asd); if (entity->asd.match.fwnode == fwnode) return entity; @@ -285,13 +285,13 @@ static int xvip_graph_notify_complete(struct v4l2_async_notifier *notifier) struct xvip_composite_device *xdev = container_of(notifier, struct xvip_composite_device, notifier); struct xvip_graph_entity *entity; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; int ret; dev_dbg(xdev->dev, "notify complete, all subdevs registered\n"); /* Create links for every entity. */ - list_for_each_entry(asd, &xdev->notifier.asd_head, asd_list) { + list_for_each_entry(asd, &xdev->notifier.asc_head, asc_list) { entity = to_xvip_entity(asd); ret = xvip_graph_build_one(xdev, entity); if (ret < 0) @@ -312,17 +312,17 @@ static int xvip_graph_notify_complete(struct v4l2_async_notifier *notifier) static int xvip_graph_notify_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *unused) + struct v4l2_async_connection *unused) { struct xvip_composite_device *xdev = container_of(notifier, struct xvip_composite_device, notifier); struct xvip_graph_entity *entity; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; /* Locate the entity corresponding to the bound subdev and store the * subdev pointer. */ - list_for_each_entry(asd, &xdev->notifier.asd_head, asd_list) { + list_for_each_entry(asd, &xdev->notifier.asc_head, asc_list) { entity = to_xvip_entity(asd); if (entity->asd.match.fwnode != subdev->fwnode) @@ -402,7 +402,7 @@ static int xvip_graph_parse_one(struct xvip_composite_device *xdev, static int xvip_graph_parse(struct xvip_composite_device *xdev) { struct xvip_graph_entity *entity; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; int ret; /* @@ -415,7 +415,7 @@ static int xvip_graph_parse(struct xvip_composite_device *xdev) if (ret < 0) return 0; - list_for_each_entry(asd, &xdev->notifier.asd_head, asd_list) { + list_for_each_entry(asd, &xdev->notifier.asc_head, asc_list) { entity = to_xvip_entity(asd); ret = xvip_graph_parse_one(xdev, entity->asd.match.fwnode); if (ret < 0) { @@ -523,7 +523,7 @@ static int xvip_graph_init(struct xvip_composite_device *xdev) goto done; } - if (list_empty(&xdev->notifier.asd_head)) { + if (list_empty(&xdev->notifier.asc_head)) { dev_err(xdev->dev, "no subdev found in graph\n"); ret = -ENOENT; goto done; diff --git a/drivers/media/v4l2-core/v4l2-async.c b/drivers/media/v4l2-core/v4l2-async.c index fdc995dfc15c..56ce40481ec4 100644 --- a/drivers/media/v4l2-core/v4l2-async.c +++ b/drivers/media/v4l2-core/v4l2-async.c @@ -26,22 +26,22 @@ static int v4l2_async_nf_call_bound(struct v4l2_async_notifier *n, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asc) { if (!n->ops || !n->ops->bound) return 0; - return n->ops->bound(n, subdev, asd); + return n->ops->bound(n, subdev, asc); } static void v4l2_async_nf_call_unbind(struct v4l2_async_notifier *n, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asc) { if (!n->ops || !n->ops->unbind) return; - n->ops->unbind(n, subdev, asd); + n->ops->unbind(n, subdev, asc); } static int v4l2_async_nf_call_complete(struct v4l2_async_notifier *n) @@ -53,12 +53,12 @@ static int v4l2_async_nf_call_complete(struct v4l2_async_notifier *n) } static void v4l2_async_nf_call_destroy(struct v4l2_async_notifier *n, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asc) { if (!n->ops || !n->ops->destroy) return; - n->ops->destroy(asd); + n->ops->destroy(asc); } static bool match_i2c(struct v4l2_async_notifier *notifier, @@ -137,17 +137,17 @@ static LIST_HEAD(subdev_head); static LIST_HEAD(notifier_head); static DEFINE_MUTEX(list_lock); -static struct v4l2_async_subdev * +static struct v4l2_async_connection * v4l2_async_find_match(struct v4l2_async_notifier *notifier, struct v4l2_subdev *sd) { bool (*match)(struct v4l2_async_notifier *notifier, struct v4l2_subdev *sd, struct v4l2_async_match *match); - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asc; - list_for_each_entry(asd, ¬ifier->waiting_head, waiting_list) { + list_for_each_entry(asc, ¬ifier->waiting_head, waiting_list) { /* bus_type has been verified valid before */ - switch (asd->match.type) { + switch (asc->match.type) { case V4L2_ASYNC_MATCH_I2C: match = match_i2c; break; @@ -161,15 +161,15 @@ v4l2_async_find_match(struct v4l2_async_notifier *notifier, } /* match cannot be NULL here */ - if (match(notifier, sd, &asd->match)) - return asd; + if (match(notifier, sd, &asc->match)) + return asc; } return NULL; } /* Compare two async sub-device descriptors for equivalence */ -static bool asd_equal(struct v4l2_async_match *match1, +static bool asc_equal(struct v4l2_async_match *match1, struct v4l2_async_match *match2) { if (match1->type != match2->type) @@ -299,7 +299,7 @@ static int v4l2_async_create_ancillary_links(struct v4l2_async_notifier *n, static int v4l2_async_match_notify(struct v4l2_async_notifier *notifier, struct v4l2_device *v4l2_dev, struct v4l2_subdev *sd, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asc) { struct v4l2_async_notifier *subdev_notifier; int ret; @@ -308,7 +308,7 @@ static int v4l2_async_match_notify(struct v4l2_async_notifier *notifier, if (ret < 0) return ret; - ret = v4l2_async_nf_call_bound(notifier, sd, asd); + ret = v4l2_async_nf_call_bound(notifier, sd, asc); if (ret < 0) { v4l2_device_unregister_subdev(sd); return ret; @@ -322,13 +322,13 @@ static int v4l2_async_match_notify(struct v4l2_async_notifier *notifier, */ ret = v4l2_async_create_ancillary_links(notifier, sd); if (ret) { - v4l2_async_nf_call_unbind(notifier, sd, asd); + v4l2_async_nf_call_unbind(notifier, sd, asc); v4l2_device_unregister_subdev(sd); return ret; } - list_del(&asd->waiting_list); - sd->asd = asd; + list_del(&asc->waiting_list); + sd->asd = asc; sd->notifier = notifier; /* Move from the global subdevice list to notifier's done */ @@ -369,14 +369,14 @@ v4l2_async_nf_try_all_subdevs(struct v4l2_async_notifier *notifier) again: list_for_each_entry(sd, &subdev_head, async_list) { - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asc; int ret; - asd = v4l2_async_find_match(notifier, sd); - if (!asd) + asc = v4l2_async_find_match(notifier, sd); + if (!asc) continue; - ret = v4l2_async_match_notify(notifier, v4l2_dev, sd, asd); + ret = v4l2_async_match_notify(notifier, v4l2_dev, sd, asc); if (ret < 0) return ret; @@ -434,18 +434,18 @@ static bool __v4l2_async_nf_has_async_subdev(struct v4l2_async_notifier *notifier, struct v4l2_async_match *match) { - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asc; struct v4l2_subdev *sd; - list_for_each_entry(asd, ¬ifier->waiting_head, waiting_list) - if (asd_equal(&asd->match, match)) + list_for_each_entry(asc, ¬ifier->waiting_head, waiting_list) + if (asc_equal(&asc->match, match)) return true; list_for_each_entry(sd, ¬ifier->done_head, async_list) { if (WARN_ON(!sd->asd)) continue; - if (asd_equal(&sd->asd->match, match)) + if (asc_equal(&sd->asd->match, match)) return true; } @@ -460,19 +460,19 @@ static bool v4l2_async_nf_has_async_subdev(struct v4l2_async_notifier *notifier, struct v4l2_async_match *match, bool skip_self) { - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asc; lockdep_assert_held(&list_lock); /* Check that an asd is not being added more than once. */ - list_for_each_entry(asd, ¬ifier->asd_head, asd_list) { - if (&asd->match == match) + list_for_each_entry(asc, ¬ifier->asc_head, asc_list) { + if (&asc->match == match) break; - if (asd_equal(&asd->match, match)) + if (asc_equal(&asc->match, match)) return true; } - /* Check that an asd does not exist in other notifiers. */ + /* Check that an asc does not exist in other notifiers. */ list_for_each_entry(notifier, ¬ifier_head, notifier_list) if (__v4l2_async_nf_has_async_subdev(notifier, match)) return true; @@ -480,7 +480,7 @@ v4l2_async_nf_has_async_subdev(struct v4l2_async_notifier *notifier, return false; } -static int v4l2_async_nf_asd_valid(struct v4l2_async_notifier *notifier, +static int v4l2_async_nf_asc_valid(struct v4l2_async_notifier *notifier, struct v4l2_async_match *match, bool skip_self) { @@ -510,13 +510,13 @@ static int v4l2_async_nf_asd_valid(struct v4l2_async_notifier *notifier, void v4l2_async_nf_init(struct v4l2_async_notifier *notifier) { - INIT_LIST_HEAD(¬ifier->asd_head); + INIT_LIST_HEAD(¬ifier->asc_head); } EXPORT_SYMBOL(v4l2_async_nf_init); static int __v4l2_async_nf_register(struct v4l2_async_notifier *notifier) { - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asc; int ret; INIT_LIST_HEAD(¬ifier->waiting_head); @@ -524,12 +524,12 @@ static int __v4l2_async_nf_register(struct v4l2_async_notifier *notifier) mutex_lock(&list_lock); - list_for_each_entry(asd, ¬ifier->asd_head, asd_list) { - ret = v4l2_async_nf_asd_valid(notifier, &asd->match, true); + list_for_each_entry(asc, ¬ifier->asc_head, asc_list) { + ret = v4l2_async_nf_asc_valid(notifier, &asc->match, true); if (ret) goto err_unlock; - list_add_tail(&asd->waiting_list, ¬ifier->waiting_head); + list_add_tail(&asc->waiting_list, ¬ifier->waiting_head); } ret = v4l2_async_nf_try_all_subdevs(notifier); @@ -621,23 +621,23 @@ EXPORT_SYMBOL(v4l2_async_nf_unregister); static void __v4l2_async_nf_cleanup(struct v4l2_async_notifier *notifier) { - struct v4l2_async_subdev *asd, *tmp; + struct v4l2_async_connection *asc, *tmp; - if (!notifier || !notifier->asd_head.next) + if (!notifier || !notifier->asc_head.next) return; - list_for_each_entry_safe(asd, tmp, ¬ifier->asd_head, asd_list) { - switch (asd->match.type) { + list_for_each_entry_safe(asc, tmp, ¬ifier->asc_head, asc_list) { + switch (asc->match.type) { case V4L2_ASYNC_MATCH_FWNODE: - fwnode_handle_put(asd->match.fwnode); + fwnode_handle_put(asc->match.fwnode); break; default: break; } - list_del(&asd->asd_list); - v4l2_async_nf_call_destroy(notifier, asd); - kfree(asd); + list_del(&asc->asc_list); + v4l2_async_nf_call_destroy(notifier, asc); + kfree(asc); } } @@ -651,95 +651,95 @@ void v4l2_async_nf_cleanup(struct v4l2_async_notifier *notifier) } EXPORT_SYMBOL_GPL(v4l2_async_nf_cleanup); -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) { int ret; mutex_lock(&list_lock); - ret = v4l2_async_nf_asd_valid(notifier, &asd->match, false); + ret = v4l2_async_nf_asc_valid(notifier, &asc->match, false); if (ret) goto unlock; - list_add_tail(&asd->asd_list, ¬ifier->asd_head); + list_add_tail(&asc->asc_list, ¬ifier->asc_head); unlock: mutex_unlock(&list_lock); return ret; } -EXPORT_SYMBOL_GPL(__v4l2_async_nf_add_subdev); +EXPORT_SYMBOL_GPL(__v4l2_async_nf_add_connection); -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) { - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asc; int ret; - asd = kzalloc(asd_struct_size, GFP_KERNEL); - if (!asd) + asc = kzalloc(asc_struct_size, GFP_KERNEL); + if (!asc) return ERR_PTR(-ENOMEM); - asd->match.type = V4L2_ASYNC_MATCH_FWNODE; - asd->match.fwnode = fwnode_handle_get(fwnode); + asc->match.type = V4L2_ASYNC_MATCH_FWNODE; + asc->match.fwnode = fwnode_handle_get(fwnode); - ret = __v4l2_async_nf_add_subdev(notifier, asd); + ret = __v4l2_async_nf_add_connection(notifier, asc); if (ret) { fwnode_handle_put(fwnode); - kfree(asd); + kfree(asc); return ERR_PTR(ret); } - return asd; + return asc; } EXPORT_SYMBOL_GPL(__v4l2_async_nf_add_fwnode); -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) { - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asc; struct fwnode_handle *remote; remote = fwnode_graph_get_remote_endpoint(endpoint); if (!remote) return ERR_PTR(-ENOTCONN); - asd = __v4l2_async_nf_add_fwnode(notif, remote, asd_struct_size); + asc = __v4l2_async_nf_add_fwnode(notif, remote, asc_struct_size); /* * Calling __v4l2_async_nf_add_fwnode grabs a refcount, * so drop the one we got in fwnode_graph_get_remote_port_parent. */ fwnode_handle_put(remote); - return asd; + return asc; } EXPORT_SYMBOL_GPL(__v4l2_async_nf_add_fwnode_remote); -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 short address, unsigned int asc_struct_size) { - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asc; int ret; - asd = kzalloc(asd_struct_size, GFP_KERNEL); - if (!asd) + asc = kzalloc(asc_struct_size, GFP_KERNEL); + if (!asc) return ERR_PTR(-ENOMEM); - asd->match.type = V4L2_ASYNC_MATCH_I2C; - asd->match.i2c.adapter_id = adapter_id; - asd->match.i2c.address = address; + asc->match.type = V4L2_ASYNC_MATCH_I2C; + asc->match.i2c.adapter_id = adapter_id; + asc->match.i2c.address = address; - ret = __v4l2_async_nf_add_subdev(notifier, asd); + ret = __v4l2_async_nf_add_connection(notifier, asc); if (ret) { - kfree(asd); + kfree(asc); return ERR_PTR(ret); } - return asd; + return asc; } EXPORT_SYMBOL_GPL(__v4l2_async_nf_add_i2c); @@ -771,16 +771,16 @@ int v4l2_async_register_subdev(struct v4l2_subdev *sd) list_for_each_entry(notifier, ¬ifier_head, notifier_list) { struct v4l2_device *v4l2_dev = v4l2_async_nf_find_v4l2_dev(notifier); - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asc; if (!v4l2_dev) continue; - asd = v4l2_async_find_match(notifier, sd); - if (!asd) + asc = v4l2_async_find_match(notifier, sd); + if (!asc) continue; - ret = v4l2_async_match_notify(notifier, v4l2_dev, sd, asd); + ret = v4l2_async_match_notify(notifier, v4l2_dev, sd, asc); if (ret) goto err_unbind; @@ -883,14 +883,14 @@ v4l2_async_nf_name(struct v4l2_async_notifier *notifier) static int pending_subdevs_show(struct seq_file *s, void *data) { struct v4l2_async_notifier *notif; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asc; mutex_lock(&list_lock); list_for_each_entry(notif, ¬ifier_head, notifier_list) { seq_printf(s, "%s:\n", v4l2_async_nf_name(notif)); - list_for_each_entry(asd, ¬if->waiting_head, waiting_list) - print_waiting_subdev(s, &asd->match); + list_for_each_entry(asc, ¬if->waiting_head, waiting_list) + print_waiting_subdev(s, &asc->match); } mutex_unlock(&list_lock); diff --git a/drivers/media/v4l2-core/v4l2-fwnode.c b/drivers/media/v4l2-core/v4l2-fwnode.c index e6bd63364bed..e4ba04cebc9a 100644 --- a/drivers/media/v4l2-core/v4l2-fwnode.c +++ b/drivers/media/v4l2-core/v4l2-fwnode.c @@ -804,7 +804,7 @@ v4l2_async_nf_fwnode_parse_endpoint(struct device *dev, parse_endpoint_func parse_endpoint) { struct v4l2_fwnode_endpoint vep = { .bus_type = 0 }; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; int ret; asd = kzalloc(asd_struct_size, GFP_KERNEL); @@ -839,7 +839,7 @@ v4l2_async_nf_fwnode_parse_endpoint(struct device *dev, if (ret < 0) goto out_err; - ret = __v4l2_async_nf_add_subdev(notifier, asd); + ret = __v4l2_async_nf_add_connection(notifier, asd); if (ret < 0) { /* not an error if asd already exists */ if (ret == -EEXIST) @@ -865,7 +865,7 @@ v4l2_async_nf_parse_fwnode_endpoints(struct device *dev, struct fwnode_handle *fwnode; int ret = 0; - if (WARN_ON(asd_struct_size < sizeof(struct v4l2_async_subdev))) + if (WARN_ON(asd_struct_size < sizeof(struct v4l2_async_connection))) return -EINVAL; fwnode_graph_for_each_endpoint(dev_fwnode(dev), fwnode) { @@ -916,10 +916,10 @@ static int v4l2_fwnode_reference_parse(struct device *dev, !(ret = fwnode_property_get_reference_args(dev_fwnode(dev), prop, NULL, 0, index, &args)); index++) { - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; asd = v4l2_async_nf_add_fwnode(notifier, args.fwnode, - struct v4l2_async_subdev); + struct v4l2_async_connection); fwnode_handle_put(args.fwnode); if (IS_ERR(asd)) { /* not an error if asd already exists */ @@ -1221,10 +1221,10 @@ v4l2_fwnode_reference_parse_int_props(struct device *dev, props, nprops))); index++) { - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; asd = v4l2_async_nf_add_fwnode(notifier, fwnode, - struct v4l2_async_subdev); + struct v4l2_async_connection); fwnode_handle_put(fwnode); if (IS_ERR(asd)) { ret = PTR_ERR(asd); diff --git a/drivers/staging/media/deprecated/atmel/atmel-isc-base.c b/drivers/staging/media/deprecated/atmel/atmel-isc-base.c index 99e61bbfc9bc..5103b60c4e77 100644 --- a/drivers/staging/media/deprecated/atmel/atmel-isc-base.c +++ b/drivers/staging/media/deprecated/atmel/atmel-isc-base.c @@ -1726,7 +1726,7 @@ static int isc_ctrl_init(struct isc_device *isc) static int isc_async_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct isc_device *isc = container_of(notifier->v4l2_dev, struct isc_device, v4l2_dev); @@ -1745,7 +1745,7 @@ static int isc_async_bound(struct v4l2_async_notifier *notifier, static void isc_async_unbind(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct isc_device *isc = container_of(notifier->v4l2_dev, struct isc_device, v4l2_dev); diff --git a/drivers/staging/media/deprecated/atmel/atmel-isc.h b/drivers/staging/media/deprecated/atmel/atmel-isc.h index dfc030b5a08f..31767ea74be6 100644 --- a/drivers/staging/media/deprecated/atmel/atmel-isc.h +++ b/drivers/staging/media/deprecated/atmel/atmel-isc.h @@ -44,7 +44,7 @@ struct isc_buffer { struct isc_subdev_entity { struct v4l2_subdev *sd; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct device_node *epn; struct v4l2_async_notifier notifier; diff --git a/drivers/staging/media/deprecated/atmel/atmel-sama5d2-isc.c b/drivers/staging/media/deprecated/atmel/atmel-sama5d2-isc.c index ba0614f981a2..0471e7796833 100644 --- a/drivers/staging/media/deprecated/atmel/atmel-sama5d2-isc.c +++ b/drivers/staging/media/deprecated/atmel/atmel-sama5d2-isc.c @@ -505,7 +505,7 @@ static int atmel_isc_probe(struct platform_device *pdev) } list_for_each_entry(subdev_entity, &isc->subdev_entities, list) { - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct fwnode_handle *fwnode = of_fwnode_handle(subdev_entity->epn); @@ -513,7 +513,7 @@ static int atmel_isc_probe(struct platform_device *pdev) asd = v4l2_async_nf_add_fwnode_remote(&subdev_entity->notifier, fwnode, - struct v4l2_async_subdev); + struct v4l2_async_connection); of_node_put(subdev_entity->epn); subdev_entity->epn = NULL; diff --git a/drivers/staging/media/deprecated/atmel/atmel-sama7g5-isc.c b/drivers/staging/media/deprecated/atmel/atmel-sama7g5-isc.c index 01ababdfcbd9..4af5769cd425 100644 --- a/drivers/staging/media/deprecated/atmel/atmel-sama7g5-isc.c +++ b/drivers/staging/media/deprecated/atmel/atmel-sama7g5-isc.c @@ -495,7 +495,7 @@ static int microchip_xisc_probe(struct platform_device *pdev) } list_for_each_entry(subdev_entity, &isc->subdev_entities, list) { - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct fwnode_handle *fwnode = of_fwnode_handle(subdev_entity->epn); @@ -503,7 +503,7 @@ static int microchip_xisc_probe(struct platform_device *pdev) asd = v4l2_async_nf_add_fwnode_remote(&subdev_entity->notifier, fwnode, - struct v4l2_async_subdev); + struct v4l2_async_connection); of_node_put(subdev_entity->epn); subdev_entity->epn = NULL; diff --git a/drivers/staging/media/imx/imx-media-csi.c b/drivers/staging/media/imx/imx-media-csi.c index 44d87fe30d52..6a9052790b78 100644 --- a/drivers/staging/media/imx/imx-media-csi.c +++ b/drivers/staging/media/imx/imx-media-csi.c @@ -1892,7 +1892,7 @@ static const struct v4l2_subdev_internal_ops csi_internal_ops = { static int imx_csi_notify_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *sd, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct csi_priv *priv = notifier_to_dev(notifier); struct media_pad *sink = &priv->sd.entity.pads[CSI_SINK_PAD]; @@ -1913,7 +1913,7 @@ static const struct v4l2_async_notifier_operations csi_notify_ops = { static int imx_csi_async_register(struct csi_priv *priv) { - struct v4l2_async_subdev *asd = NULL; + struct v4l2_async_connection *asd = NULL; struct fwnode_handle *ep; unsigned int port; int ret; @@ -1930,7 +1930,7 @@ static int imx_csi_async_register(struct csi_priv *priv) FWNODE_GRAPH_ENDPOINT_NEXT); if (ep) { asd = v4l2_async_nf_add_fwnode_remote(&priv->notifier, ep, - struct v4l2_async_subdev); + struct v4l2_async_connection); fwnode_handle_put(ep); diff --git a/drivers/staging/media/imx/imx-media-dev-common.c b/drivers/staging/media/imx/imx-media-dev-common.c index eaa54848df6a..f2536016d24a 100644 --- a/drivers/staging/media/imx/imx-media-dev-common.c +++ b/drivers/staging/media/imx/imx-media-dev-common.c @@ -22,7 +22,7 @@ static inline struct imx_media_dev *notifier2dev(struct v4l2_async_notifier *n) /* async subdev bound notifier */ static int imx_media_subdev_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *sd, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct imx_media_dev *imxmd = notifier2dev(notifier); @@ -398,7 +398,7 @@ int imx_media_dev_notifier_register(struct imx_media_dev *imxmd, int ret; /* no subdevs? just bail */ - if (list_empty(&imxmd->notifier.asd_head)) { + if (list_empty(&imxmd->notifier.asc_head)) { v4l2_err(&imxmd->v4l2_dev, "no subdevs\n"); return -ENODEV; } diff --git a/drivers/staging/media/imx/imx-media-dev.c b/drivers/staging/media/imx/imx-media-dev.c index f85462214e22..40f4e21571ed 100644 --- a/drivers/staging/media/imx/imx-media-dev.c +++ b/drivers/staging/media/imx/imx-media-dev.c @@ -20,7 +20,7 @@ static inline struct imx_media_dev *notifier2dev(struct v4l2_async_notifier *n) /* async subdev bound notifier */ static int imx_media_subdev_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *sd, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct imx_media_dev *imxmd = notifier2dev(notifier); int ret; diff --git a/drivers/staging/media/imx/imx-media-of.c b/drivers/staging/media/imx/imx-media-of.c index 59f1eb7b62bc..310059d9d97e 100644 --- a/drivers/staging/media/imx/imx-media-of.c +++ b/drivers/staging/media/imx/imx-media-of.c @@ -19,7 +19,7 @@ int imx_media_of_add_csi(struct imx_media_dev *imxmd, struct device_node *csi_np) { - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; int ret = 0; if (!of_device_is_available(csi_np)) { @@ -31,7 +31,7 @@ int imx_media_of_add_csi(struct imx_media_dev *imxmd, /* add CSI fwnode to async notifier */ asd = v4l2_async_nf_add_fwnode(&imxmd->notifier, of_fwnode_handle(csi_np), - struct v4l2_async_subdev); + struct v4l2_async_connection); if (IS_ERR(asd)) { ret = PTR_ERR(asd); if (ret == -EEXIST) diff --git a/drivers/staging/media/imx/imx6-mipi-csi2.c b/drivers/staging/media/imx/imx6-mipi-csi2.c index c4cb558a85c6..cebf42840061 100644 --- a/drivers/staging/media/imx/imx6-mipi-csi2.c +++ b/drivers/staging/media/imx/imx6-mipi-csi2.c @@ -591,7 +591,7 @@ static const struct v4l2_subdev_internal_ops csi2_internal_ops = { static int csi2_notify_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *sd, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct csi2_dev *csi2 = notifier_to_dev(notifier); struct media_pad *sink = &csi2->sd.entity.pads[CSI2_SINK_PAD]; @@ -614,7 +614,7 @@ static int csi2_notify_bound(struct v4l2_async_notifier *notifier, static void csi2_notify_unbind(struct v4l2_async_notifier *notifier, struct v4l2_subdev *sd, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct csi2_dev *csi2 = notifier_to_dev(notifier); @@ -631,7 +631,7 @@ static int csi2_async_register(struct csi2_dev *csi2) struct v4l2_fwnode_endpoint vep = { .bus_type = V4L2_MBUS_CSI2_DPHY, }; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct fwnode_handle *ep; int ret; @@ -652,7 +652,7 @@ static int csi2_async_register(struct csi2_dev *csi2) dev_dbg(csi2->dev, "flags: 0x%08x\n", vep.bus.mipi_csi2.flags); asd = v4l2_async_nf_add_fwnode_remote(&csi2->notifier, ep, - struct v4l2_async_subdev); + struct v4l2_async_connection); fwnode_handle_put(ep); if (IS_ERR(asd)) diff --git a/drivers/staging/media/imx/imx8mq-mipi-csi2.c b/drivers/staging/media/imx/imx8mq-mipi-csi2.c index 83194328d010..05b7215493af 100644 --- a/drivers/staging/media/imx/imx8mq-mipi-csi2.c +++ b/drivers/staging/media/imx/imx8mq-mipi-csi2.c @@ -616,7 +616,7 @@ mipi_notifier_to_csi2_state(struct v4l2_async_notifier *n) static int imx8mq_mipi_csi_notify_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *sd, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct csi_state *state = mipi_notifier_to_csi2_state(notifier); struct media_pad *sink = &state->sd.entity.pads[MIPI_CSI2_PAD_SINK]; @@ -636,7 +636,7 @@ static int imx8mq_mipi_csi_async_register(struct csi_state *state) struct v4l2_fwnode_endpoint vep = { .bus_type = V4L2_MBUS_CSI2_DPHY, }; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct fwnode_handle *ep; unsigned int i; int ret; @@ -668,7 +668,7 @@ static int imx8mq_mipi_csi_async_register(struct csi_state *state) state->bus.flags); asd = v4l2_async_nf_add_fwnode_remote(&state->notifier, ep, - struct v4l2_async_subdev); + struct v4l2_async_connection); if (IS_ERR(asd)) { ret = PTR_ERR(asd); goto err_parse; diff --git a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.c b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.c index 1ca4673df2b3..dd7dfecb9ef3 100644 --- a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.c +++ b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.c @@ -395,7 +395,7 @@ static int sun6i_isp_proc_link(struct sun6i_isp_device *isp_dev, static int sun6i_isp_proc_notifier_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *remote_subdev, - struct v4l2_async_subdev *async_subdev) + struct v4l2_async_connection *async_subdev) { struct sun6i_isp_device *isp_dev = container_of(notifier, struct sun6i_isp_device, proc.notifier); diff --git a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.h b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.h index c5c274e21ad5..db6738a39147 100644 --- a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.h +++ b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.h @@ -34,7 +34,7 @@ struct sun6i_isp_proc_source { }; struct sun6i_isp_proc_async_subdev { - struct v4l2_async_subdev async_subdev; + struct v4l2_async_connection async_subdev; struct sun6i_isp_proc_source *source; }; diff --git a/drivers/staging/media/tegra-video/vi.c b/drivers/staging/media/tegra-video/vi.c index 4818646fe637..eaa1e241094f 100644 --- a/drivers/staging/media/tegra-video/vi.c +++ b/drivers/staging/media/tegra-video/vi.c @@ -54,7 +54,7 @@ to_tegra_channel_buffer(struct vb2_v4l2_buffer *vb) } static inline struct tegra_vi_graph_entity * -to_tegra_vi_graph_entity(struct v4l2_async_subdev *asd) +to_tegra_vi_graph_entity(struct v4l2_async_connection *asd) { return container_of(asd, struct tegra_vi_graph_entity, asd); } @@ -1561,9 +1561,9 @@ tegra_vi_graph_find_entity(struct tegra_vi_channel *chan, const struct fwnode_handle *fwnode) { struct tegra_vi_graph_entity *entity; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; - list_for_each_entry(asd, &chan->notifier.asd_head, asd_list) { + list_for_each_entry(asd, &chan->notifier.asc_head, asc_list) { entity = to_tegra_vi_graph_entity(asd); if (entity->asd.match.fwnode == fwnode) return entity; @@ -1677,7 +1677,7 @@ static int tegra_vi_graph_build(struct tegra_vi_channel *chan, static int tegra_vi_graph_notify_complete(struct v4l2_async_notifier *notifier) { struct tegra_vi_graph_entity *entity; - struct v4l2_async_subdev *asd; + struct v4l2_async_connection *asd; struct v4l2_subdev *subdev; struct tegra_vi_channel *chan; struct tegra_vi *vi; @@ -1707,7 +1707,7 @@ static int tegra_vi_graph_notify_complete(struct v4l2_async_notifier *notifier) } /* create links between the entities */ - list_for_each_entry(asd, &chan->notifier.asd_head, asd_list) { + list_for_each_entry(asd, &chan->notifier.asc_head, asc_list) { entity = to_tegra_vi_graph_entity(asd); ret = tegra_vi_graph_build(chan, entity); if (ret < 0) @@ -1750,7 +1750,7 @@ static int tegra_vi_graph_notify_complete(struct v4l2_async_notifier *notifier) static int tegra_vi_graph_notify_bound(struct v4l2_async_notifier *notifier, struct v4l2_subdev *subdev, - struct v4l2_async_subdev *asd) + struct v4l2_async_connection *asd) { struct tegra_vi_graph_entity *entity; struct tegra_vi *vi; @@ -1874,7 +1874,7 @@ static int tegra_vi_graph_init(struct tegra_vi *vi) ret = tegra_vi_graph_parse_one(chan, remote); fwnode_handle_put(remote); - if (ret < 0 || list_empty(&chan->notifier.asd_head)) + if (ret < 0 || list_empty(&chan->notifier.asc_head)) continue; chan->notifier.ops = &tegra_vi_async_ops; diff --git a/drivers/staging/media/tegra-video/vi.h b/drivers/staging/media/tegra-video/vi.h index a68e2c02c7b0..ae49eff7536a 100644 --- a/drivers/staging/media/tegra-video/vi.h +++ b/drivers/staging/media/tegra-video/vi.h @@ -106,7 +106,7 @@ struct tegra_vi { * @subdev: V4L2 subdev */ struct tegra_vi_graph_entity { - struct v4l2_async_subdev asd; + struct v4l2_async_connection asd; struct media_entity *entity; struct v4l2_subdev *subdev; }; diff --git a/include/media/davinci/vpif_types.h b/include/media/davinci/vpif_types.h index d03e5c54347a..6cce1f09c721 100644 --- a/include/media/davinci/vpif_types.h +++ b/include/media/davinci/vpif_types.h @@ -72,7 +72,7 @@ struct vpif_capture_config { int i2c_adapter_id; const char *card_name; - struct v4l2_async_subdev *asd[VPIF_CAPTURE_MAX_CHANNELS]; + struct v4l2_async_connection *asd[VPIF_CAPTURE_MAX_CHANNELS]; int asd_sizes[VPIF_CAPTURE_MAX_CHANNELS]; }; #endif /* _VPIF_TYPES_H */ 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 + * @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 { * @complete: All subdevices have been probed successfully. The complete * 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 * * 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); /** * v4l2_async_nf_parse_fwnode_endpoints - Parse V4L2 fwnode endpoints in a @@ -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. * @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;
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. 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(-)