viafb: fix proc entry removal
[safe/jmp/linux-2.6] / drivers / video / via / viafbdev.c
index e94f913..51e9106 100644 (file)
@@ -1702,13 +1702,16 @@ static void viafb_init_proc(struct proc_dir_entry **viafb_entry)
 }
 static void viafb_remove_proc(struct proc_dir_entry *viafb_entry)
 {
-       /* no problem if it was not registered */
+       struct chip_information *chip_info = &viaparinfo->shared->chip_info;
+
        remove_proc_entry("dvp0", viafb_entry);/* parent dir */
        remove_proc_entry("dvp1", viafb_entry);
        remove_proc_entry("dfph", viafb_entry);
        remove_proc_entry("dfpl", viafb_entry);
-       remove_proc_entry("vt1636", viafb_entry);
-       remove_proc_entry("vt1625", viafb_entry);
+       if (chip_info->lvds_chip_info.lvds_chip_name == VT1636_LVDS
+               || chip_info->lvds_chip_info2.lvds_chip_name == VT1636_LVDS)
+               remove_proc_entry("vt1636", viafb_entry);
+
        remove_proc_entry("viafb", NULL);
 }
 
@@ -1967,12 +1970,10 @@ void __devexit via_fb_pci_remove(struct pci_dev *pdev)
        unregister_framebuffer(viafbinfo);
        if (viafb_dual_fb)
                unregister_framebuffer(viafbinfo1);
-
+       viafb_remove_proc(viaparinfo->shared->proc_entry);
        framebuffer_release(viafbinfo);
        if (viafb_dual_fb)
                framebuffer_release(viafbinfo1);
-
-       viafb_remove_proc(viaparinfo->shared->proc_entry);
 }
 
 #ifndef MODULE