/* Input parameters to mute/unmute audio LED and Mic LED */ struct wmi_led_args {
u8 id;
u8 subid;
u16 value;
};
/* Values of input parameters to SetFeature of audio LED and Mic LED */ enum hotkey_set_feature {
MIC_MUTE_LED_ON = 1,
MIC_MUTE_LED_OFF = 2,
AUDIO_MUTE_LED_ON = 4,
AUDIO_MUTE_LED_OFF = 5,
};
switch (led_type) { case MIC_MUTE:
wmiarg = WMI_LUD_GET_MICMUTE_LED_VER; break; case AUDIO_MUTE:
wmiarg = WMI_LUD_GET_AUDIOMUTE_LED_VER; break; default: return -EINVAL;
}
input.length = sizeof(wmiarg);
input.pointer = &wmiarg;
status = wmidev_evaluate_method(wpriv->led_wdev, 0, WMI_LUD_GET_SUPPORT, &input, &output); if (ACPI_FAILURE(status)) return -EIO;
union acpi_object *obj __free(kfree) = output.pointer; if (!obj || obj->type != ACPI_TYPE_INTEGER) return -EIO;
led_version = obj->integer.value;
/* * Output parameters define: 0 means mute LED is not supported, Non-zero means * mute LED can be supported.
*/ if (led_version == 0) return 0;
switch (led_type) { case MIC_MUTE: if (led_version != WMI_LUD_SUPPORT_MICMUTE_LED_VER) {
pr_warn("The MIC_MUTE LED of this device isn't supported.\n"); return 0;
}
wpriv->cdev[led_type].name = "platform::micmute";
wpriv->cdev[led_type].brightness_set_blocking = &lsh_wmi_micmute_led_set;
wpriv->cdev[led_type].default_trigger = "audio-micmute"; break; case AUDIO_MUTE: if (led_version != WMI_LUD_SUPPORT_AUDIOMUTE_LED_VER) {
pr_warn("The AUDIO_MUTE LED of this device isn't supported.\n"); return 0;
}
wpriv->cdev[led_type].name = "platform::mute";
wpriv->cdev[led_type].brightness_set_blocking = &lsh_wmi_audiomute_led_set;
wpriv->cdev[led_type].default_trigger = "audio-mute"; break; default:
dev_err(dev, "Unknown LED type %d\n", led_type); return -EINVAL;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.