360 lines
14 KiB
C
360 lines
14 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1996 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
acpidbg.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
This module contains the debug stubs
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Stephane Plante (splante)
|
||
|
|
||
|
Environment:
|
||
|
|
||
|
NT Kernel Model Driver only, Win9x driver mode
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#ifndef _ACPIDBG_H_
|
||
|
#define _ACPIDBG_H_
|
||
|
|
||
|
//
|
||
|
// ACPI BugCheck Definitions
|
||
|
//
|
||
|
|
||
|
//
|
||
|
// ACPI cannot find the SCI Interrupt vector in the resources handed
|
||
|
// to it when ACPI is started.
|
||
|
// Argument 0 - ACPI's deviceExtension
|
||
|
// Argument 1 - ACPI's ResourceList
|
||
|
// Argument 2 - 0 <- Means no resource list found
|
||
|
// Argument 2 - 1 <- Means no IRQ resource found in list
|
||
|
//
|
||
|
#define ACPI_ROOT_RESOURCES_FAILURE 0x0001
|
||
|
|
||
|
//
|
||
|
// ACPI could not process the resource list for the PCI root buses
|
||
|
// There is an White Paper on the Web Site about this problem
|
||
|
// Argument 0 - The ACPI Extension for the PCI bus
|
||
|
// Argument 1 - 0
|
||
|
// Argument 2 - Pointer to the QUERY_RESOURCES irp
|
||
|
// Argument 1 - 1
|
||
|
// Argument 2 - Pointer to the QUERY_RESOURCE_REQUIREMENTS irp
|
||
|
// Argument 1 - 2
|
||
|
// Argument 2 - 0 <- Indicates that we found an empty resource list
|
||
|
// Argument 1 - 3 <- Could not find the current bus number in the CRS
|
||
|
// Argument 2 - Pointer to the PNP CRS descriptor
|
||
|
// Argument 1 - Pointer to the Resource List for PCI
|
||
|
// Argument 2 - Number of errors/conflicts found in the resource list
|
||
|
//
|
||
|
#define ACPI_ROOT_PCI_RESOURCE_FAILURE 0x0002
|
||
|
|
||
|
//
|
||
|
// ACPI tried to run a control method while creating device extensions
|
||
|
// to represent the ACPI namespace, but this control method failed
|
||
|
// Argument 0 - The ACPI Object that was being run
|
||
|
// Argument 1 - return value from the interpreter
|
||
|
// Argument 2 - Name of the control method (in ULONG format)
|
||
|
//
|
||
|
#define ACPI_FAILED_MUST_SUCCEED_METHOD 0x0003
|
||
|
|
||
|
//
|
||
|
// ACPI evaluated a _PRW and expected to find an integer as a
|
||
|
// package element
|
||
|
// Argument 0 - The ACPI Extension for which the _PRW belongs to
|
||
|
// Argument 1 - Pointer to the method
|
||
|
// Argument 2 - The DataType returned (see amli.h)
|
||
|
//
|
||
|
#define ACPI_PRW_PACKAGE_EXPECTED_INTEGER 0x0004
|
||
|
|
||
|
//
|
||
|
// ACPI evaluated a _PRW and the package that came back failed to
|
||
|
// contain at least 2 elements. The ACPI specification requires that
|
||
|
// two elements to always be present in a _PRW.
|
||
|
// Argument 0 - The ACPI Extension for which the _PRW belongs to
|
||
|
// Argument 1 - Pointer to the _PRW
|
||
|
// Argument 2 - Number of elements in the _PRW
|
||
|
//
|
||
|
#define ACPI_PRW_PACKAGE_TOO_SMALL 0x0005
|
||
|
|
||
|
//
|
||
|
// ACPI tried to find a named object named, but could not find it.
|
||
|
// Argument 0 - The ACPI Extension for which the _PRx belongs to
|
||
|
// Argument 1 - Pointer to the _PRx
|
||
|
// Argument 2 - Pointer to the name of the object to look for
|
||
|
//
|
||
|
#define ACPI_PRX_CANNOT_FIND_OBJECT 0x0006
|
||
|
|
||
|
//
|
||
|
// ACPI evaluated a method and expected to receive a Buffer in return.
|
||
|
// However, the method returned some other data type
|
||
|
// Argument 0 - The ACPI Extension for which the method belongs to
|
||
|
// Argument 1 - Pointer to the method
|
||
|
// Argument 2 - The DataType returned (see amli.h)
|
||
|
//
|
||
|
#define ACPI_EXPECTED_BUFFER 0x0007
|
||
|
|
||
|
//
|
||
|
// ACPI evaluated a method and expected to receive an Integer in return.
|
||
|
// However, the method returned some other data type
|
||
|
// Argument 0 - The ACPI Extension for which the method belongs to
|
||
|
// Argument 1 - Pointer to the method
|
||
|
// Argument 2 - The DataType returned (see amli.h)
|
||
|
//
|
||
|
#define ACPI_EXPECTED_INTEGER 0x0008
|
||
|
|
||
|
//
|
||
|
// ACPI evaluated a method and expected to receive a Package in return.
|
||
|
// However, the method returned some other data type
|
||
|
// Argument 0 - The ACPI Extension for which the method belongs to
|
||
|
// Argument 1 - Pointer to the method
|
||
|
// Argument 2 - The DataType returned (see amli.h)
|
||
|
//
|
||
|
#define ACPI_EXPECTED_PACKAGE 0x0009
|
||
|
|
||
|
//
|
||
|
// ACPI evaluated a method and expected to receive a String in return.
|
||
|
// However, the method returned some other data type
|
||
|
// Argument 0 - The ACPI Extension for which the method belongs to
|
||
|
// Argument 1 - Pointer to the method
|
||
|
// Argument 2 - The DataType returned (see amli.h)
|
||
|
//
|
||
|
#define ACPI_EXPECTED_STRING 0x000A
|
||
|
|
||
|
//
|
||
|
// ACPI cannot find the object referenced to by an _EJD string
|
||
|
// Argument 0 - The ACPI Extension for which which the _EJD belongs to
|
||
|
// Argument 1 - The status returned by the interpreter
|
||
|
// Argument 2 - Name of the object we are trying to find
|
||
|
//
|
||
|
#define ACPI_EJD_CANNOT_FIND_OBJECT 0x000B
|
||
|
|
||
|
//
|
||
|
// ACPI provides faulty/insufficient information for dock support
|
||
|
// Argument 0 - The ACPI Extension for which ACPI found a dock device
|
||
|
// Argument 1 - Pointer to the _EJD method
|
||
|
// Argument 2 - 0 <- Bios does not claim system is dockage
|
||
|
// 1 <- Duplicate device extensions for dock device
|
||
|
//
|
||
|
#define ACPI_CLAIMS_BOGUS_DOCK_SUPPORT 0x000C
|
||
|
|
||
|
//
|
||
|
// ACPI could not find a required method/object in the namespace
|
||
|
// This is the bugcheck that is used if a vendor does not have an
|
||
|
// _HID or _ADR present
|
||
|
// Argument 0 - The ACPI Extension that we need the object for
|
||
|
// Argument 1 - The (ULONG) name of the method we looked for
|
||
|
// Argument 2 - 0 <- Base Case
|
||
|
// Argument 2 - 1 <- Conflict
|
||
|
//
|
||
|
#define ACPI_REQUIRED_METHOD_NOT_PRESENT 0x000D
|
||
|
|
||
|
//
|
||
|
// ACPI could not find a requird method/object in the namespace for
|
||
|
// a power resource (or entity other than a "device"). This is the
|
||
|
// bugcheck used if a vendor does not have an _ON, _OFF, or _STA present
|
||
|
// for a power resource
|
||
|
// Argument 0 - The NS PowerResource that we need the object for
|
||
|
// Argument 1 - The (ULONG) name of the method we looked for
|
||
|
// Argument 2 - 0 <- Base Case
|
||
|
//
|
||
|
#define ACPI_POWER_NODE_REQUIRED_METHOD_NOT_PRESENT 0x000E
|
||
|
|
||
|
//
|
||
|
// ACPI could not parse the resource descriptor
|
||
|
// Argument 0 - The current buffer that ACPI was parsing
|
||
|
// Argument 1 - The buffer's tag
|
||
|
// Argument 2 - The specified length of the buffer
|
||
|
//
|
||
|
#define ACPI_PNP_RESOURCE_LIST_BUFFER_TOO_SMALL 0x000F
|
||
|
|
||
|
//
|
||
|
// ACPI could not map determine the system to device state mapping
|
||
|
// correctly
|
||
|
//
|
||
|
// There is a very long white paper about this topic
|
||
|
//
|
||
|
// Argument 0 - The ACPI Extension for which are trying to do the mapping
|
||
|
// Argument 1 - 0 The _PRx mapped back to a non-supported S-state
|
||
|
// Argument 2 - The DEVICE_POWER_STATE (ie: x+1)
|
||
|
// Argument 1 - 1 We cannot find a D-state to associate with the S-state
|
||
|
// Argument 2 - The SYSTEM_POWER_STATE that is causing us grief
|
||
|
// Argument 1 - 2 The device claims to support wake from this s-state but
|
||
|
// the s-state is not supported by the system
|
||
|
// Argument 2 - The SYSTEM_POWER_STATE that is causing us grief
|
||
|
//
|
||
|
#define ACPI_CANNOT_MAP_SYSTEM_TO_DEVICE_STATES 0x0010
|
||
|
|
||
|
//
|
||
|
// The system could not enter ACPI mode
|
||
|
//
|
||
|
// Argument 0 - 0 <- System could not initialize AML interpreter
|
||
|
// Argument 0 - 1 <- System could not find RSDT
|
||
|
// Argument 0 - 2 <- System could not allocate critical driver structures
|
||
|
// Argument 0 - 3 <- System could not load RSDT
|
||
|
// Argument 0 - 4 <- System could not load DDBs
|
||
|
// Argument 0 - 5 <- System cannot connect Interrupt vector
|
||
|
// Argument 0 - 6 <- SCI_EN never becomes set in PM1 Control Register
|
||
|
// Argument 0 - 7 <- Table checksum is incorrect
|
||
|
// Argument 1 - Pointer to the table that had a bad checksum
|
||
|
// Argument 2 - Creator Revision
|
||
|
// Argument 0 - 8 <- Failed to load DDB
|
||
|
// Argument 1 - Pointer to the table that we failed to load
|
||
|
// Argument 2 - Creator Revision
|
||
|
//
|
||
|
#define ACPI_SYSTEM_CANNOT_START_ACPI 0x0011
|
||
|
|
||
|
//
|
||
|
// The ACPI driver was expecting a power resource object.
|
||
|
// Argument 0 - The ACPI Extension for which is looking for powerres
|
||
|
// Argument 1 - Pointer to the object that returned the bogus powerres
|
||
|
// Argument 2 - Pointer to the name of the object to look for
|
||
|
//
|
||
|
#define ACPI_EXPECTED_POWERRES 0x0012
|
||
|
|
||
|
//
|
||
|
// The ACPI driver attempted to unload a table and an error occured
|
||
|
// Argument 0 - The NSOBj that we were trying to unload
|
||
|
// Argument 1 - 0 - The NSOBj has not been unloaded by the current
|
||
|
// operation, but its parent object is marked as
|
||
|
// requiring an unload
|
||
|
// Argument 1 - 1 - The NSOBJ has been marked as requiring an unload
|
||
|
// buts it device parent has not.
|
||
|
//
|
||
|
#define ACPI_TABLE_UNLOAD 0x0013
|
||
|
|
||
|
//
|
||
|
// ACPI tried to evaluate the PIC control method and but failed
|
||
|
// Argument 0 - InterruptModel (Integer)
|
||
|
// Argument 1 - return value from interpreter
|
||
|
// Argument 2 - Pointer to the PIC control method
|
||
|
//
|
||
|
#define ACPI_FAILED_PIC_METHOD 0x2001
|
||
|
|
||
|
//
|
||
|
// ACPI tried to do interrupt routing, but failed
|
||
|
//
|
||
|
// Argument 0 - Pointer to the device object
|
||
|
// Argument 1 - Pointer to the parent of the device object
|
||
|
// Argument 2 - Pointer to the PRT
|
||
|
//
|
||
|
#define ACPI_CANNOT_ROUTE_INTERRUPTS 0x10001
|
||
|
|
||
|
//
|
||
|
// ACPI could not find the link node referenced in a _PRT
|
||
|
// Argument 0 - Pointer to the device object
|
||
|
// Argument 1 - Pointer to the name we are looking for
|
||
|
// Argument 2 - Pointer to the PRT
|
||
|
//
|
||
|
#define ACPI_PRT_CANNOT_FIND_LINK_NODE 0x10002
|
||
|
|
||
|
//
|
||
|
// ACPI could not find a mapping in the _PRT package for a device
|
||
|
// Argument 0 - Pointer to the device object
|
||
|
// Argument 1 - The Device ID / Function Number
|
||
|
// Argument 2 - Pointer to the PRT
|
||
|
//
|
||
|
#define ACPI_PRT_CANNOT_FIND_DEVICE_ENTRY 0x10003
|
||
|
|
||
|
//
|
||
|
// ACPI found an entry in the _PRT for which the function ID isn't
|
||
|
// all F's. The Win98 behaviour is to bugcheck if it see this condition,
|
||
|
// so we do so all well. The generic format for a _PRT entry is such
|
||
|
// that the device number is specified, but the function number isn't.
|
||
|
// If it isn't done this way, then the machine vendor can introduce
|
||
|
// dangerous ambiguities
|
||
|
//
|
||
|
// Argument 0 - Pointer to the PRT object
|
||
|
// Argument 1 - Pointer to the current PRT Element
|
||
|
// Argument 2 - The DeviceID/FunctionID of the element
|
||
|
//
|
||
|
#define ACPI_PRT_HAS_INVALID_FUNCTION_NUMBERS 0x10005
|
||
|
|
||
|
//
|
||
|
// ACPI found a link node, but cannot disable it. Link nodes must
|
||
|
// be disable to allow for reprogramming
|
||
|
// Argument 0 - Pointer to the link node
|
||
|
//
|
||
|
#define ACPI_LINK_NODE_CANNOT_BE_DISABLED 0x10006
|
||
|
|
||
|
|
||
|
|
||
|
#ifdef ACPIPrint
|
||
|
#undef ACPIPrint
|
||
|
#endif
|
||
|
|
||
|
//
|
||
|
// Define the various debug masks and levels
|
||
|
//
|
||
|
#define ACPI_PRINT_CRITICAL DPFLTR_ERROR_LEVEL
|
||
|
#define ACPI_PRINT_FAILURE DPFLTR_ERROR_LEVEL
|
||
|
#define ACPI_PRINT_WARNING DPFLTR_WARNING_LEVEL
|
||
|
#define ACPI_PRINT_INFO DPFLTR_INFO_LEVEL
|
||
|
#define ACPI_PRINT_DPC DPFLTR_INFO_LEVEL + 1
|
||
|
#define ACPI_PRINT_IO DPFLTR_INFO_LEVEL + 2
|
||
|
#define ACPI_PRINT_ISR DPFLTR_INFO_LEVEL + 3
|
||
|
#define ACPI_PRINT_IRP DPFLTR_INFO_LEVEL + 4
|
||
|
#define ACPI_PRINT_LOADING DPFLTR_INFO_LEVEL + 5
|
||
|
#define ACPI_PRINT_MSI DPFLTR_INFO_LEVEL + 6
|
||
|
#define ACPI_PRINT_PNP DPFLTR_INFO_LEVEL + 7
|
||
|
#define ACPI_PRINT_PNP_STATE DPFLTR_INFO_LEVEL + 8
|
||
|
#define ACPI_PRINT_POWER DPFLTR_INFO_LEVEL + 9
|
||
|
#define ACPI_PRINT_REGISTRY DPFLTR_INFO_LEVEL + 10
|
||
|
#define ACPI_PRINT_REMOVE DPFLTR_INFO_LEVEL + 11
|
||
|
#define ACPI_PRINT_RESOURCES_1 DPFLTR_INFO_LEVEL + 12
|
||
|
#define ACPI_PRINT_RESOURCES_2 DPFLTR_INFO_LEVEL + 13
|
||
|
#define ACPI_PRINT_SXD DPFLTR_INFO_LEVEL + 14
|
||
|
#define ACPI_PRINT_THERMAL DPFLTR_INFO_LEVEL + 15
|
||
|
#define ACPI_PRINT_WAKE DPFLTR_INFO_LEVEL + 16
|
||
|
|
||
|
|
||
|
#define ACPIDebugEnter(name)
|
||
|
#define ACPIDebugExit(name)
|
||
|
|
||
|
#if DBG
|
||
|
|
||
|
VOID
|
||
|
ACPIDebugPrint(
|
||
|
ULONG DebugPrintLevel,
|
||
|
PCCHAR DebugMessage,
|
||
|
...
|
||
|
);
|
||
|
VOID
|
||
|
ACPIDebugDevicePrint(
|
||
|
ULONG DebugPrintLevel,
|
||
|
PVOID DebugExtension,
|
||
|
PCCHAR DebugMessage,
|
||
|
...
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
ACPIDebugThermalPrint(
|
||
|
ULONG DebugPrintLevel,
|
||
|
PVOID DebugExtension,
|
||
|
ULONGLONG DebugTime,
|
||
|
PCCHAR DebugMessage,
|
||
|
...
|
||
|
);
|
||
|
|
||
|
#define ACPIPrint(x) ACPIDebugPrint x
|
||
|
#define ACPIDevPrint(x) ACPIDebugDevicePrint x
|
||
|
#define ACPIThermalPrint(x) ACPIDebugThermalPrint x
|
||
|
#define ACPIBreakPoint() KdBreakPoint()
|
||
|
|
||
|
#else
|
||
|
|
||
|
#define ACPIPrint(x)
|
||
|
#define ACPIDevPrint(x)
|
||
|
#define ACPIThermalPrint(x)
|
||
|
#define ACPIBreakPoint()
|
||
|
|
||
|
#endif
|
||
|
|
||
|
#endif
|
||
|
|