windows-nt/Source/XPSP1/NT/base/busdrv/acpi/driver/inc/acpidbg.h

360 lines
14 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
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