| /*++ | |
| 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 |