|
@@ -522,3 +522,46 @@ acpi_status acpi_execute_simple_method(acpi_handle handle, char *method,
|
|
|
return acpi_evaluate_object(handle, method, &arg_list, NULL);
|
|
|
}
|
|
|
EXPORT_SYMBOL(acpi_execute_simple_method);
|
|
|
+
|
|
|
+/**
|
|
|
+ * acpi_evaluate_ej0: Evaluate _EJ0 method for hotplug operations
|
|
|
+ * @handle: ACPI device handle
|
|
|
+ *
|
|
|
+ * Evaluate device's _EJ0 method for hotplug operations.
|
|
|
+ */
|
|
|
+acpi_status acpi_evaluate_ej0(acpi_handle handle)
|
|
|
+{
|
|
|
+ acpi_status status;
|
|
|
+
|
|
|
+ status = acpi_execute_simple_method(handle, "_EJ0", 1);
|
|
|
+ if (status == AE_NOT_FOUND)
|
|
|
+ acpi_handle_warn(handle, "No _EJ0 support for device\n");
|
|
|
+ else if (ACPI_FAILURE(status))
|
|
|
+ acpi_handle_warn(handle, "Eject failed (0x%x)\n", status);
|
|
|
+
|
|
|
+ return status;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * acpi_evaluate_lck: Evaluate _LCK method to lock/unlock device
|
|
|
+ * @handle: ACPI device handle
|
|
|
+ * @lock: lock device if non-zero, otherwise unlock device
|
|
|
+ *
|
|
|
+ * Evaluate device's _LCK method if present to lock/unlock device
|
|
|
+ */
|
|
|
+acpi_status acpi_evaluate_lck(acpi_handle handle, int lock)
|
|
|
+{
|
|
|
+ acpi_status status;
|
|
|
+
|
|
|
+ status = acpi_execute_simple_method(handle, "_LCK", !!lock);
|
|
|
+ if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) {
|
|
|
+ if (lock)
|
|
|
+ acpi_handle_warn(handle,
|
|
|
+ "Locking device failed (0x%x)\n", status);
|
|
|
+ else
|
|
|
+ acpi_handle_warn(handle,
|
|
|
+ "Unlocking device failed (0x%x)\n", status);
|
|
|
+ }
|
|
|
+
|
|
|
+ return status;
|
|
|
+}
|