Add a global log GPE handler, enable all runtime GPE's.
For now we only log messages.
This commit is contained in:
@@ -86,6 +86,69 @@ get_device_by_hid_callback(ACPI_HANDLE object, UINT32 depth, void* context,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
globalGPEHandler(UINT32 eventType, ACPI_HANDLE device, UINT32 eventNumber,
|
||||||
|
void *context)
|
||||||
|
{
|
||||||
|
ACPI_BUFFER path;
|
||||||
|
char deviceName[256];
|
||||||
|
path.Length = sizeof(deviceName);
|
||||||
|
path.Pointer = deviceName;
|
||||||
|
|
||||||
|
ACPI_STATUS status = AcpiNsHandleToPathname(device, &path);
|
||||||
|
if (ACPI_FAILURE(status)) {
|
||||||
|
deviceName[0] = '?';
|
||||||
|
deviceName[1] = '?';
|
||||||
|
deviceName[2] = '?';
|
||||||
|
deviceName[3] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (eventType) {
|
||||||
|
case ACPI_EVENT_TYPE_GPE:
|
||||||
|
dprintf("acpi: GPE Event %d for %s\n", eventNumber, deviceName);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ACPI_EVENT_TYPE_FIXED:
|
||||||
|
{
|
||||||
|
switch(eventNumber) {
|
||||||
|
case ACPI_EVENT_PMTIMER:
|
||||||
|
dprintf("acpi: PMTIMER(%d) event for %s\n", eventNumber,
|
||||||
|
deviceName);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ACPI_EVENT_GLOBAL:
|
||||||
|
dprintf("acpi: Global(%d) event for %s\n", eventNumber,
|
||||||
|
deviceName);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ACPI_EVENT_POWER_BUTTON:
|
||||||
|
dprintf("acpi: Powerbutton(%d) event for %s\n", eventNumber,
|
||||||
|
deviceName);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ACPI_EVENT_SLEEP_BUTTON:
|
||||||
|
dprintf("acpi: sleepbutton(%d) event for %s\n", eventNumber,
|
||||||
|
deviceName);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ACPI_EVENT_RTC:
|
||||||
|
dprintf("acpi: RTC(%d) event for %s\n", eventNumber,
|
||||||
|
deviceName);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
dprintf("acpi: unknown fixed(%d) event for %s\n",
|
||||||
|
eventNumber, deviceName);
|
||||||
|
}
|
||||||
|
} break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
dprintf("acpi: unknown event type (%d:%d) event for %s\n",
|
||||||
|
eventType, eventNumber, deviceName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// #pragma mark - ACPI bus manager API
|
// #pragma mark - ACPI bus manager API
|
||||||
|
|
||||||
|
|
||||||
@@ -183,6 +246,17 @@ acpi_std_ops(int32 op,...)
|
|||||||
"AcpiInitializeObjects failed"))
|
"AcpiInitializeObjects failed"))
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
|
|
||||||
|
checkAndLogFailure(
|
||||||
|
AcpiInstallGlobalEventHandler(globalGPEHandler, NULL),
|
||||||
|
"Failed to install global GPE handler.");
|
||||||
|
|
||||||
|
checkAndLogFailure(AcpiEnableAllRuntimeGpes(),
|
||||||
|
"Failed to enable all runtime Gpes");
|
||||||
|
|
||||||
|
checkAndLogFailure(AcpiUpdateAllGpes(),
|
||||||
|
"Failed to update all Gpes");
|
||||||
|
|
||||||
/* Phew. Now in ACPI mode */
|
/* Phew. Now in ACPI mode */
|
||||||
TRACE("ACPI initialized\n");
|
TRACE("ACPI initialized\n");
|
||||||
return B_OK;
|
return B_OK;
|
||||||
|
|||||||
Reference in New Issue
Block a user