diff options
Diffstat (limited to 'drivers/platform/x86/mxm-wmi.c')
| -rw-r--r-- | drivers/platform/x86/mxm-wmi.c | 28 | 
1 files changed, 27 insertions, 1 deletions
diff --git a/drivers/platform/x86/mxm-wmi.c b/drivers/platform/x86/mxm-wmi.c index 12b6f341e72..0aea63b3729 100644 --- a/drivers/platform/x86/mxm-wmi.c +++ b/drivers/platform/x86/mxm-wmi.c @@ -32,6 +32,7 @@ MODULE_LICENSE("GPL");  MODULE_ALIAS("wmi:"MXM_WMMX_GUID);  #define MXM_WMMX_FUNC_MXDS 0x5344584D /* "MXDS" */ +#define MXM_WMMX_FUNC_MXMX 0x53445344 /* "MXMX" */  struct mxds_args {  	u32 func; @@ -51,7 +52,7 @@ int mxm_wmi_call_mxds(int adapter)  	acpi_status status;  	printk("calling mux switch %d\n", adapter); -	 +  	status = wmi_evaluate_method(MXM_WMMX_GUID, 0x1, adapter, &input,  				     &output); @@ -64,6 +65,31 @@ int mxm_wmi_call_mxds(int adapter)  }  EXPORT_SYMBOL_GPL(mxm_wmi_call_mxds); +int mxm_wmi_call_mxmx(int adapter) +{ +	struct mxds_args args = { +		.func = MXM_WMMX_FUNC_MXMX, +		.args = 0, +		.xarg = 1, +	}; +	struct acpi_buffer input = { (acpi_size)sizeof(args), &args }; +	struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL }; +	acpi_status status; + +	printk("calling mux switch %d\n", adapter); + +	status = wmi_evaluate_method(MXM_WMMX_GUID, 0x1, adapter, &input, +				     &output); + +	if (ACPI_FAILURE(status)) +		return status; + +	printk("mux mutex set switched %d\n", status); +	return 0; +			     +} +EXPORT_SYMBOL_GPL(mxm_wmi_call_mxmx); +  bool mxm_wmi_supported(void)  {  	bool guid_valid;  |