diff mbox series

[v4,11/45] media: sun6i-csi: Register the media device after creation

Message ID 20220415152811.636419-12-paul.kocialkowski@bootlin.com (mailing list archive)
State New, archived
Headers show
Series Allwinner A31/A83T MIPI CSI-2 and A31 ISP / CSI Rework | expand

Commit Message

Paul Kocialkowski April 15, 2022, 3:27 p.m. UTC
There is no particular need to register the media device in the
subdev notify complete callback.

Register it in the v4l2 code instead where it's more in-context.

Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
---
 drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

Comments

Jernej Škrabec April 27, 2022, 6:40 p.m. UTC | #1
Dne petek, 15. april 2022 ob 17:27:37 CEST je Paul Kocialkowski napisal(a):
> There is no particular need to register the media device in the
> subdev notify complete callback.
> 
> Register it in the v4l2 code instead where it's more in-context.
> 
> Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>

Ideally, error path could use new label, but since media_device_unregister() 
check for if it was registered, this works too.

Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>

Best regards,
Jernej

> ---
>  drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c
> b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c index
> 198275e09865..e59ee3e3f372 100644
> --- a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c
> +++ b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c
> @@ -638,7 +638,7 @@ static int sun6i_subdev_notify_complete(struct
> v4l2_async_notifier *notifier) if (ret < 0)
>  		return ret;
> 
> -	return media_device_register(&v4l2->media_dev);
> +	return 0;
>  }
> 
>  static const struct v4l2_async_notifier_operations sun6i_csi_async_ops = {
> @@ -687,6 +687,12 @@ static int sun6i_csi_v4l2_setup(struct sun6i_csi_device
> *csi_dev)
> 
>  	media_device_init(media_dev);
> 
> +	ret = media_device_register(media_dev);
> +	if (ret) {
> +		dev_err(dev, "failed to register media device: %d\n", 
ret);
> +		goto error_media;
> +	}
> +
>  	/* V4L2 Control Handler */
> 
>  	ret = v4l2_ctrl_handler_init(&v4l2->ctrl_handler, 0);
> @@ -746,6 +752,7 @@ static int sun6i_csi_v4l2_setup(struct sun6i_csi_device
> *csi_dev) v4l2_ctrl_handler_free(&v4l2->ctrl_handler);
> 
>  error_media:
> +	media_device_unregister(media_dev);
>  	media_device_cleanup(media_dev);
> 
>  	return ret;
diff mbox series

Patch

diff --git a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c
index 198275e09865..e59ee3e3f372 100644
--- a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c
+++ b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c
@@ -638,7 +638,7 @@  static int sun6i_subdev_notify_complete(struct v4l2_async_notifier *notifier)
 	if (ret < 0)
 		return ret;
 
-	return media_device_register(&v4l2->media_dev);
+	return 0;
 }
 
 static const struct v4l2_async_notifier_operations sun6i_csi_async_ops = {
@@ -687,6 +687,12 @@  static int sun6i_csi_v4l2_setup(struct sun6i_csi_device *csi_dev)
 
 	media_device_init(media_dev);
 
+	ret = media_device_register(media_dev);
+	if (ret) {
+		dev_err(dev, "failed to register media device: %d\n", ret);
+		goto error_media;
+	}
+
 	/* V4L2 Control Handler */
 
 	ret = v4l2_ctrl_handler_init(&v4l2->ctrl_handler, 0);
@@ -746,6 +752,7 @@  static int sun6i_csi_v4l2_setup(struct sun6i_csi_device *csi_dev)
 	v4l2_ctrl_handler_free(&v4l2->ctrl_handler);
 
 error_media:
+	media_device_unregister(media_dev);
 	media_device_cleanup(media_dev);
 
 	return ret;