diff options
Diffstat (limited to 'source/tools/acpiexec/aeregion.c')
-rw-r--r-- | source/tools/acpiexec/aeregion.c | 278 |
1 files changed, 1 insertions, 277 deletions
diff --git a/source/tools/acpiexec/aeregion.c b/source/tools/acpiexec/aeregion.c index 4076c06bdf0b..69c3999f6b01 100644 --- a/source/tools/acpiexec/aeregion.c +++ b/source/tools/acpiexec/aeregion.c @@ -1,6 +1,6 @@ /****************************************************************************** * - * Module Name: aeregion - Operation region support for acpiexec + * Module Name: aeregion - Handler for operation regions * *****************************************************************************/ @@ -155,283 +155,7 @@ ACPI_MODULE_NAME ("aeregion") -/* Local prototypes */ - -static ACPI_STATUS -AeRegionInit ( - ACPI_HANDLE RegionHandle, - UINT32 Function, - void *HandlerContext, - void **RegionContext); - -static ACPI_STATUS -AeInstallEcHandler ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue); - -static ACPI_STATUS -AeInstallPciHandler ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue); - - static AE_DEBUG_REGIONS AeRegions; -BOOLEAN AcpiGbl_DisplayRegionAccess = FALSE; -ACPI_CONNECTION_INFO AeMyContext; - - -/* - * We will override some of the default region handlers, especially - * the SystemMemory handler, which must be implemented locally. - * These handlers are installed "early" - before any _REG methods - * are executed - since they are special in the sense that the ACPI spec - * declares that they must "always be available". Cannot override the - * DataTable region handler either -- needed for test execution. - * - * NOTE: The local region handler will simulate access to these address - * spaces by creating a memory buffer behind each operation region. - */ -static ACPI_ADR_SPACE_TYPE DefaultSpaceIdList[] = -{ - ACPI_ADR_SPACE_SYSTEM_MEMORY, - ACPI_ADR_SPACE_SYSTEM_IO, - ACPI_ADR_SPACE_PCI_CONFIG, - ACPI_ADR_SPACE_EC -}; - -/* - * We will install handlers for some of the various address space IDs. - * Test one user-defined address space (used by aslts). - */ -#define ACPI_ADR_SPACE_USER_DEFINED1 0x80 -#define ACPI_ADR_SPACE_USER_DEFINED2 0xE4 - -static ACPI_ADR_SPACE_TYPE SpaceIdList[] = -{ - ACPI_ADR_SPACE_SMBUS, - ACPI_ADR_SPACE_CMOS, - ACPI_ADR_SPACE_PCI_BAR_TARGET, - ACPI_ADR_SPACE_IPMI, - ACPI_ADR_SPACE_GPIO, - ACPI_ADR_SPACE_GSBUS, - ACPI_ADR_SPACE_FIXED_HARDWARE, - ACPI_ADR_SPACE_USER_DEFINED1, - ACPI_ADR_SPACE_USER_DEFINED2 -}; - - -/****************************************************************************** - * - * FUNCTION: AeRegionInit - * - * PARAMETERS: Region init handler - * - * RETURN: Status - * - * DESCRIPTION: Opregion init function. - * - *****************************************************************************/ - -static ACPI_STATUS -AeRegionInit ( - ACPI_HANDLE RegionHandle, - UINT32 Function, - void *HandlerContext, - void **RegionContext) -{ - - if (Function == ACPI_REGION_DEACTIVATE) - { - *RegionContext = NULL; - } - else - { - *RegionContext = RegionHandle; - } - - return (AE_OK); -} - - -/****************************************************************************** - * - * FUNCTION: AeOverrideRegionHandlers - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Override the default region handlers for memory, i/o, and - * pci_config. Also install a handler for EC. This is part of - * the "install early handlers" functionality. - * - *****************************************************************************/ - -void -AeOverrideRegionHandlers ( - void) -{ - UINT32 i; - ACPI_STATUS Status; - - /* - * Install handlers that will override the default handlers for some of - * the space IDs. - */ - for (i = 0; i < ACPI_ARRAY_LENGTH (DefaultSpaceIdList); i++) - { - /* Install handler at the root object */ - - Status = AcpiInstallAddressSpaceHandler (ACPI_ROOT_OBJECT, - DefaultSpaceIdList[i], AeRegionHandler, - AeRegionInit, &AeMyContext); - - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Could not install an OpRegion handler for %s space(%u)", - AcpiUtGetRegionName ((UINT8) DefaultSpaceIdList[i]), - DefaultSpaceIdList[i])); - } - } -} - - -/****************************************************************************** - * - * FUNCTION: AeInstallRegionHandlers - * - * PARAMETERS: None - * - * RETURN: None - * - * DESCRIPTION: Install handlers for the address spaces other than memory, - * i/o, and pci_config. - * - *****************************************************************************/ - -void -AeInstallRegionHandlers ( - void) -{ - UINT32 i; - ACPI_STATUS Status; - - /* - * Install handlers for some of the "device driver" address spaces - * such as SMBus, etc. - */ - for (i = 0; i < ACPI_ARRAY_LENGTH (SpaceIdList); i++) - { - /* Install handler at the root object */ - - Status = AcpiInstallAddressSpaceHandler (ACPI_ROOT_OBJECT, - SpaceIdList[i], AeRegionHandler, - AeRegionInit, &AeMyContext); - - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Could not install an OpRegion handler for %s space(%u)", - AcpiUtGetRegionName((UINT8) SpaceIdList[i]), SpaceIdList[i])); - return; - } - } -} - - -/******************************************************************************* - * - * FUNCTION: AeInstallDeviceHandlers, - * AeInstallEcHandler, - * AeInstallPciHandler - * - * PARAMETERS: ACPI_WALK_NAMESPACE callback - * - * RETURN: Status - * - * DESCRIPTION: Walk entire namespace, install a handler for every EC - * and PCI device found. - * - ******************************************************************************/ - -static ACPI_STATUS -AeInstallEcHandler ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue) -{ - ACPI_STATUS Status; - - - /* Install the handler for this EC device */ - - Status = AcpiInstallAddressSpaceHandler (ObjHandle, ACPI_ADR_SPACE_EC, - AeRegionHandler, AeRegionInit, &AeMyContext); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Could not install an OpRegion handler for EC device (%p)", - ObjHandle)); - } - - return (Status); -} - - -static ACPI_STATUS -AeInstallPciHandler ( - ACPI_HANDLE ObjHandle, - UINT32 Level, - void *Context, - void **ReturnValue) -{ - ACPI_STATUS Status; - - - /* Install memory and I/O handlers for the PCI device */ - - Status = AcpiInstallAddressSpaceHandler (ObjHandle, ACPI_ADR_SPACE_SYSTEM_IO, - AeRegionHandler, AeRegionInit, &AeMyContext); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Could not install an OpRegion handler for PCI device (%p)", - ObjHandle)); - } - - Status = AcpiInstallAddressSpaceHandler (ObjHandle, ACPI_ADR_SPACE_SYSTEM_MEMORY, - AeRegionHandler, AeRegionInit, &AeMyContext); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, Status, - "Could not install an OpRegion handler for PCI device (%p)", - ObjHandle)); - } - - return (AE_CTRL_TERMINATE); -} - - -ACPI_STATUS -AeInstallDeviceHandlers ( - void) -{ - - /* Find all Embedded Controller devices */ - - AcpiGetDevices ("PNP0C09", AeInstallEcHandler, NULL, NULL); - - /* Install a PCI handler */ - - AcpiGetDevices ("PNP0A08", AeInstallPciHandler, NULL, NULL); - return (AE_OK); -} /****************************************************************************** |