ACPI_STATUS AcpiEvExecuteRegMethods ( ACPI_NAMESPACE_NODE *Node, ACPI_ADR_SPACE_TYPE SpaceId) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (EvExecuteRegMethods); /* * Run all _REG methods for all Operation Regions for this space ID. This * is a separate walk in order to handle any interdependencies between * regions and _REG methods. (i.e. handlers must be installed for all * regions of this Space ID before we can run any _REG methods) */ Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, Node, ACPI_UINT32_MAX, ACPI_NS_WALK_UNLOCK, AcpiEvRegRun, NULL, &SpaceId, NULL); /* Special case for EC: handle "orphan" _REG methods with no region */ if (SpaceId == ACPI_ADR_SPACE_EC) { AcpiEvOrphanEcRegMethod (Node); } return_ACPI_STATUS (Status); }
void AcpiEvExecuteRegMethods ( ACPI_NAMESPACE_NODE *Node, ACPI_ADR_SPACE_TYPE SpaceId, UINT32 Function) { ACPI_REG_WALK_INFO Info; ACPI_FUNCTION_TRACE (EvExecuteRegMethods); /* * These address spaces do not need a call to _REG, since the ACPI * specification defines them as: "must always be accessible". Since * they never change state (never become unavailable), no need to ever * call _REG on them. Also, a DataTable is not a "real" address space, * so do not call _REG. September 2018. */ if ((SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY) || (SpaceId == ACPI_ADR_SPACE_SYSTEM_IO) || (SpaceId == ACPI_ADR_SPACE_DATA_TABLE)) { return_VOID; } Info.SpaceId = SpaceId; Info.Function = Function; Info.RegRunCount = 0; ACPI_DEBUG_PRINT_RAW ((ACPI_DB_NAMES, " Running _REG methods for SpaceId %s\n", AcpiUtGetRegionName (Info.SpaceId))); /* * Run all _REG methods for all Operation Regions for this space ID. This * is a separate walk in order to handle any interdependencies between * regions and _REG methods. (i.e. handlers must be installed for all * regions of this Space ID before we can run any _REG methods) */ (void) AcpiNsWalkNamespace (ACPI_TYPE_ANY, Node, ACPI_UINT32_MAX, ACPI_NS_WALK_UNLOCK, AcpiEvRegRun, NULL, &Info, NULL); /* Special case for EC: handle "orphan" _REG methods with no region */ if (SpaceId == ACPI_ADR_SPACE_EC) { AcpiEvOrphanEcRegMethod (Node); } ACPI_DEBUG_PRINT_RAW ((ACPI_DB_NAMES, " Executed %u _REG methods for SpaceId %s\n", Info.RegRunCount, AcpiUtGetRegionName (Info.SpaceId))); return_VOID; }
void AcpiEvExecuteRegMethods ( ACPI_NAMESPACE_NODE *Node, ACPI_ADR_SPACE_TYPE SpaceId, UINT32 Function) { ACPI_REG_WALK_INFO Info; ACPI_FUNCTION_TRACE (EvExecuteRegMethods); Info.SpaceId = SpaceId; Info.Function = Function; Info.RegRunCount = 0; ACPI_DEBUG_PRINT_RAW ((ACPI_DB_NAMES, " Running _REG methods for SpaceId %s\n", AcpiUtGetRegionName (Info.SpaceId))); /* * Run all _REG methods for all Operation Regions for this space ID. This * is a separate walk in order to handle any interdependencies between * regions and _REG methods. (i.e. handlers must be installed for all * regions of this Space ID before we can run any _REG methods) */ (void) AcpiNsWalkNamespace (ACPI_TYPE_ANY, Node, ACPI_UINT32_MAX, ACPI_NS_WALK_UNLOCK, AcpiEvRegRun, NULL, &Info, NULL); /* Special case for EC: handle "orphan" _REG methods with no region */ if (SpaceId == ACPI_ADR_SPACE_EC) { AcpiEvOrphanEcRegMethod (Node); } ACPI_DEBUG_PRINT_RAW ((ACPI_DB_NAMES, " Executed %u _REG methods for SpaceId %s\n", Info.RegRunCount, AcpiUtGetRegionName (Info.SpaceId))); return_VOID; }