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@xxxxxxxxxxx> 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@xxxxxxxxx> 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;