123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298 |
- /** @file
- EFI ISA ACPI Protocol is used to enumerate and manage all the ISA controllers on
- the platform's ISA Bus.
- Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #ifndef __ISA_ACPI_H_
- #define __ISA_ACPI_H_
- ///
- /// Global ID for the EFI ISA ACPI Protocol.
- ///
- #define EFI_ISA_ACPI_PROTOCOL_GUID \
- { \
- 0x64a892dc, 0x5561, 0x4536, { 0x92, 0xc7, 0x79, 0x9b, 0xfc, 0x18, 0x33, 0x55 } \
- }
- ///
- /// Forward declaration fo the EFI ISA ACPI Protocol
- ///
- typedef struct _EFI_ISA_ACPI_PROTOCOL EFI_ISA_ACPI_PROTOCOL;
- ///
- /// ISA ACPI Protocol interrupt resource attributes.
- ///
- #define EFI_ISA_ACPI_IRQ_TYPE_HIGH_TRUE_EDGE_SENSITIVE 0x01 ///< Edge triggered interrupt on a rising edge.
- #define EFI_ISA_ACPI_IRQ_TYPE_LOW_TRUE_EDGE_SENSITIVE 0x02 ///< Edge triggered interrupt on a falling edge.
- #define EFI_ISA_ACPI_IRQ_TYPE_HIGH_TRUE_LEVEL_SENSITIVE 0x04 ///< Level sensitive interrupt active high.
- #define EFI_ISA_ACPI_IRQ_TYPE_LOW_TRUE_LEVEL_SENSITIVE 0x08 ///< Level sensitive interrupt active low.
- ///
- /// ISA ACPI Protocol DMA resource attributes.
- ///
- #define EFI_ISA_ACPI_DMA_SPEED_TYPE_MASK 0x03 ///< Bit mask of supported DMA speed attributes.
- #define EFI_ISA_ACPI_DMA_SPEED_TYPE_COMPATIBILITY 0x00 ///< ISA controller supports compatibility mode DMA transfers.
- #define EFI_ISA_ACPI_DMA_SPEED_TYPE_A 0x01 ///< ISA controller supports type A DMA transfers.
- #define EFI_ISA_ACPI_DMA_SPEED_TYPE_B 0x02 ///< ISA controller supports type B DMA transfers.
- #define EFI_ISA_ACPI_DMA_SPEED_TYPE_F 0x03 ///< ISA controller supports type F DMA transfers.
- #define EFI_ISA_ACPI_DMA_COUNT_BY_BYTE 0x04 ///< ISA controller increments DMA address by bytes (8-bit).
- #define EFI_ISA_ACPI_DMA_COUNT_BY_WORD 0x08 ///< ISA controller increments DMA address by words (16-bit).
- #define EFI_ISA_ACPI_DMA_BUS_MASTER 0x10 ///< ISA controller is a DMA bus master.
- #define EFI_ISA_ACPI_DMA_TRANSFER_TYPE_8_BIT 0x20 ///< ISA controller only supports 8-bit DMA transfers.
- #define EFI_ISA_ACPI_DMA_TRANSFER_TYPE_8_BIT_AND_16_BIT 0x40 ///< ISA controller both 8-bit and 16-bit DMA transfers.
- #define EFI_ISA_ACPI_DMA_TRANSFER_TYPE_16_BIT 0x80 ///< ISA controller only supports 16-bit DMA transfers.
- ///
- /// ISA ACPI Protocol MMIO resource attributes
- ///
- #define EFI_ISA_ACPI_MEMORY_WIDTH_MASK 0x03 ///< Bit mask of supported ISA memory width attributes.
- #define EFI_ISA_ACPI_MEMORY_WIDTH_8_BIT 0x00 ///< ISA MMIO region only supports 8-bit access.
- #define EFI_ISA_ACPI_MEMORY_WIDTH_16_BIT 0x01 ///< ISA MMIO region only supports 16-bit access.
- #define EFI_ISA_ACPI_MEMORY_WIDTH_8_BIT_AND_16_BIT 0x02 ///< ISA MMIO region supports both 8-bit and 16-bit access.
- #define EFI_ISA_ACPI_MEMORY_WRITEABLE 0x04 ///< ISA MMIO region supports write transactions.
- #define EFI_ISA_ACPI_MEMORY_CACHEABLE 0x08 ///< ISA MMIO region supports being cached.
- #define EFI_ISA_ACPI_MEMORY_SHADOWABLE 0x10 ///< ISA MMIO region may be shadowed.
- #define EFI_ISA_ACPI_MEMORY_EXPANSION_ROM 0x20 ///< ISA MMIO region is an expansion ROM.
- ///
- /// ISA ACPI Protocol I/O resource attributes
- ///
- #define EFI_ISA_ACPI_IO_DECODE_10_BITS 0x01 ///< ISA controllers uses a 10-bit address decoder for I/O cycles.
- #define EFI_ISA_ACPI_IO_DECODE_16_BITS 0x02 ///< ISA controllers uses a 16-bit address decoder for I/O cycles.
- ///
- /// EFI ISA ACPI resource type
- ///
- typedef enum {
- EfiIsaAcpiResourceEndOfList, ///< Marks the end if a resource list.
- EfiIsaAcpiResourceIo, ///< ISA I/O port resource range.
- EfiIsaAcpiResourceMemory, ///< ISA MMIO resource range.
- EfiIsaAcpiResourceDma, ///< ISA DMA resource.
- EfiIsaAcpiResourceInterrupt ///< ISA interrupt resource.
- } EFI_ISA_ACPI_RESOURCE_TYPE;
- ///
- /// EFI ISA ACPI generic resource structure
- ///
- typedef struct {
- EFI_ISA_ACPI_RESOURCE_TYPE Type; ///< The type of resource (I/O, MMIO, DMA, Interrupt).
- UINT32 Attribute; ///< Bit mask of attributes associated with this resource. See EFI_ISA_ACPI_xxx macros for valid combinations.
- UINT32 StartRange; ///< The start of the resource range.
- UINT32 EndRange; ///< The end of the resource range.
- } EFI_ISA_ACPI_RESOURCE;
- ///
- /// EFI ISA ACPI resource device identifier
- ///
- typedef struct {
- UINT32 HID; ///< The ACPI Hardware Identifier value associated with an ISA controller. Matchs ACPI DSDT contents.
- UINT32 UID; ///< The ACPI Unique Identifier value associated with an ISA controller. Matches ACPI DSDT contents.
- } EFI_ISA_ACPI_DEVICE_ID;
- ///
- /// EFI ISA ACPI resource list
- ///
- typedef struct {
- EFI_ISA_ACPI_DEVICE_ID Device; ///< The ACPI HID/UID associated with an ISA controller.
- EFI_ISA_ACPI_RESOURCE *ResourceItem; ///< A pointer to the list of resources associated with an ISA controller.
- } EFI_ISA_ACPI_RESOURCE_LIST;
- /**
- Enumerates the ISA controllers on an ISA bus.
- This service allows all the ISA controllers on an ISA bus to be enumerated. If
- Device is a pointer to a NULL value, then the first ISA controller on the ISA
- bus is returned in Device and EFI_SUCCESS is returned. If Device is a pointer
- to a value that was returned on a prior call to DeviceEnumerate(), then the next
- ISA controller on the ISA bus is returned in Device and EFI_SUCCESS is returned.
- If Device is a pointer to the last ISA controller on the ISA bus, then
- EFI_NOT_FOUND is returned.
- @param[in] This The pointer to the EFI_ISA_ACPI_PROTOCOL instance.
- @param[out] Device The pointer to an ISA controller named by ACPI HID/UID.
- @retval EFI_SUCCESS The next ISA controller on the ISA bus was returned.
- @retval EFI_NOT_FOUND No device found.
- **/
- typedef
- EFI_STATUS
- (EFIAPI *EFI_ISA_ACPI_DEVICE_ENUMERATE)(
- IN EFI_ISA_ACPI_PROTOCOL *This,
- OUT EFI_ISA_ACPI_DEVICE_ID **Device
- );
- /**
- Sets the power state of an ISA controller.
- This services sets the power state of the ISA controller specified by Device to
- the power state specified by OnOff. TRUE denotes on, FALSE denotes off.
- If the power state is successfully set on the ISA Controller, then
- EFI_SUCCESS is returned.
- @param[in] This The pointer to the EFI_ISA_ACPI_PROTOCOL instance.
- @param[in] Device The pointer to an ISA controller named by ACPI HID/UID.
- @param[in] OnOff TRUE denotes on, FALSE denotes off.
- @retval EFI_SUCCESS Successfully set the power state of the ISA controller.
- @retval Other The ISA controller could not be placed in the requested power state.
- **/
- 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
- );
- /**
- Retrieves the current set of resources associated with an ISA controller.
- Retrieves the set of I/O, MMIO, DMA, and interrupt resources currently
- assigned to the ISA controller specified by Device. These resources
- are returned in ResourceList.
- @param[in] This The pointer to the EFI_ISA_ACPI_PROTOCOL instance.
- @param[in] Device The pointer to an ISA controller named by ACPI HID/UID.
- @param[out] ResourceList The pointer to the current resource list for Device.
- @retval EFI_SUCCESS Successfully retrieved the current resource list.
- @retval EFI_NOT_FOUND The resource list could not be retrieved.
- **/
- 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
- );
- /**
- Retrieves the set of possible resources that may be assigned to an ISA controller
- with SetResource().
- Retrieves the possible sets of I/O, MMIO, DMA, and interrupt resources for the
- ISA controller specified by Device. The sets are returned in ResourceList.
- @param[in] This The pointer to the EFI_ISA_ACPI_PROTOCOL instance.
- @param[in] Device The pointer to an ISA controller named by ACPI HID/UID.
- @param[out] ResourceList The pointer to the returned list of resource lists.
- @retval EFI_UNSUPPORTED This service is not supported.
- **/
- 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
- );
- /**
- Assigns resources to an ISA controller.
- Assigns the I/O, MMIO, DMA, and interrupt resources specified by ResourceList
- to the ISA controller specified by Device. ResourceList must match a resource list returned by GetPosResource() for the same ISA controller.
- @param[in] This The pointer to the EFI_ISA_ACPI_PROTOCOL instance.
- @param[in] Device The pointer to an ISA controller named by ACPI HID/UID.
- @param[in] ResourceList The pointer to a resources list that must be one of the
- resource lists returned by GetPosResource() for the
- ISA controller specified by Device.
- @retval EFI_SUCCESS Successfully set resources on the ISA controller.
- @retval Other The resources could not be set for the ISA controller.
- **/
- 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
- );
- /**
- Enables or disables an ISA controller.
- @param[in] This The pointer to the EFI_ISA_ACPI_PROTOCOL instance.
- @param[in] Device The pointer to the ISA controller to enable/disable.
- @param[in] Enable TRUE to enable the ISA controller. FALSE to disable the
- ISA controller.
- @retval EFI_SUCCESS Successfully enabled/disabled the ISA controller.
- @retval Other The ISA controller could not be placed in the requested state.
- **/
- 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
- );
- /**
- Initializes an ISA controller, so that it can be used. This service must be called
- before SetResource(), EnableDevice(), or SetPower() will behave as expected.
- @param[in] This The pointer to the EFI_ISA_ACPI_PROTOCOL instance.
- @param[in] Device The pointer to an ISA controller named by ACPI HID/UID.
- @retval EFI_SUCCESS Successfully initialized an ISA controller.
- @retval Other The ISA controller could not be initialized.
- **/
- typedef
- EFI_STATUS
- (EFIAPI *EFI_ISA_ACPI_INIT_DEVICE)(
- IN EFI_ISA_ACPI_PROTOCOL *This,
- IN EFI_ISA_ACPI_DEVICE_ID *Device
- );
- /**
- Initializes all the HW states required for the ISA controllers on the ISA bus
- to be enumerated and managed by the rest of the services in this prorotol.
- This service must be called before any of the other services in this
- protocol will function as expected.
- @param[in] This The pointer to the EFI_ISA_ACPI_PROTOCOL instance.
- @retval EFI_SUCCESS Successfully initialized all required hardware states.
- @retval Other The ISA interface could not be initialized.
- **/
- typedef
- EFI_STATUS
- (EFIAPI *EFI_ISA_ACPI_INTERFACE_INIT)(
- IN EFI_ISA_ACPI_PROTOCOL *This
- );
- ///
- /// The EFI_ISA_ACPI_PROTOCOL provides the services to enumerate and manage
- /// ISA controllers on an ISA bus. These services include the ability to initialize,
- /// enable, disable, and manage the power state of ISA controllers. It also
- /// includes services to query current resources, query possible resources,
- /// and assign resources to an ISA controller.
- ///
- 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
|