dell-wmi: do not keep driver loaded on unsupported boxes
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Fri, 18 Dec 2009 06:19:42 +0000 (22:19 -0800)
committerLen Brown <len.brown@intel.com>
Thu, 24 Dec 2009 05:44:46 +0000 (00:44 -0500)
There is no point in having the driver loaded in memory if we fail
to locate particular WMI GUID.

Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Acked-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/platform/x86/dell-wmi.c

index 6561dfc028e56211d4dcc3cb66c0fb2cd4ccdf7e..916ccb2b316c5b87c92d576a5bb6906f49891082 100644 (file)
@@ -325,37 +325,34 @@ static int __init dell_wmi_init(void)
        int err;
 
        if (wmi_has_guid(DELL_EVENT_GUID)) {
+               printk(KERN_WARNING "dell-wmi: No known WMI GUID found\n");
+               return -ENODEV;
+       }
 
-               dmi_walk(find_hk_type, NULL);
-
-               err = dell_wmi_input_setup();
-
-               if (err)
-                       return err;
-
-               err = wmi_install_notify_handler(DELL_EVENT_GUID,
-                                                dell_wmi_notify, NULL);
-               if (err) {
-                       input_unregister_device(dell_wmi_input_dev);
-                       printk(KERN_ERR "dell-wmi: Unable to register"
-                              " notify handler - %d\n", err);
-                       return err;
-               }
+       dmi_walk(find_hk_type, NULL);
+       acpi_video = acpi_video_backlight_support();
 
-               acpi_video = acpi_video_backlight_support();
+       err = dell_wmi_input_setup();
+       if (err)
+               return err;
 
-       } else
-               printk(KERN_WARNING "dell-wmi: No known WMI GUID found\n");
+       err = wmi_install_notify_handler(DELL_EVENT_GUID,
+                                        dell_wmi_notify, NULL);
+       if (err) {
+               input_unregister_device(dell_wmi_input_dev);
+               printk(KERN_ERR
+                       "dell-wmi: Unable to register notify handler - %d\n",
+                       err);
+               return err;
+       }
 
        return 0;
 }
 
 static void __exit dell_wmi_exit(void)
 {
-       if (wmi_has_guid(DELL_EVENT_GUID)) {
-               wmi_remove_notify_handler(DELL_EVENT_GUID);
-               input_unregister_device(dell_wmi_input_dev);
-       }
+       wmi_remove_notify_handler(DELL_EVENT_GUID);
+       input_unregister_device(dell_wmi_input_dev);
 }
 
 module_init(dell_wmi_init);