{
        int ret;
 
-       dev_set_drvdata(csi->dev, csi);
-
        strscpy(csi->mdev.model, "imx-media", sizeof(csi->mdev.model));
        csi->mdev.ops = &imx7_csi_media_ops;
        csi->mdev.dev = csi->dev;
                return -ENOMEM;
 
        csi->dev = dev;
-       platform_set_drvdata(pdev, &csi->sd);
+       platform_set_drvdata(pdev, csi);
 
        spin_lock_init(&csi->irqlock);
        mutex_init(&csi->lock);
 
 static int imx7_csi_remove(struct platform_device *pdev)
 {
-       struct v4l2_subdev *sd = platform_get_drvdata(pdev);
-       struct imx7_csi *csi = v4l2_get_subdevdata(sd);
+       struct imx7_csi *csi = platform_get_drvdata(pdev);
 
        imx7_csi_media_cleanup(csi);
 
        v4l2_async_nf_unregister(&csi->notifier);
        v4l2_async_nf_cleanup(&csi->notifier);
-       v4l2_async_unregister_subdev(sd);
+       v4l2_async_unregister_subdev(&csi->sd);
 
        mutex_destroy(&csi->lock);