+++ /dev/null
-/** @file\r
-Update the _PRT and _PRW method for pci devices\r
-\r
-Copyright (c) 2013-2015 Intel Corporation.\r
-\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-\r
-**/\r
-#ifndef _ACPI_PCI_UPDATE_H_\r
-#define _ACPI_PCI_UPDATE_H_\r
-\r
-\r
-//\r
-// Primary OpCode\r
-//\r
-#define AML_ZERO_OP 0x00\r
-#define AML_ONE_OP 0x01\r
-#define AML_ALIAS_OP 0x06\r
-#define AML_NAME_OP 0x08\r
-#define AML_BYTE_PREFIX 0x0a\r
-#define AML_WORD_PREFIX 0x0b\r
-#define AML_DWORD_PREFIX 0x0c\r
-#define AML_STRING_PREFIX 0x0d\r
-#define AML_QWORD_PREFIX 0x0e\r
-#define AML_SCOPE_OP 0x10\r
-#define AML_BUFFER_OP 0x11\r
-#define AML_PACKAGE_OP 0x12\r
-#define AML_VAR_PACKAGE_OP 0x13\r
-#define AML_METHOD_OP 0x14\r
-#define AML_DUAL_NAME_PREFIX 0x2e\r
-#define AML_MULTI_NAME_PREFIX 0x2f\r
-#define AML_NAME_CHAR_A 0x41\r
-#define AML_NAME_CHAR_B 0x42\r
-#define AML_NAME_CHAR_C 0x43\r
-#define AML_NAME_CHAR_D 0x44\r
-#define AML_NAME_CHAR_E 0x45\r
-#define AML_NAME_CHAR_F 0x46\r
-#define AML_NAME_CHAR_G 0x47\r
-#define AML_NAME_CHAR_H 0x48\r
-#define AML_NAME_CHAR_I 0x49\r
-#define AML_NAME_CHAR_J 0x4a\r
-#define AML_NAME_CHAR_K 0x4b\r
-#define AML_NAME_CHAR_L 0x4c\r
-#define AML_NAME_CHAR_M 0x4d\r
-#define AML_NAME_CHAR_N 0x4e\r
-#define AML_NAME_CHAR_O 0x4f\r
-#define AML_NAME_CHAR_P 0x50\r
-#define AML_NAME_CHAR_Q 0x51\r
-#define AML_NAME_CHAR_R 0x52\r
-#define AML_NAME_CHAR_S 0x53\r
-#define AML_NAME_CHAR_T 0x54\r
-#define AML_NAME_CHAR_U 0x55\r
-#define AML_NAME_CHAR_V 0x56\r
-#define AML_NAME_CHAR_W 0x57\r
-#define AML_NAME_CHAR_X 0x58\r
-#define AML_NAME_CHAR_Y 0x59\r
-#define AML_NAME_CHAR_Z 0x5a\r
-#define AML_ROOT_CHAR 0x5c\r
-#define AML_PARENT_PREFIX_CHAR 0x5e\r
-#define AML_NAME_CHAR__ 0x5f\r
-#define AML_LOCAL0 0x60\r
-#define AML_LOCAL1 0x61\r
-#define AML_LOCAL2 0x62\r
-#define AML_LOCAL3 0x63\r
-#define AML_LOCAL4 0x64\r
-#define AML_LOCAL5 0x65\r
-#define AML_LOCAL6 0x66\r
-#define AML_LOCAL7 0x67\r
-#define AML_ARG0 0x68\r
-#define AML_ARG1 0x69\r
-#define AML_ARG2 0x6a\r
-#define AML_ARG3 0x6b\r
-#define AML_ARG4 0x6c\r
-#define AML_ARG5 0x6d\r
-#define AML_ARG6 0x6e\r
-#define AML_STORE_OP 0x70\r
-#define AML_REF_OF_OP 0x71\r
-#define AML_ADD_OP 0x72\r
-#define AML_CONCAT_OP 0x73\r
-#define AML_SUBTRACT_OP 0x74\r
-#define AML_INCREMENT_OP 0x75\r
-#define AML_DECREMENT_OP 0x76\r
-#define AML_MULTIPLY_OP 0x77\r
-#define AML_DIVIDE_OP 0x78\r
-#define AML_SHIFT_LEFT_OP 0x79\r
-#define AML_SHIFT_RIGHT_OP 0x7a\r
-#define AML_AND_OP 0x7b\r
-#define AML_NAND_OP 0x7c\r
-#define AML_OR_OP 0x7d\r
-#define AML_NOR_OP 0x7e\r
-#define AML_XOR_OP 0x7f\r
-#define AML_NOT_OP 0x80\r
-#define AML_FIND_SET_LEFT_BIT_OP 0x81\r
-#define AML_FIND_SET_RIGHT_BIT_OP 0x82\r
-#define AML_DEREF_OF_OP 0x83\r
-#define AML_CONCAT_RES_OP 0x84\r
-#define AML_MOD_OP 0x85\r
-#define AML_NOTIFY_OP 0x86\r
-#define AML_SIZE_OF_OP 0x87\r
-#define AML_INDEX_OP 0x88\r
-#define AML_MATCH_OP 0x89\r
-#define AML_CREATE_DWORD_FIELD_OP 0x8a\r
-#define AML_CREATE_WORD_FIELD_OP 0x8b\r
-#define AML_CREATE_BYTE_FIELD_OP 0x8c\r
-#define AML_CREATE_BIT_FIELD_OP 0x8d\r
-#define AML_OBJECT_TYPE_OP 0x8e\r
-#define AML_CREATE_QWORD_FIELD_OP 0x8f\r
-#define AML_LAND_OP 0x90\r
-#define AML_LOR_OP 0x91\r
-#define AML_LNOT_OP 0x92\r
-#define AML_LEQUAL_OP 0x93\r
-#define AML_LGREATER_OP 0x94\r
-#define AML_LLESS_OP 0x95\r
-#define AML_TO_BUFFER_OP 0x96\r
-#define AML_TO_DEC_STRING_OP 0x97\r
-#define AML_TO_HEX_STRING_OP 0x98\r
-#define AML_TO_INTEGER_OP 0x99\r
-#define AML_TO_STRING_OP 0x9c\r
-#define AML_COPY_OBJECT_OP 0x9d\r
-#define AML_MID_OP 0x9e\r
-#define AML_CONTINUE_OP 0x9f\r
-#define AML_IF_OP 0xa0\r
-#define AML_ELSE_OP 0xa1\r
-#define AML_WHILE_OP 0xa2\r
-#define AML_NOOP_OP 0xa3\r
-#define AML_RETURN_OP 0xa4\r
-#define AML_BREAK_OP 0xa5\r
-#define AML_BREAK_POINT_OP 0xcc\r
-#define AML_ONES_OP 0xff\r
-\r
-//\r
-// Extended OpCode\r
-//\r
-#define AML_EXT_OP 0x5b\r
-\r
-#define AML_EXT_MUTEX_OP 0x01\r
-#define AML_EXT_EVENT_OP 0x02\r
-#define AML_EXT_COND_REF_OF_OP 0x12\r
-#define AML_EXT_CREATE_FIELD_OP 0x13\r
-#define AML_EXT_LOAD_TABLE_OP 0x1f\r
-#define AML_EXT_LOAD_OP 0x20\r
-#define AML_EXT_STALL_OP 0x21\r
-#define AML_EXT_SLEEP_OP 0x22\r
-#define AML_EXT_ACQUIRE_OP 0x23\r
-#define AML_EXT_SIGNAL_OP 0x24\r
-#define AML_EXT_WAIT_OP 0x25\r
-#define AML_EXT_RESET_OP 0x26\r
-#define AML_EXT_RELEASE_OP 0x27\r
-#define AML_EXT_FROM_BCD_OP 0x28\r
-#define AML_EXT_TO_BCD_OP 0x29\r
-#define AML_EXT_UNLOAD_OP 0x2a\r
-#define AML_EXT_REVISION_OP 0x30\r
-#define AML_EXT_DEBUG_OP 0x31\r
-#define AML_EXT_FATAL_OP 0x32\r
-#define AML_EXT_TIMER_OP 0x33\r
-#define AML_EXT_REGION_OP 0x80\r
-#define AML_EXT_FIELD_OP 0x81\r
-#define AML_EXT_DEVICE_OP 0x82\r
-#define AML_EXT_PROCESSOR_OP 0x83\r
-#define AML_EXT_POWER_RES_OP 0x84\r
-#define AML_EXT_THERMAL_ZONE_OP 0x85\r
-#define AML_EXT_INDEX_FIELD_OP 0x86\r
-#define AML_EXT_BANK_FIELD_OP 0x87\r
-#define AML_EXT_DATA_REGION_OP 0x88\r
-\r
-#pragma pack(1)\r
-\r
-typedef struct {\r
- UINT32 BridgeAddress;\r
- UINT32 DeviceAddress;\r
- UINT8 INTA[2]; // the first member record the 8259 link, the second member record the io apic irq number\r
- UINT8 INTB[2];\r
- UINT8 INTC[2];\r
- UINT8 INTD[2];\r
-\r
- UINT8 GPEPin;\r
- UINT8 SxNum;\r
-} PCI_DEVICE_INFO;\r
-\r
-#pragma pack()\r
-\r
-#define PCI_DEVICE_INFO_MAX_NUM 50\r
-#define CURRENT_PCI_DEVICE_NUM 13\r
-\r
-#define PIRQ_LINKA 1\r
-#define PIRQ_LINKB 2\r
-#define PIRQ_LINKC 3\r
-#define PIRQ_LINKD 4\r
-#define PIRQ_LINKE 5\r
-#define PIRQ_LINKF 6\r
-#define PIRQ_LINKG 7\r
-#define PIRQ_LINKH 8\r
-#define PIRQ_INVALID 0xFF\r
-\r
-typedef struct _PCI_DEVICE_SETTING{\r
- UINT8 PciDeviceInfoNumber;\r
- PCI_DEVICE_INFO PciDeviceInfo[PCI_DEVICE_INFO_MAX_NUM];\r
-}PCI_DEVICE_SETTING;\r
-\r
-typedef struct _AML_BYTE_ENCODING AML_BYTE_ENCODING;\r
-\r
-//\r
-// AML Handle Entry definition.\r
-//\r
-// Signature must be set to EFI_AML_HANDLE_SIGNATURE or EFI_AML_ROOT_HANDLE_SIGNATURE\r
-// Buffer is the ACPI node buffer pointer, the first/second bytes are opcode.\r
-// This buffer should not be freed.\r
-// Size is the total size of this ACPI node buffer.\r
-//\r
-typedef struct {\r
- UINT32 Signature;\r
- UINT8 *Buffer;\r
- UINTN Size;\r
- AML_BYTE_ENCODING *AmlByteEncoding;\r
- BOOLEAN Modified;\r
-} EFI_AML_HANDLE;\r
-\r
-typedef UINT32 AML_OP_PARSE_INDEX;\r
-\r
-typedef UINT32 AML_OP_PARSE_FORMAT;\r
-\r
-typedef UINT32 AML_OP_ATTRIBUTE;\r
-\r
-struct _AML_BYTE_ENCODING {\r
- UINT8 OpCode;\r
- UINT8 SubOpCode;\r
- AML_OP_PARSE_INDEX MaxIndex;\r
- AML_OP_PARSE_FORMAT Format[6];\r
- AML_OP_ATTRIBUTE Attribute;\r
-};\r
-\r
-\r
-//\r
-// Check device info fucntion prototype\r
-//\r
-typedef\r
-BOOLEAN\r
-(* CHECK_HANDLE_INFO) (\r
- IN EFI_ACPI_SDT_PROTOCOL *AcpiSdt,\r
- IN EFI_ACPI_HANDLE CheckHandle,\r
- IN VOID *Context\r
- );\r
-\r
-extern EFI_ACPI_HANDLE mDsdtHandle;\r
-extern EFI_ACPI_SDT_PROTOCOL *mAcpiSdt;\r
-\r
-/**\r
- Init Pci Device Structure\r
-\r
- @param mConfigData - Pointer of Pci Device information Structure\r
-\r
-**/\r
-VOID\r
-InitPciDeviceInfoStructure (\r
- PCI_DEVICE_SETTING *mConfigData\r
- );\r
-/**\r
- update pci routing information in acpi table based on pcd settings\r
-\r
- @param AcpiSdt Pointer to Acpi SDT protocol\r
- @param DsdtHandle ACPI root handle\r
- @param PciDeviceInfo Pointer to PCI_DEVICE_INFO\r
-\r
-**/\r
-EFI_STATUS\r
-SdtUpdatePciRouting (\r
- IN EFI_ACPI_SDT_PROTOCOL *AcpiSdt,\r
- IN EFI_ACPI_HANDLE DsdtHandle,\r
- IN PCI_DEVICE_INFO *PciDeviceInfo\r
- );\r
-\r
-\r
-/**\r
- update power resource wake up information in acpi table based on pcd settings\r
-\r
- @param AcpiSdt Pointer to Acpi SDT protocol\r
- @param DsdtHandle ACPI root handle\r
- @param PciDeviceInfo Pointer to PCI_DEVICE_INFO\r
-\r
-**/\r
-EFI_STATUS\r
-SdtUpdatePowerWake (\r
- IN EFI_ACPI_SDT_PROTOCOL *AcpiSdt,\r
- IN EFI_ACPI_HANDLE DsdtHandle,\r
- IN PCI_DEVICE_INFO *PciDeviceInfo\r
- );\r
-\r
-/**\r
- Get the root bridge handle by scanning the acpi table\r
-\r
- @param AcpiSdt Pointer to Acpi SDT protocol\r
- @param DsdtHandle ACPI root handle\r
-\r
- @retval EFI_ACPI_HANDLE the handle of the root bridge\r
-**/\r
-EFI_ACPI_HANDLE\r
-SdtGetRootBridgeHandle (\r
- IN EFI_ACPI_SDT_PROTOCOL *AcpiSdt,\r
- IN EFI_ACPI_HANDLE DsdtHandle\r
- );\r
-\r
-/**\r
- Check input Pci device info is changed from the default values\r
- @param PciDeviceInfo Pointer to PCI_DEVICE_INFO\r
- @param UpdatePRT Pointer to BOOLEAN\r
- @param UpdatePRW Pointer to BOOLEAN\r
-\r
-**/\r
-VOID\r
-SdtCheckPciDeviceInfoChanged (\r
- IN PCI_DEVICE_INFO *PciDeviceInfo,\r
- IN BOOLEAN *UpdatePRT,\r
- IN BOOLEAN *UpdatePRW\r
- );\r
-#endif\r