void rkisp1_sd_adjust_crop(struct v4l2_rect *crop,
                           const struct v4l2_mbus_framefmt *bounds);
 
-int rkisp1_isp_register(struct rkisp1_device *rkisp1,
-                       struct v4l2_device *v4l2_dev);
+int rkisp1_isp_register(struct rkisp1_device *rkisp1);
 void rkisp1_isp_unregister(struct rkisp1_device *rkisp1);
 
 const struct rkisp1_isp_mbus_info *rkisp1_isp_mbus_info_get(u32 mbus_code);
 int rkisp1_resizer_devs_register(struct rkisp1_device *rkisp1);
 void rkisp1_resizer_devs_unregister(struct rkisp1_device *rkisp1);
 
-int rkisp1_stats_register(struct rkisp1_stats *stats,
-                         struct v4l2_device *v4l2_dev,
-                         struct rkisp1_device *rkisp1);
-void rkisp1_stats_unregister(struct rkisp1_stats *stats);
+int rkisp1_stats_register(struct rkisp1_device *rkisp1);
+void rkisp1_stats_unregister(struct rkisp1_device *rkisp1);
 
 void rkisp1_params_configure(struct rkisp1_params *params,
                             enum rkisp1_fmt_raw_pat_type bayer_pat,
                             enum v4l2_quantization quantization);
 void rkisp1_params_disable(struct rkisp1_params *params);
-int rkisp1_params_register(struct rkisp1_params *params,
-                          struct v4l2_device *v4l2_dev,
-                          struct rkisp1_device *rkisp1);
-void rkisp1_params_unregister(struct rkisp1_params *params);
+int rkisp1_params_register(struct rkisp1_device *rkisp1);
+void rkisp1_params_unregister(struct rkisp1_device *rkisp1);
 
 void rkisp1_params_isr_handler(struct rkisp1_device *rkisp1, u32 isp_mis);
 
 
 {
        int ret;
 
-       ret = rkisp1_isp_register(rkisp1, &rkisp1->v4l2_dev);
+       ret = rkisp1_isp_register(rkisp1);
        if (ret)
                return ret;
 
        if (ret)
                goto err_unreg_resizer_devs;
 
-       ret = rkisp1_stats_register(&rkisp1->stats, &rkisp1->v4l2_dev, rkisp1);
+       ret = rkisp1_stats_register(rkisp1);
        if (ret)
                goto err_unreg_capture_devs;
 
-       ret = rkisp1_params_register(&rkisp1->params,
-                                    &rkisp1->v4l2_dev, rkisp1);
+       ret = rkisp1_params_register(rkisp1);
        if (ret)
                goto err_unreg_stats;
 
 
        return 0;
 err_unreg_params:
-       rkisp1_params_unregister(&rkisp1->params);
+       rkisp1_params_unregister(rkisp1);
 err_unreg_stats:
-       rkisp1_stats_unregister(&rkisp1->stats);
+       rkisp1_stats_unregister(rkisp1);
 err_unreg_capture_devs:
        rkisp1_capture_devs_unregister(rkisp1);
 err_unreg_resizer_devs:
        v4l2_async_notifier_unregister(&rkisp1->notifier);
        v4l2_async_notifier_cleanup(&rkisp1->notifier);
 
-       rkisp1_params_unregister(&rkisp1->params);
-       rkisp1_stats_unregister(&rkisp1->stats);
+       rkisp1_params_unregister(rkisp1);
+       rkisp1_stats_unregister(rkisp1);
        rkisp1_capture_devs_unregister(rkisp1);
        rkisp1_resizer_devs_unregister(rkisp1);
        rkisp1_isp_unregister(rkisp1);
 
        .pad = &rkisp1_isp_pad_ops,
 };
 
-int rkisp1_isp_register(struct rkisp1_device *rkisp1,
-                       struct v4l2_device *v4l2_dev)
+int rkisp1_isp_register(struct rkisp1_device *rkisp1)
 {
        struct rkisp1_isp *isp = &rkisp1->isp;
        struct media_pad *pads = isp->pads;
        if (ret)
                return ret;
 
-       ret = v4l2_device_register_subdev(v4l2_dev, sd);
+       ret = v4l2_device_register_subdev(&rkisp1->v4l2_dev, sd);
        if (ret) {
                dev_err(rkisp1->dev, "Failed to register isp subdev\n");
                goto err_cleanup_media_entity;
 
                sizeof(struct rkisp1_params_cfg);
 }
 
-int rkisp1_params_register(struct rkisp1_params *params,
-                          struct v4l2_device *v4l2_dev,
-                          struct rkisp1_device *rkisp1)
+int rkisp1_params_register(struct rkisp1_device *rkisp1)
 {
+       struct rkisp1_params *params = &rkisp1->params;
        struct rkisp1_vdev_node *node = ¶ms->vnode;
        struct video_device *vdev = &node->vdev;
        int ret;
         * to protect all fops and v4l2 ioctls.
         */
        vdev->lock = &node->vlock;
-       vdev->v4l2_dev = v4l2_dev;
+       vdev->v4l2_dev = &rkisp1->v4l2_dev;
        vdev->queue = &node->buf_queue;
        vdev->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_META_OUTPUT;
        vdev->vfl_dir = VFL_DIR_TX;
        return ret;
 }
 
-void rkisp1_params_unregister(struct rkisp1_params *params)
+void rkisp1_params_unregister(struct rkisp1_device *rkisp1)
 {
+       struct rkisp1_params *params = &rkisp1->params;
        struct rkisp1_vdev_node *node = ¶ms->vnode;
        struct video_device *vdev = &node->vdev;
 
 
                sizeof(struct rkisp1_stat_buffer);
 }
 
-int rkisp1_stats_register(struct rkisp1_stats *stats,
-                         struct v4l2_device *v4l2_dev,
-                         struct rkisp1_device *rkisp1)
+int rkisp1_stats_register(struct rkisp1_device *rkisp1)
 {
+       struct rkisp1_stats *stats = &rkisp1->stats;
        struct rkisp1_vdev_node *node = &stats->vnode;
        struct video_device *vdev = &node->vdev;
        int ret;
        vdev->fops = &rkisp1_stats_fops;
        vdev->release = video_device_release_empty;
        vdev->lock = &node->vlock;
-       vdev->v4l2_dev = v4l2_dev;
+       vdev->v4l2_dev = &rkisp1->v4l2_dev;
        vdev->queue = &node->buf_queue;
        vdev->device_caps = V4L2_CAP_META_CAPTURE | V4L2_CAP_STREAMING;
        vdev->vfl_dir =  VFL_DIR_RX;
        return ret;
 }
 
-void rkisp1_stats_unregister(struct rkisp1_stats *stats)
+void rkisp1_stats_unregister(struct rkisp1_device *rkisp1)
 {
+       struct rkisp1_stats *stats = &rkisp1->stats;
        struct rkisp1_vdev_node *node = &stats->vnode;
        struct video_device *vdev = &node->vdev;