Fix problem caused by previous commit where some users' buttons
stopped returning events. Don't disable the event when removing the handler because it still needs to be enabled for the other handler. Also, remove duplicate AcpiEnableEvent calls since the install function now does this for us.
This commit is contained in:
parent
d178d903e1
commit
3c0751b8f2
@ -1122,7 +1122,6 @@ acpi_enable_fixed_events(struct acpi_softc *sc)
|
||||
|
||||
/* Enable and clear fixed events and install handlers. */
|
||||
if (AcpiGbl_FADT != NULL && AcpiGbl_FADT->PwrButton == 0) {
|
||||
AcpiEnableEvent(ACPI_EVENT_POWER_BUTTON, 0);
|
||||
AcpiClearEvent(ACPI_EVENT_POWER_BUTTON);
|
||||
AcpiInstallFixedEventHandler(ACPI_EVENT_POWER_BUTTON,
|
||||
acpi_event_power_button_sleep, sc);
|
||||
@ -1130,7 +1129,6 @@ acpi_enable_fixed_events(struct acpi_softc *sc)
|
||||
device_printf(sc->acpi_dev, "Power Button (fixed)\n");
|
||||
}
|
||||
if (AcpiGbl_FADT != NULL && AcpiGbl_FADT->SleepButton == 0) {
|
||||
AcpiEnableEvent(ACPI_EVENT_SLEEP_BUTTON, 0);
|
||||
AcpiClearEvent(ACPI_EVENT_SLEEP_BUTTON);
|
||||
AcpiInstallFixedEventHandler(ACPI_EVENT_SLEEP_BUTTON,
|
||||
acpi_event_sleep_button_sleep, sc);
|
||||
|
@ -132,7 +132,6 @@ acpi_button_attach(device_t dev)
|
||||
|
||||
/* Install the appropriate new handler. */
|
||||
if (sc->fixed) {
|
||||
AcpiEnableEvent(event, 0);
|
||||
AcpiClearEvent(event);
|
||||
status = AcpiInstallFixedEventHandler(event,
|
||||
acpi_button_fixed_handler, sc);
|
||||
@ -152,16 +151,10 @@ acpi_button_attach(device_t dev)
|
||||
* we have found one in the AML. Some systems define buttons both ways
|
||||
* but only deliver events to the AML object.
|
||||
*/
|
||||
if (event == ACPI_EVENT_POWER_BUTTON && AcpiGbl_FADT->PwrButton == 0) {
|
||||
AcpiDisableEvent(event, 0);
|
||||
AcpiClearEvent(event);
|
||||
if (event == ACPI_EVENT_POWER_BUTTON && AcpiGbl_FADT->PwrButton == 0)
|
||||
AcpiRemoveFixedEventHandler(event, acpi_event_power_button_sleep);
|
||||
}
|
||||
if (event == ACPI_EVENT_SLEEP_BUTTON && AcpiGbl_FADT->SleepButton == 0) {
|
||||
AcpiDisableEvent(event, 0);
|
||||
AcpiClearEvent(event);
|
||||
if (event == ACPI_EVENT_SLEEP_BUTTON && AcpiGbl_FADT->SleepButton == 0)
|
||||
AcpiRemoveFixedEventHandler(event, acpi_event_sleep_button_sleep);
|
||||
}
|
||||
|
||||
return_VALUE (0);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user