media: vim2m: initialize the media device earlier
authorHans Verkuil <hverkuil-cisco@xs4all.nl>
Tue, 2 Feb 2021 14:49:23 +0000 (15:49 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 6 Jun 2022 06:33:49 +0000 (08:33 +0200)
commit 1a28dce222a6ece725689ad58c0cf4a1b48894f4 upstream.

Before the video device node is registered, the v4l2_dev.mdev
pointer must be set in order to correctly associate the video
device with the media device. Move the initialization of the
media device up.

Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Signed-off-by: Mark-PK Tsai <mark-pk.tsai@mediatek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/media/platform/vim2m.c

index 02f5bc82ba46b7ad6cecd767bb00242afe7683f5..6fba00e03c67b9daeb52f963b7e0587d3f45bd3f 100644 (file)
@@ -1347,12 +1347,6 @@ static int vim2m_probe(struct platform_device *pdev)
                goto error_dev;
        }
 
-       ret = video_register_device(vfd, VFL_TYPE_GRABBER, 0);
-       if (ret) {
-               v4l2_err(&dev->v4l2_dev, "Failed to register video device\n");
-               goto error_m2m;
-       }
-
 #ifdef CONFIG_MEDIA_CONTROLLER
        dev->mdev.dev = &pdev->dev;
        strscpy(dev->mdev.model, "vim2m", sizeof(dev->mdev.model));
@@ -1361,7 +1355,15 @@ static int vim2m_probe(struct platform_device *pdev)
        media_device_init(&dev->mdev);
        dev->mdev.ops = &m2m_media_ops;
        dev->v4l2_dev.mdev = &dev->mdev;
+#endif
 
+       ret = video_register_device(vfd, VFL_TYPE_GRABBER, 0);
+       if (ret) {
+               v4l2_err(&dev->v4l2_dev, "Failed to register video device\n");
+               goto error_m2m;
+       }
+
+#ifdef CONFIG_MEDIA_CONTROLLER
        ret = v4l2_m2m_register_media_controller(dev->m2m_dev, vfd,
                                                 MEDIA_ENT_F_PROC_VIDEO_SCALER);
        if (ret) {