Commit b8ec754a authored by Sakari Ailus's avatar Sakari Ailus Committed by Mauro Carvalho Chehab
Browse files

media: v4l: async: Set v4l2_device and subdev in async notifier init



Set the v4l2_device already in async notifier init, so struct device
related to it will be available before the notifier is registered. This
requires separating notifier initialisation into two functions, one that
takes v4l2_device as its argument, v4l2_async_nf_init and
v4l2_async_subdev_nf_init, for sub-device notifiers. Registering the
notifier will use a single function, v4l2_async_nf_register.

This is done in order to make struct device available earlier, during
construction of the async connections, for sensible debug prints.

Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Tested-by: Philipp Zabel <p.zabel@pengutronix.de> # imx6qp
Tested-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> # rcar + adv746x
Tested-by: Aishwarya Kothari <aishwarya.kothari@toradex.com> # Apalis i.MX6Q with TC358743
Tested-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> # Renesas RZ/G2L SMARC
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent 5651bab6
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -568,7 +568,7 @@ static int ub913_v4l2_notifier_register(struct ub913_data *priv)
		return -ENODEV;
	}

	v4l2_async_nf_init(&priv->notifier);
	v4l2_async_subdev_nf_init(&priv->notifier, &priv->sd);

	asd = v4l2_async_nf_add_fwnode_remote(&priv->notifier, ep_fwnode,
					      struct v4l2_async_connection);
@@ -583,7 +583,7 @@ static int ub913_v4l2_notifier_register(struct ub913_data *priv)

	priv->notifier.ops = &ub913_notify_ops;

	ret = v4l2_async_subdev_nf_register(&priv->sd, &priv->notifier);
	ret = v4l2_async_nf_register(&priv->notifier);
	if (ret) {
		dev_err(dev, "Failed to register subdev_notifier");
		v4l2_async_nf_cleanup(&priv->notifier);
+2 −2
Original line number Diff line number Diff line
@@ -773,7 +773,7 @@ static int ub953_v4l2_notifier_register(struct ub953_data *priv)
		return -ENODEV;
	}

	v4l2_async_nf_init(&priv->notifier);
	v4l2_async_subdev_nf_init(&priv->notifier, &priv->sd);

	asd = v4l2_async_nf_add_fwnode_remote(&priv->notifier, ep_fwnode,
					      struct v4l2_async_connection);
@@ -788,7 +788,7 @@ static int ub953_v4l2_notifier_register(struct ub953_data *priv)

	priv->notifier.ops = &ub953_notify_ops;

	ret = v4l2_async_subdev_nf_register(&priv->sd, &priv->notifier);
	ret = v4l2_async_nf_register(&priv->notifier);
	if (ret) {
		dev_err(dev, "Failed to register subdev_notifier");
		v4l2_async_nf_cleanup(&priv->notifier);
+2 −2
Original line number Diff line number Diff line
@@ -3599,7 +3599,7 @@ static int ub960_v4l2_notifier_register(struct ub960_data *priv)
	unsigned int i;
	int ret;

	v4l2_async_nf_init(&priv->notifier);
	v4l2_async_subdev_nf_init(&priv->notifier, &priv->sd);

	for (i = 0; i < priv->hw_data->num_rxports; i++) {
		struct ub960_rxport *rxport = priv->rxports[i];
@@ -3623,7 +3623,7 @@ static int ub960_v4l2_notifier_register(struct ub960_data *priv)

	priv->notifier.ops = &ub960_notify_ops;

	ret = v4l2_async_subdev_nf_register(&priv->sd, &priv->notifier);
	ret = v4l2_async_nf_register(&priv->notifier);
	if (ret) {
		dev_err(dev, "Failed to register subdev_notifier");
		v4l2_async_nf_cleanup(&priv->notifier);
+2 −2
Original line number Diff line number Diff line
@@ -746,7 +746,7 @@ static int max9286_v4l2_notifier_register(struct max9286_priv *priv)
	if (!priv->nsources)
		return 0;

	v4l2_async_nf_init(&priv->notifier);
	v4l2_async_subdev_nf_init(&priv->notifier, &priv->sd);

	for_each_source(priv, source) {
		unsigned int i = to_index(priv, source);
@@ -766,7 +766,7 @@ static int max9286_v4l2_notifier_register(struct max9286_priv *priv)

	priv->notifier.ops = &max9286_notify_ops;

	ret = v4l2_async_subdev_nf_register(&priv->sd, &priv->notifier);
	ret = v4l2_async_nf_register(&priv->notifier);
	if (ret) {
		dev_err(dev, "Failed to register subdev_notifier");
		v4l2_async_nf_cleanup(&priv->notifier);
+2 −2
Original line number Diff line number Diff line
@@ -911,7 +911,7 @@ static int mipid02_parse_rx_ep(struct mipid02_dev *bridge)
	bridge->rx = ep;

	/* register async notifier so we get noticed when sensor is connected */
	v4l2_async_nf_init(&bridge->notifier);
	v4l2_async_subdev_nf_init(&bridge->notifier, &bridge->sd);
	asd = v4l2_async_nf_add_fwnode_remote(&bridge->notifier,
					      of_fwnode_handle(ep_node),
					      struct v4l2_async_connection);
@@ -924,7 +924,7 @@ static int mipid02_parse_rx_ep(struct mipid02_dev *bridge)
	}
	bridge->notifier.ops = &mipid02_notifier_ops;

	ret = v4l2_async_subdev_nf_register(&bridge->sd, &bridge->notifier);
	ret = v4l2_async_nf_register(&bridge->notifier);
	if (ret)
		v4l2_async_nf_cleanup(&bridge->notifier);

Loading