mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-08 15:33:47 +00:00
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
3 changed files with 29 additions and 1 deletions
|
@ -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)
|
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);
|
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);
|
return nouveau_dsm(handle, NOUVEAU_DSM_LED, mux_id, NULL);
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,6 +32,7 @@ MODULE_LICENSE("GPL");
|
||||||
MODULE_ALIAS("wmi:"MXM_WMMX_GUID);
|
MODULE_ALIAS("wmi:"MXM_WMMX_GUID);
|
||||||
|
|
||||||
#define MXM_WMMX_FUNC_MXDS 0x5344584D /* "MXDS" */
|
#define MXM_WMMX_FUNC_MXDS 0x5344584D /* "MXDS" */
|
||||||
|
#define MXM_WMMX_FUNC_MXMX 0x53445344 /* "MXMX" */
|
||||||
|
|
||||||
struct mxds_args {
|
struct mxds_args {
|
||||||
u32 func;
|
u32 func;
|
||||||
|
@ -64,6 +65,31 @@ int mxm_wmi_call_mxds(int adapter)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(mxm_wmi_call_mxds);
|
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 mxm_wmi_supported(void)
|
||||||
{
|
{
|
||||||
bool guid_valid;
|
bool guid_valid;
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
/* integrated adapter */
|
/* integrated adapter */
|
||||||
#define MXM_MXDS_ADAPTER_IGD 0x10
|
#define MXM_MXDS_ADAPTER_IGD 0x10
|
||||||
int mxm_wmi_call_mxds(int adapter);
|
int mxm_wmi_call_mxds(int adapter);
|
||||||
|
int mxm_wmi_call_mxmx(int adapter);
|
||||||
bool mxm_wmi_supported(void);
|
bool mxm_wmi_supported(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue