sony-laptop: always try to unblock rfkill on load
authorMattia Dongili <malattia@linux.it>
Sun, 12 Apr 2009 11:26:31 +0000 (11:26 +0000)
committerLen Brown <len.brown@intel.com>
Fri, 24 Apr 2009 03:57:34 +0000 (23:57 -0400)
This fixes an inconsistent behaviour when loading the driver with the
switch on or off. In the former case you would also need to soft unblock
the switch via the sysfs file entries to really disable rfkill, in the
latter you wouldn't.

Signed-off-by: Mattia Dongili <malattia@linux.it>
Cc: Matthias Welwarsky <matze@welwarsky.de>
Acked-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/platform/x86/sony-laptop.c

index d93cff656c9984a487980652f77dc252fcb52137..552958545f94fc03e83975012f5196e16794c6fa 100644 (file)
@@ -1103,8 +1103,11 @@ static int sony_nc_setup_wifi_rfkill(struct acpi_device *device)
        err = rfkill_register(sony_wifi_rfkill);
        if (err)
                rfkill_free(sony_wifi_rfkill);
-       else
+       else {
                sony_rfkill_devices[SONY_WIFI] = sony_wifi_rfkill;
+               sony_nc_rfkill_set(sony_wifi_rfkill->data,
+                               RFKILL_STATE_UNBLOCKED);
+       }
        return err;
 }
 
@@ -1125,8 +1128,11 @@ static int sony_nc_setup_bluetooth_rfkill(struct acpi_device *device)
        err = rfkill_register(sony_bluetooth_rfkill);
        if (err)
                rfkill_free(sony_bluetooth_rfkill);
-       else
+       else {
                sony_rfkill_devices[SONY_BLUETOOTH] = sony_bluetooth_rfkill;
+               sony_nc_rfkill_set(sony_bluetooth_rfkill->data,
+                               RFKILL_STATE_UNBLOCKED);
+       }
        return err;
 }
 
@@ -1146,8 +1152,11 @@ static int sony_nc_setup_wwan_rfkill(struct acpi_device *device)
        err = rfkill_register(sony_wwan_rfkill);
        if (err)
                rfkill_free(sony_wwan_rfkill);
-       else
+       else {
                sony_rfkill_devices[SONY_WWAN] = sony_wwan_rfkill;
+               sony_nc_rfkill_set(sony_wwan_rfkill->data,
+                               RFKILL_STATE_UNBLOCKED);
+       }
        return err;
 }
 
@@ -1167,8 +1176,11 @@ static int sony_nc_setup_wimax_rfkill(struct acpi_device *device)
        err = rfkill_register(sony_wimax_rfkill);
        if (err)
                rfkill_free(sony_wimax_rfkill);
-       else
+       else {
                sony_rfkill_devices[SONY_WIMAX] = sony_wimax_rfkill;
+               sony_nc_rfkill_set(sony_wimax_rfkill->data,
+                               RFKILL_STATE_UNBLOCKED);
+       }
        return err;
 }