*/
 void vpfe_ipipe_unregister_entities(struct vpfe_ipipe_device *vpfe_ipipe)
 {
-       /* cleanup entity */
-       media_entity_cleanup(&vpfe_ipipe->subdev.entity);
        /* unregister subdev */
        v4l2_device_unregister_subdev(&vpfe_ipipe->subdev);
+       /* cleanup entity */
+       media_entity_cleanup(&vpfe_ipipe->subdev.entity);
 }
 
 /*
 
        /* unregister video device */
        vpfe_video_unregister(&ipipeif->video_in);
 
-       /* cleanup entity */
-       media_entity_cleanup(&ipipeif->subdev.entity);
        /* unregister subdev */
        v4l2_device_unregister_subdev(&ipipeif->subdev);
+       /* cleanup entity */
+       media_entity_cleanup(&ipipeif->subdev.entity);
 }
 
 int
 
 void vpfe_isif_unregister_entities(struct vpfe_isif_device *isif)
 {
        vpfe_video_unregister(&isif->video_out);
-       /* cleanup entity */
-       media_entity_cleanup(&isif->subdev.entity);
        /* unregister subdev */
        v4l2_device_unregister_subdev(&isif->subdev);
+       /* cleanup entity */
+       media_entity_cleanup(&isif->subdev.entity);
 }
 
 static void isif_restore_defaults(struct vpfe_isif_device *isif)
 
        vpfe_video_unregister(&vpfe_rsz->resizer_a.video_out);
        vpfe_video_unregister(&vpfe_rsz->resizer_b.video_out);
 
-       /* cleanup entity */
-       media_entity_cleanup(&vpfe_rsz->crop_resizer.subdev.entity);
-       media_entity_cleanup(&vpfe_rsz->resizer_a.subdev.entity);
-       media_entity_cleanup(&vpfe_rsz->resizer_b.subdev.entity);
        /* unregister subdev */
        v4l2_device_unregister_subdev(&vpfe_rsz->crop_resizer.subdev);
        v4l2_device_unregister_subdev(&vpfe_rsz->resizer_a.subdev);
        v4l2_device_unregister_subdev(&vpfe_rsz->resizer_b.subdev);
+       /* cleanup entity */
+       media_entity_cleanup(&vpfe_rsz->crop_resizer.subdev.entity);
+       media_entity_cleanup(&vpfe_rsz->resizer_a.subdev.entity);
+       media_entity_cleanup(&vpfe_rsz->resizer_b.subdev.entity);
 }
 
 /*
        vpfe_video_unregister(&resizer->resizer_b.video_out);
 out_video_out2_register:
        vpfe_video_unregister(&resizer->resizer_a.video_out);
-       media_entity_cleanup(&resizer->crop_resizer.subdev.entity);
-       media_entity_cleanup(&resizer->resizer_a.subdev.entity);
-       media_entity_cleanup(&resizer->resizer_b.subdev.entity);
        v4l2_device_unregister_subdev(&resizer->crop_resizer.subdev);
        v4l2_device_unregister_subdev(&resizer->resizer_a.subdev);
        v4l2_device_unregister_subdev(&resizer->resizer_b.subdev);
+       media_entity_cleanup(&resizer->crop_resizer.subdev.entity);
+       media_entity_cleanup(&resizer->resizer_a.subdev.entity);
+       media_entity_cleanup(&resizer->resizer_b.subdev.entity);
        return ret;
 }
 
 
 void vpfe_video_unregister(struct vpfe_video_device *video)
 {
        if (video_is_registered(&video->video_dev)) {
-               media_entity_cleanup(&video->video_dev.entity);
                video_unregister_device(&video->video_dev);
+               media_entity_cleanup(&video->video_dev.entity);
        }
 }