toshiba_bluetooth: Clean up *_add function and disable BT device at removal
authorAzael Avalos <coproscefalo@gmail.com>
Thu, 26 Mar 2015 20:56:06 +0000 (14:56 -0600)
committerDarren Hart <dvhart@linux.intel.com>
Thu, 26 Mar 2015 21:15:07 +0000 (14:15 -0700)
This patch cleans the toshiba_bluetooth_add function by using the
recently introduced function toshiba_bluetooth_present, simplifying
its code and returning appropriate error values.

Also, disables the BT device at the removal of the driver, by using
the function toshiba_bluetooth_disable.

Signed-off-by: Azael Avalos <coproscefalo@gmail.com>
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
drivers/platform/x86/toshiba_bluetooth.c

index b479a701d3a8e1b898bc1e3efc06b984c20ccb0d..b8404c7a74cfb980af19af1824a61b51112b78c3 100644 (file)
@@ -62,6 +62,11 @@ static int toshiba_bluetooth_present(acpi_handle handle)
        acpi_status result;
        u64 bt_present;
 
+       /*
+        * Some Toshiba laptops may have a fake TOS6205 device in
+        * their ACPI BIOS, so query the _STA method to see if there
+        * is really anything there.
+        */
        result = acpi_evaluate_integer(handle, "_STA", NULL, &bt_present);
        if (ACPI_FAILURE(result)) {
                pr_err("ACPI call to query Bluetooth presence failed");
@@ -150,23 +155,18 @@ static int toshiba_bt_resume(struct device *dev)
 
 static int toshiba_bt_rfkill_add(struct acpi_device *device)
 {
-       acpi_status status;
-       u64 bt_present;
-       int result = -ENODEV;
+       int result;
 
-       /*
-        * Some Toshiba laptops may have a fake TOS6205 device in
-        * their ACPI BIOS, so query the _STA method to see if there
-        * is really anything there, before trying to enable it.
-        */
-       status = acpi_evaluate_integer(device->handle, "_STA", NULL,
-                                      &bt_present);
+       result = toshiba_bluetooth_present(device->handle);
+       if (result)
+               return result;
 
-       if (!ACPI_FAILURE(status) && bt_present) {
-               pr_info("Detected Toshiba ACPI Bluetooth device - "
-                       "installing RFKill handler\n");
-               result = toshiba_bluetooth_enable(device->handle);
-       }
+       pr_info("Toshiba ACPI Bluetooth device driver\n");
+
+       /* Enable the BT device */
+       result = toshiba_bluetooth_enable(device->handle);
+       if (result)
+               return result;
 
        return result;
 }
@@ -174,7 +174,7 @@ static int toshiba_bt_rfkill_add(struct acpi_device *device)
 static int toshiba_bt_rfkill_remove(struct acpi_device *device)
 {
        /* clean up */
-       return 0;
+       return toshiba_bluetooth_disable(device->handle);
 }
 
 module_acpi_driver(toshiba_bt_rfkill_driver);