drivers/platform/x86/mxm-wmi.c

Source file repositories/reference/linux-study-clean/drivers/platform/x86/mxm-wmi.c

File Facts

System
Linux kernel
Corpus path
drivers/platform/x86/mxm-wmi.c
Extension
.c
Size
1690 bytes
Lines
83
Domain
Driver Families
Bucket
drivers/platform
Inferred role
Driver Families: exported/initcall integration point
Status
integration implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct mxds_args {
	u32 func;
	u32 args;
	u32 xarg;
};

int mxm_wmi_call_mxds(int adapter)
{
	struct mxds_args args = {
		.func = MXM_WMMX_FUNC_MXDS,
		.args = 0,
		.xarg = 1,
	};
	struct acpi_buffer input = { (acpi_size)sizeof(args), &args };
	acpi_status status;

	printk("calling mux switch %d\n", adapter);

	status = wmi_evaluate_method(MXM_WMMX_GUID, 0x0, adapter, &input, NULL);

	if (ACPI_FAILURE(status))
		return status;

	printk("mux switched %d\n", status);
	return 0;
			    
}
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 };
	acpi_status status;

	printk("calling mux switch %d\n", adapter);

	status = wmi_evaluate_method(MXM_WMMX_GUID, 0x0, adapter, &input, NULL);

	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;
	guid_valid = wmi_has_guid(MXM_WMMX_GUID);
	return guid_valid;
}
EXPORT_SYMBOL_GPL(mxm_wmi_supported);

Annotation

Implementation Notes