rk29_camera_deactivate(pcdev);
/* ddl@rock-chips.com: Call videobuf_mmap_free here for free the struct video_buffer which malloc in videobuf_alloc */
+ #if 0
if (pcdev->vb_vidq_ptr) {
videobuf_mmap_free(pcdev->vb_vidq_ptr);
pcdev->vb_vidq_ptr = NULL;
}
+ #else
+ pcdev->vb_vidq_ptr = NULL;
+ #endif
if (pcdev->camera_work) {
kfree(pcdev->camera_work);
exit_free_irq:
free_irq(pcdev->irq, pcdev);
+ if (pcdev->camera_wq) {
+ destroy_workqueue(pcdev->camera_wq);
+ pcdev->camera_wq = NULL;
+ }
exit_reqirq:
iounmap(pcdev->base);
exit_ioremap:
free_irq(pcdev->irq, pcdev);
+ if (pcdev->camera_wq) {
+ destroy_workqueue(pcdev->camera_wq);
+ pcdev->camera_wq = NULL;
+ }
+
soc_camera_host_unregister(&pcdev->soc_host);
res = pcdev->res;