static int set_state(u32 *in, u8 instance) { u32 value; acpi_status status; struct acpi_buffer input; if (!in) return -EINVAL; if (instance > 2) return -ENODEV; switch (instance) { case TC1100_INSTANCE_WIRELESS: value = (*in) ? 1 : 2; break; case TC1100_INSTANCE_JOGDIAL: value = (*in) ? 0 : 1; break; default: return -ENODEV; } input.length = sizeof(u32); input.pointer = &value; status = wmi_set_block(GUID, instance, &input); if (ACPI_FAILURE(status)) return -ENODEV; return 0; }
static int msi_wmi_set_block(int instance, int value) { acpi_status status; struct acpi_buffer input = { sizeof(int), &value }; dprintk("Going to set block of instance: %d - value: %d\n", instance, value); status = wmi_set_block(MSIWMI_BIOS_GUID, instance, &input); return ACPI_SUCCESS(status) ? 0 : 1; }