mirror of https://gitee.com/openkylin/linux.git
mxm/wmi: add MXMX interface entry point.
The MXMX method appears to be a mutex of some sort. Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
f19467c509
commit
000703f44c
|
@ -150,6 +150,7 @@ static int nouveau_dsm(acpi_handle handle, int func, int arg, uint32_t *result)
|
|||
|
||||
static int nouveau_dsm_switch_mux(acpi_handle handle, int mux_id)
|
||||
{
|
||||
mxm_wmi_call_mxmx(mux_id == NOUVEAU_DSM_LED_STAMINA ? MXM_MXDS_ADAPTER_IGD : MXM_MXDS_ADAPTER_0);
|
||||
mxm_wmi_call_mxds(mux_id == NOUVEAU_DSM_LED_STAMINA ? MXM_MXDS_ADAPTER_IGD : MXM_MXDS_ADAPTER_0);
|
||||
return nouveau_dsm(handle, NOUVEAU_DSM_LED, mux_id, NULL);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
/* integrated adapter */
|
||||
#define MXM_MXDS_ADAPTER_IGD 0x10
|
||||
int mxm_wmi_call_mxds(int adapter);
|
||||
int mxm_wmi_call_mxmx(int adapter);
|
||||
bool mxm_wmi_supported(void);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue