diff options
author | Lee, Chun-Yi <jlee@novell.com> | 2010-05-14 18:18:54 -0400 |
---|---|---|
committer | Matthew Garrett <mjg@redhat.com> | 2010-05-20 09:46:12 -0400 |
commit | 7ab52521f2d850e922f33e5586a47e6c83ec6f11 (patch) | |
tree | dc7d1d34b534aa7fa92685a4b4c5849916d1228e /drivers/platform | |
parent | 1ac34072bda53e889ac1c5a73ea59f42a769485a (diff) |
Clean up all objects used by scm model when driver initial fail or exit
Clean up i8042 filter, rfkill and cancel delayed work when msi-laptop driver initial fail or exit on MSI scm model.
Signed-off-by: Lee, Chun-Yi <jlee@novell.com>
Diffstat (limited to 'drivers/platform')
-rw-r--r-- | drivers/platform/x86/msi-laptop.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/platform/x86/msi-laptop.c b/drivers/platform/x86/msi-laptop.c index 5822d0ac68d2..704b5faac599 100644 --- a/drivers/platform/x86/msi-laptop.c +++ b/drivers/platform/x86/msi-laptop.c | |||
@@ -859,6 +859,11 @@ static int __init msi_init(void) | |||
859 | 859 | ||
860 | fail_platform_device2: | 860 | fail_platform_device2: |
861 | 861 | ||
862 | if (load_scm_model) { | ||
863 | i8042_remove_filter(msi_laptop_i8042_filter); | ||
864 | cancel_delayed_work_sync(&msi_rfkill_work); | ||
865 | rfkill_cleanup(); | ||
866 | } | ||
862 | platform_device_del(msipf_device); | 867 | platform_device_del(msipf_device); |
863 | 868 | ||
864 | fail_platform_device1: | 869 | fail_platform_device1: |
@@ -878,6 +883,11 @@ fail_backlight: | |||
878 | 883 | ||
879 | static void __exit msi_cleanup(void) | 884 | static void __exit msi_cleanup(void) |
880 | { | 885 | { |
886 | if (load_scm_model) { | ||
887 | i8042_remove_filter(msi_laptop_i8042_filter); | ||
888 | cancel_delayed_work_sync(&msi_rfkill_work); | ||
889 | rfkill_cleanup(); | ||
890 | } | ||
881 | 891 | ||
882 | sysfs_remove_group(&msipf_device->dev.kobj, &msipf_attribute_group); | 892 | sysfs_remove_group(&msipf_device->dev.kobj, &msipf_attribute_group); |
883 | if (!old_ec_model && threeg_exists) | 893 | if (!old_ec_model && threeg_exists) |
@@ -886,9 +896,6 @@ static void __exit msi_cleanup(void) | |||
886 | platform_driver_unregister(&msipf_driver); | 896 | platform_driver_unregister(&msipf_driver); |
887 | backlight_device_unregister(msibl_device); | 897 | backlight_device_unregister(msibl_device); |
888 | 898 | ||
889 | i8042_remove_filter(msi_laptop_i8042_filter); | ||
890 | rfkill_cleanup(); | ||
891 | |||
892 | /* Enable automatic brightness control again */ | 899 | /* Enable automatic brightness control again */ |
893 | if (auto_brightness != 2) | 900 | if (auto_brightness != 2) |
894 | set_auto_brightness(1); | 901 | set_auto_brightness(1); |