classmate-laptop: little optimization for cmpc_rfkill_block
[pandora-kernel.git] / drivers / platform / x86 / classmate-laptop.c
index d2b7720..3dabd00 100644 (file)
@@ -522,18 +522,20 @@ static int cmpc_rfkill_block(void *data, bool blocked)
        acpi_status status;
        acpi_handle handle;
        unsigned long long state;
+       bool is_blocked;
 
        handle = data;
        status = cmpc_get_rfkill_wlan(handle, &state);
        if (ACPI_FAILURE(status))
                return -ENODEV;
-       if (blocked)
-               state &= ~1;
-       else
-               state |= 1;
-       status = cmpc_set_rfkill_wlan(handle, state);
-       if (ACPI_FAILURE(status))
-               return -ENODEV;
+       /* Check if we really need to call cmpc_set_rfkill_wlan */
+       is_blocked = state & 1 ? false : true;
+       if (is_blocked != blocked) {
+               state = blocked ? 0 : 1;
+               status = cmpc_set_rfkill_wlan(handle, state);
+               if (ACPI_FAILURE(status))
+                       return -ENODEV;
+       }
        return 0;
 }