diff options
Diffstat (limited to 'drivers/platform/x86/wmi.c')
| -rw-r--r-- | drivers/platform/x86/wmi.c | 38 | 
1 files changed, 12 insertions, 26 deletions
diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c index 601ea951224..43d13295e63 100644 --- a/drivers/platform/x86/wmi.c +++ b/drivers/platform/x86/wmi.c @@ -37,8 +37,6 @@  #include <linux/acpi.h>  #include <linux/slab.h>  #include <linux/module.h> -#include <acpi/acpi_bus.h> -#include <acpi/acpi_drivers.h>  ACPI_MODULE_NAME("wmi");  MODULE_AUTHOR("Carlos Corbacho"); @@ -252,8 +250,6 @@ static acpi_status wmi_method_enable(struct wmi_block *wblock, int enable)  {  	struct guid_block *block = NULL;  	char method[5]; -	struct acpi_object_list input; -	union acpi_object params[1];  	acpi_status status;  	acpi_handle handle; @@ -263,13 +259,9 @@ static acpi_status wmi_method_enable(struct wmi_block *wblock, int enable)  	if (!block)  		return AE_NOT_EXIST; -	input.count = 1; -	input.pointer = params; -	params[0].type = ACPI_TYPE_INTEGER; -	params[0].integer.value = enable;  	snprintf(method, 5, "WE%02X", block->notify_id); -	status = acpi_evaluate_object(handle, method, &input, NULL); +	status = acpi_execute_simple_method(handle, method, enable);  	if (status != AE_OK && status != AE_NOT_FOUND)  		return status; @@ -353,10 +345,10 @@ struct acpi_buffer *out)  {  	struct guid_block *block = NULL;  	struct wmi_block *wblock = NULL; -	acpi_handle handle, wc_handle; +	acpi_handle handle;  	acpi_status status, wc_status = AE_ERROR; -	struct acpi_object_list input, wc_input; -	union acpi_object wc_params[1], wq_params[1]; +	struct acpi_object_list input; +	union acpi_object wq_params[1];  	char method[5];  	char wc_method[5] = "WC"; @@ -386,11 +378,6 @@ struct acpi_buffer *out)  	 * enable collection.  	 */  	if (block->flags & ACPI_WMI_EXPENSIVE) { -		wc_input.count = 1; -		wc_input.pointer = wc_params; -		wc_params[0].type = ACPI_TYPE_INTEGER; -		wc_params[0].integer.value = 1; -  		strncat(wc_method, block->object_id, 2);  		/* @@ -398,10 +385,9 @@ struct acpi_buffer *out)  		 * expensive, but have no corresponding WCxx method. So we  		 * should not fail if this happens.  		 */ -		wc_status = acpi_get_handle(handle, wc_method, &wc_handle); -		if (ACPI_SUCCESS(wc_status)) -			wc_status = acpi_evaluate_object(handle, wc_method, -				&wc_input, NULL); +		if (acpi_has_method(handle, wc_method)) +			wc_status = acpi_execute_simple_method(handle, +								wc_method, 1);  	}  	strcpy(method, "WQ"); @@ -414,9 +400,7 @@ struct acpi_buffer *out)  	 * the WQxx method failed - we should disable collection anyway.  	 */  	if ((block->flags & ACPI_WMI_EXPENSIVE) && ACPI_SUCCESS(wc_status)) { -		wc_params[0].integer.value = 0; -		status = acpi_evaluate_object(handle, -		wc_method, &wc_input, NULL); +		status = acpi_execute_simple_method(handle, wc_method, 0);  	}  	return status; @@ -686,8 +670,10 @@ static ssize_t modalias_show(struct device *dev, struct device_attribute *attr,  	struct wmi_block *wblock;  	wblock = dev_get_drvdata(dev); -	if (!wblock) -		return -ENOMEM; +	if (!wblock) { +		strcat(buf, "\n"); +		return strlen(buf); +	}  	wmi_gtoa(wblock->gblock.guid, guid_string);  | 
