From a9102619d488c92947605380f00c10e4651f4dc6 Mon Sep 17 00:00:00 2001 From: qhuang8 Date: Tue, 26 Jun 2007 08:14:44 +0000 Subject: 1. Create Intel Framework Module Package directory 2. Complete the public inclusion files git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2746 6f19259b-4bc3-4df7-8a09-765794883524 --- IntelFrameworkModulePkg/Include/Protocol/IsaAcpi.h | 177 +++++++++++++++++++++ .../Include/Protocol/PciHotPlugInit.h | 165 +++++++++++++++++++ .../Include/Protocol/PciHotPlugRequest.h | 54 +++++++ .../Include/Protocol/VgaMiniPort.h | 72 +++++++++ 4 files changed, 468 insertions(+) create mode 100644 IntelFrameworkModulePkg/Include/Protocol/IsaAcpi.h create mode 100644 IntelFrameworkModulePkg/Include/Protocol/PciHotPlugInit.h create mode 100644 IntelFrameworkModulePkg/Include/Protocol/PciHotPlugRequest.h create mode 100644 IntelFrameworkModulePkg/Include/Protocol/VgaMiniPort.h (limited to 'IntelFrameworkModulePkg/Include/Protocol') diff --git a/IntelFrameworkModulePkg/Include/Protocol/IsaAcpi.h b/IntelFrameworkModulePkg/Include/Protocol/IsaAcpi.h new file mode 100644 index 0000000000..8e7402d667 --- /dev/null +++ b/IntelFrameworkModulePkg/Include/Protocol/IsaAcpi.h @@ -0,0 +1,177 @@ +/*++ + +Copyright (c) 2006, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +Module Name: + + IsaAcpi.h + +Abstract: + + EFI ISA Acpi Protocol + +Revision History + +--*/ + +#ifndef __ISA_ACPI_H_ +#define __ISA_ACPI_H_ + +#define EFI_ISA_ACPI_PROTOCOL_GUID \ + { 0x64a892dc, 0x5561, 0x4536, { 0x92, 0xc7, 0x79, 0x9b, 0xfc, 0x18, 0x33, 0x55 } } + +typedef struct _EFI_ISA_ACPI_PROTOCOL EFI_ISA_ACPI_PROTOCOL; + +// +// Resource Attribute definition +// +#define EFI_ISA_ACPI_IRQ_TYPE_HIGH_TRUE_EDGE_SENSITIVE 0x01 +#define EFI_ISA_ACPI_IRQ_TYPE_LOW_TRUE_EDGE_SENSITIVE 0x02 +#define EFI_ISA_ACPI_IRQ_TYPE_HIGH_TRUE_LEVEL_SENSITIVE 0x04 +#define EFI_ISA_ACPI_IRQ_TYPE_LOW_TRUE_LEVEL_SENSITIVE 0x08 + +#define EFI_ISA_ACPI_DMA_SPEED_TYPE_MASK 0x03 + +#define EFI_ISA_ACPI_DMA_SPEED_TYPE_COMPATIBILITY 0x00 +#define EFI_ISA_ACPI_DMA_SPEED_TYPE_A 0x01 +#define EFI_ISA_ACPI_DMA_SPEED_TYPE_B 0x02 +#define EFI_ISA_ACPI_DMA_SPEED_TYPE_F 0x03 +#define EFI_ISA_ACPI_DMA_COUNT_BY_BYTE 0x04 +#define EFI_ISA_ACPI_DMA_COUNT_BY_WORD 0x08 +#define EFI_ISA_ACPI_DMA_BUS_MASTER 0x10 +#define EFI_ISA_ACPI_DMA_TRANSFER_TYPE_8_BIT 0x20 +#define EFI_ISA_ACPI_DMA_TRANSFER_TYPE_8_BIT_AND_16_BIT 0x40 +#define EFI_ISA_ACPI_DMA_TRANSFER_TYPE_16_BIT 0x80 + +#define EFI_ISA_ACPI_MEMORY_WIDTH_MASK 0x03 + +#define EFI_ISA_ACPI_MEMORY_WIDTH_8_BIT 0x00 +#define EFI_ISA_ACPI_MEMORY_WIDTH_16_BIT 0x01 +#define EFI_ISA_ACPI_MEMORY_WIDTH_8_BIT_AND_16_BIT 0x02 +#define EFI_ISA_ACPI_MEMORY_WRITEABLE 0x04 +#define EFI_ISA_ACPI_MEMORY_CACHEABLE 0x08 +#define EFI_ISA_ACPI_MEMORY_SHADOWABLE 0x10 +#define EFI_ISA_ACPI_MEMORY_EXPANSION_ROM 0x20 + +#define EFI_ISA_ACPI_IO_DECODE_10_BITS 0x01 +#define EFI_ISA_ACPI_IO_DECODE_16_BITS 0x02 + +// +// Resource List definition: +// at first, the resource was defined as below +// but in the future, it will be defined again that follow ACPI spec: ACPI resource type +// so that, in this driver, we can interpret the ACPI table and get the ISA device information. +// + +typedef enum { + EfiIsaAcpiResourceEndOfList, + EfiIsaAcpiResourceIo, + EfiIsaAcpiResourceMemory, + EfiIsaAcpiResourceDma, + EfiIsaAcpiResourceInterrupt +} EFI_ISA_ACPI_RESOURCE_TYPE; + +typedef struct { + EFI_ISA_ACPI_RESOURCE_TYPE Type; + UINT32 Attribute; + UINT32 StartRange; + UINT32 EndRange; +} EFI_ISA_ACPI_RESOURCE; + +typedef struct { + UINT32 HID; + UINT32 UID; +} EFI_ISA_ACPI_DEVICE_ID; + +typedef struct { + EFI_ISA_ACPI_DEVICE_ID Device; + EFI_ISA_ACPI_RESOURCE *ResourceItem; +} EFI_ISA_ACPI_RESOURCE_LIST; + +// +// Prototypes for the ISA ACPI Protocol +// +typedef +EFI_STATUS +(EFIAPI *EFI_ISA_ACPI_DEVICE_ENUMERATE) ( + IN EFI_ISA_ACPI_PROTOCOL *This, + OUT EFI_ISA_ACPI_DEVICE_ID **Device + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_ISA_ACPI_SET_DEVICE_POWER) ( + IN EFI_ISA_ACPI_PROTOCOL *This, + IN EFI_ISA_ACPI_DEVICE_ID *Device, + IN BOOLEAN OnOff + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_ISA_ACPI_GET_CUR_RESOURCE) ( + IN EFI_ISA_ACPI_PROTOCOL *This, + IN EFI_ISA_ACPI_DEVICE_ID *Device, + OUT EFI_ISA_ACPI_RESOURCE_LIST **ResourceList + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_ISA_ACPI_GET_POS_RESOURCE) ( + IN EFI_ISA_ACPI_PROTOCOL *This, + IN EFI_ISA_ACPI_DEVICE_ID *Device, + OUT EFI_ISA_ACPI_RESOURCE_LIST **ResourceList + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_ISA_ACPI_SET_RESOURCE) ( + IN EFI_ISA_ACPI_PROTOCOL *This, + IN EFI_ISA_ACPI_DEVICE_ID *Device, + IN EFI_ISA_ACPI_RESOURCE_LIST *ResourceList + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_ISA_ACPI_ENABLE_DEVICE) ( + IN EFI_ISA_ACPI_PROTOCOL *This, + IN EFI_ISA_ACPI_DEVICE_ID *Device, + IN BOOLEAN Enable + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_ISA_ACPI_INIT_DEVICE) ( + IN EFI_ISA_ACPI_PROTOCOL *This, + IN EFI_ISA_ACPI_DEVICE_ID *Device + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_ISA_ACPI_INTERFACE_INIT) ( + IN EFI_ISA_ACPI_PROTOCOL *This + ); + +// +// Interface structure for the ISA ACPI Protocol +// +struct _EFI_ISA_ACPI_PROTOCOL { + EFI_ISA_ACPI_DEVICE_ENUMERATE DeviceEnumerate; + EFI_ISA_ACPI_SET_DEVICE_POWER SetPower; + EFI_ISA_ACPI_GET_CUR_RESOURCE GetCurResource; + EFI_ISA_ACPI_GET_POS_RESOURCE GetPosResource; + EFI_ISA_ACPI_SET_RESOURCE SetResource; + EFI_ISA_ACPI_ENABLE_DEVICE EnableDevice; + EFI_ISA_ACPI_INIT_DEVICE InitDevice; + EFI_ISA_ACPI_INTERFACE_INIT InterfaceInit; +}; + +extern EFI_GUID gEfiIsaAcpiProtocolGuid; + +#endif diff --git a/IntelFrameworkModulePkg/Include/Protocol/PciHotPlugInit.h b/IntelFrameworkModulePkg/Include/Protocol/PciHotPlugInit.h new file mode 100644 index 0000000000..342d5b2aaf --- /dev/null +++ b/IntelFrameworkModulePkg/Include/Protocol/PciHotPlugInit.h @@ -0,0 +1,165 @@ +/** @file + This file declares EFI PCI Hot Plug Init Protocol + + Copyright (c) 2006, Intel Corporation + All rights reserved. This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + Module Name: PciHotPlugInit.h + + @par Revision Reference: + This protocol is defined in Framework of EFI Hot Plug Pci Initialization Protocol Spec + Version 0.9 + +**/ + +#ifndef __EFI_PCI_HOT_PLUG_INIT_H_ +#define __EFI_PCI_HOT_PLUG_INIT_H_ + +// +// Global ID for the PCI Hot Plug Protocol +// +#define EFI_PCI_HOT_PLUG_INIT_PROTOCOL_GUID \ + { 0xaa0e8bc1, 0xdabc, 0x46b0, {0xa8, 0x44, 0x37, 0xb8, 0x16, 0x9b, 0x2b, 0xea } } + + +typedef struct _EFI_PCI_HOT_PLUG_INIT_PROTOCOL EFI_PCI_HOT_PLUG_INIT_PROTOCOL; + +#define EFI_HPC_STATE_INITIALIZED 0x01 +#define EFI_HPC_STATE_ENABLED 0x02 + +typedef UINT16 EFI_HPC_STATE; + + +typedef struct{ + EFI_DEVICE_PATH_PROTOCOL *HpcDevicePath; + EFI_DEVICE_PATH_PROTOCOL *HpbDevicePath; +} EFI_HPC_LOCATION; + + +typedef enum{ + EfiPaddingPciBus, + EfiPaddingPciRootBridge +} EFI_HPC_PADDING_ATTRIBUTES; + +/** + Returns a list of root Hot Plug Controllers (HPCs) that require initialization + during the boot process. + + @param This Pointer to the EFI_PCI_HOT_PLUG_INIT_PROTOCOL instance. + @param HpcCount The number of root HPCs that were returned. + @param HpcList The list of root HPCs. HpcCount defines the number of + elements in this list. + + @retval EFI_SUCCESS HpcList was returned. + @retval EFI_OUT_OF_RESOURCES HpcList was not returned due to insufficient resources. + @retval EFI_INVALID_PARAMETER HpcCount is NULL or HpcList is NULL. + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_GET_ROOT_HPC_LIST) ( + IN EFI_PCI_HOT_PLUG_INIT_PROTOCOL *This, + OUT UINTN *HpcCount, + OUT EFI_HPC_LOCATION **HpcList +); + +/** + Initializes one root Hot Plug Controller (HPC). This process may causes + initialization of its subordinate buses. + + @param This Pointer to the EFI_PCI_HOT_PLUG_INIT_PROTOCOL instance. + @param HpcDevicePath The device path to the HPC that is being initialized. + @param HpcPciAddress The address of the HPC function on the PCI bus. + @param Event The event that should be signaled when the HPC initialization + is complete. + @param HpcState The state of the HPC hardware. + + @retval EFI_SUCCESS If Event is NULL, the specific HPC was successfully + initialized. If Event is not NULL, Event will be signaled at a later time + when initialization is complete. + @retval EFI_UNSUPPORTED This instance of EFI_PCI_HOT_PLUG_INIT_PROTOCOL + does not support the specified HPC. + @retval EFI_OUT_OF_RESOURCES Initialization failed due to insufficient + resources. + @retval EFI_INVALID_PARAMETER HpcState is NULL. + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_INITIALIZE_ROOT_HPC) ( + IN EFI_PCI_HOT_PLUG_INIT_PROTOCOL *This, + IN EFI_DEVICE_PATH_PROTOCOL *HpcDevicePath, + IN UINT64 HpcPciAddress, + IN EFI_EVENT Event, OPTIONAL + OUT EFI_HPC_STATE *HpcState +); + +/** + Returns the resource padding that is required by the PCI bus that is controlled + by the specified Hot Plug Controller (HPC). + + @param This Pointer to the EFI_PCI_HOT_PLUG_INIT_PROTOCOL instance. + @param HpcDevicePath The device path to the HPC. + @param HpcPciAddress The address of the HPC function on the PCI bus. + @param HpcState The state of the HPC hardware. + @param Padding The amount of resource padding that is required by the + PCI bus under the control of the specified HPC. + @param Attributes Describes how padding is accounted for. The padding + is returned in the form of ACPI 2.0 resource descriptors. + + @retval EFI_SUCCESS The resource padding was successfully returned. + @retval EFI_UNSUPPORTED This instance of the EFI_PCI_HOT_PLUG_INIT_PROTOCOL + does not support the specified HPC. + @retval EFI_NOT_READY This function was called before HPC initialization is complete. + @retval EFI_INVALID_PARAMETER HpcState or Padding or Attributes is NULL. + @retval EFI_OUT_OF_RESOURCES ACPI 2.0 resource descriptors for Padding + cannot be allocated due to insufficient resources. + +**/ +typedef +EFI_STATUS +(EFIAPI *EFI_GET_PCI_HOT_PLUG_PADDING) ( + IN EFI_PCI_HOT_PLUG_INIT_PROTOCOL *This, + IN EFI_DEVICE_PATH_PROTOCOL *HpcDevicePath, + IN UINT64 HpcPciAddress, + OUT EFI_HPC_STATE *HpcState, + OUT VOID **Padding, + OUT EFI_HPC_PADDING_ATTRIBUTES *Attributes +); + + +// +// Prototypes for the PCI Hot Plug Init Protocol +// + +/** + @par Protocol Description: + This protocol provides the necessary functionality to initialize the + Hot Plug Controllers (HPCs) and the buses that they control. This protocol + also provides information regarding resource padding. + + @param GetRootHpcList + Returns a list of root HPCs and the buses that they control. + + @param InitializeRootHpc + Initializes the specified root HPC. + + @param GetResourcePadding + Returns the resource padding that is required by the HPC. + +**/ +struct _EFI_PCI_HOT_PLUG_INIT_PROTOCOL { + EFI_GET_ROOT_HPC_LIST GetRootHpcList; + EFI_INITIALIZE_ROOT_HPC InitializeRootHpc; + EFI_GET_PCI_HOT_PLUG_PADDING GetResourcePadding; +}; + +extern EFI_GUID gEfiPciHotPlugInitProtocolGuid; + +#endif diff --git a/IntelFrameworkModulePkg/Include/Protocol/PciHotPlugRequest.h b/IntelFrameworkModulePkg/Include/Protocol/PciHotPlugRequest.h new file mode 100644 index 0000000000..0aa641e3c0 --- /dev/null +++ b/IntelFrameworkModulePkg/Include/Protocol/PciHotPlugRequest.h @@ -0,0 +1,54 @@ +/*++ + +Copyright (c) 2006, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +Module Name: + + PciHotPlugRequest.h + +Abstract: + + + +--*/ + +#ifndef __PCI_HOTPLUG_REQUEST_H_ +#define __PCI_HOTPLUG_REQUEST_H_ + +#define EFI_PCI_HOTPLUG_REQUEST_PROTOCOL_GUID \ +{0x19cb87ab,0x2cb9,{0x4665,0x83,0x60,0xdd,0xcf,0x60,0x54,0xf7,0x9d}} + +typedef enum { + EfiPciHotPlugRequestAdd, + EfiPciHotplugRequestRemove +} EFI_PCI_HOTPLUG_OPERATION; + +typedef struct _EFI_PCI_HOTPLUG_REQUEST_PROTOCOL EFI_PCI_HOTPLUG_REQUEST_PROTOCOL; + +typedef +EFI_STATUS +(EFIAPI *EFI_PCI_HOTPLUG_REQUEST_NOTIFY) ( + IN EFI_PCI_HOTPLUG_REQUEST_PROTOCOL *This, + IN EFI_PCI_HOTPLUG_OPERATION Operation, + IN EFI_HANDLE Controller, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL, + IN OUT UINT8 *NumberOfChildren, + IN OUT EFI_HANDLE *ChildHandleBuffer +); + + + +struct _EFI_PCI_HOTPLUG_REQUEST_PROTOCOL { + EFI_PCI_HOTPLUG_REQUEST_NOTIFY Notify; +}; + +extern EFI_GUID gEfiPciHotPlugRequestProtocolGuid; + +#endif diff --git a/IntelFrameworkModulePkg/Include/Protocol/VgaMiniPort.h b/IntelFrameworkModulePkg/Include/Protocol/VgaMiniPort.h new file mode 100644 index 0000000000..b20a3afb4d --- /dev/null +++ b/IntelFrameworkModulePkg/Include/Protocol/VgaMiniPort.h @@ -0,0 +1,72 @@ +/*++ + +Copyright (c) 2006, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + +Module Name: + + VgaMiniPort.h + +Abstract: + + Vga Mini port binding for a VGA controller + +Revision History + +--*/ + +#ifndef __VGA_MINI_PORT_H_ +#define __VGA_MINI_PORT_H_ + +#define EFI_VGA_MINI_PORT_PROTOCOL_GUID \ + { \ + 0xc7735a2f, 0x88f5, 0x4882, {0xae, 0x63, 0xfa, 0xac, 0x8c, 0x8b, 0x86, 0xb3 } \ + } + +typedef struct _EFI_VGA_MINI_PORT_PROTOCOL EFI_VGA_MINI_PORT_PROTOCOL; + +typedef +EFI_STATUS +(EFIAPI *EFI_VGA_MINI_PORT_SET_MODE) ( + IN EFI_VGA_MINI_PORT_PROTOCOL * This, + IN UINTN ModeNumber + ); + +/*++ + + Routine Description: + Sets the text display mode of a VGA controller + + Arguments: + This - Protocol instance pointer. + Mode - Mode number. 0 - 80x25 1-80x50 + + Returns: + EFI_SUCCESS - The mode was set + EFI_DEVICE_ERROR - The device is not functioning properly. + +--*/ +struct _EFI_VGA_MINI_PORT_PROTOCOL { + EFI_VGA_MINI_PORT_SET_MODE SetMode; + + UINT64 VgaMemoryOffset; + UINT64 CrtcAddressRegisterOffset; + UINT64 CrtcDataRegisterOffset; + + UINT8 VgaMemoryBar; + UINT8 CrtcAddressRegisterBar; + UINT8 CrtcDataRegisterBar; + + UINT8 MaxMode; +}; + +extern EFI_GUID gEfiVgaMiniPortProtocolGuid; + +#endif -- cgit v1.2.3