/** @file | |
EFI PCAT ISA ACPI Driver for a Generic PC Platform | |
Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR> | |
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. | |
**/ | |
#ifndef _PCAT_ISA_ACPI_H_ | |
#define _PCAT_ISA_ACPI_H_ | |
#include <PiDxe.h> | |
#include <IndustryStandard/Pci.h> | |
#include <Protocol/DevicePath.h> | |
#include <Protocol/PciIo.h> | |
#include <Protocol/IsaIo.h> | |
#include <Protocol/DriverBinding.h> | |
#include <Protocol/ComponentName.h> | |
#include <Protocol/ComponentName2.h> | |
#include <Library/UefiLib.h> | |
#include <Library/UefiBootServicesTableLib.h> | |
#include <Library/BaseMemoryLib.h> | |
#include <Library/PcdLib.h> | |
#include <Protocol/IsaAcpi.h> | |
// | |
// PCAT ISA ACPI device private data structure | |
// | |
#define PCAT_ISA_ACPI_DEV_SIGNATURE SIGNATURE_32('L','P','C','D') | |
typedef struct { | |
UINTN Signature; | |
EFI_HANDLE Handle; | |
EFI_ISA_ACPI_PROTOCOL IsaAcpi; | |
EFI_PCI_IO_PROTOCOL *PciIo; | |
} PCAT_ISA_ACPI_DEV; | |
#define PCAT_ISA_ACPI_DEV_FROM_THIS(a) BASE_CR(a, PCAT_ISA_ACPI_DEV, IsaAcpi) | |
// | |
// Global Variables | |
// | |
extern EFI_DRIVER_BINDING_PROTOCOL gPcatIsaAcpiDriverBinding; | |
extern EFI_COMPONENT_NAME2_PROTOCOL gPcatIsaAcpiComponentName2; | |
extern EFI_COMPONENT_NAME_PROTOCOL gPcatIsaAcpiComponentName; | |
// | |
// Prototypes for Driver model protocol interface | |
// | |
/** | |
ControllerDriver Protocol Method | |
@param This Driver Binding protocol instance pointer. | |
@param Controller Handle of device to test. | |
@param RemainingDevicePath Optional parameter use to pick a specific child | |
device to start. | |
@retval EFI_SUCCESS This driver supports this device. | |
@retval other This driver does not support this device. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
PcatIsaAcpiDriverBindingSupported ( | |
IN EFI_DRIVER_BINDING_PROTOCOL *This, | |
IN EFI_HANDLE Controller, | |
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath | |
); | |
/** | |
Install EFI_ISA_ACPI_PROTOCOL. | |
@param This Driver Binding protocol instance pointer. | |
@param ControllerHandle Handle of device to bind driver to. | |
@param RemainingDevicePath Optional parameter use to pick a specific child | |
device to start. | |
@retval EFI_SUCCESS This driver is added to ControllerHandle | |
@retval EFI_ALREADY_STARTED This driver is already running on ControllerHandle | |
@retval other This driver does not support this device | |
**/ | |
EFI_STATUS | |
EFIAPI | |
PcatIsaAcpiDriverBindingStart ( | |
IN EFI_DRIVER_BINDING_PROTOCOL *This, | |
IN EFI_HANDLE Controller, | |
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath | |
); | |
/** | |
Stop this driver on ControllerHandle. Support stopping any child handles | |
created by this driver. | |
@param This Protocol instance pointer. | |
@param ControllerHandle Handle of device to stop driver on | |
@param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of | |
children is zero stop the entire bus driver. | |
@param ChildHandleBuffer List of Child Handles to Stop. | |
@retval EFI_SUCCESS This driver is removed ControllerHandle | |
@retval other This driver was not removed from this device | |
**/ | |
EFI_STATUS | |
EFIAPI | |
PcatIsaAcpiDriverBindingStop ( | |
IN EFI_DRIVER_BINDING_PROTOCOL *This, | |
IN EFI_HANDLE Controller, | |
IN UINTN NumberOfChildren, | |
IN EFI_HANDLE *ChildHandleBuffer | |
); | |
// | |
// Prototypes for the ISA ACPI protocol interface | |
// | |
/** | |
Enumerate the ISA devices on the ISA bus | |
@param This Point to instance of EFI_ISA_ACPI_PROTOCOL | |
@param Device Point to device ID instance | |
@retval EFI_NOT_FOUND Can not found the next Isa device. | |
@retval EFI_SUCESS Success retrieve the next Isa device for enumration. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
IsaDeviceEnumerate ( | |
IN EFI_ISA_ACPI_PROTOCOL *This, | |
OUT EFI_ISA_ACPI_DEVICE_ID **Device | |
); | |
/** | |
Set ISA device power | |
@param This Point to instance of EFI_ISA_ACPI_PROTOCOL | |
@param Device Point to device ID instance | |
@param OnOff TRUE for setting isa device power on, | |
FALSE for setting isa device power off | |
@return EFI_SUCCESS Sucess to change power status for isa device. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
IsaDeviceSetPower ( | |
IN EFI_ISA_ACPI_PROTOCOL *This, | |
IN EFI_ISA_ACPI_DEVICE_ID *Device, | |
IN BOOLEAN OnOff | |
); | |
/** | |
Get current resource for the specific ISA device. | |
@param This Point to instance of EFI_ISA_ACPI_PROTOCOL | |
@param Device Point to device ID instance | |
@param ResourceList On return, point to resources instances for given isa device | |
@retval EFI_NOT_FOUND Can not found the resource instance for given isa device | |
@retval EFI_SUCCESS Success to get resource instance for given isa device. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
IsaGetCurrentResource ( | |
IN EFI_ISA_ACPI_PROTOCOL *This, | |
IN EFI_ISA_ACPI_DEVICE_ID *Device, | |
OUT EFI_ISA_ACPI_RESOURCE_LIST **ResourceList | |
); | |
/** | |
Get possible resource for the specific ISA device. | |
@param This Point to instance of EFI_ISA_ACPI_PROTOCOL | |
@param Device Point to device ID instance | |
@param ResourceList On return, point to resources instances for given isa device | |
@retval EFI_SUCCESS Success to get resource instance for given isa device. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
IsaGetPossibleResource ( | |
IN EFI_ISA_ACPI_PROTOCOL *This, | |
IN EFI_ISA_ACPI_DEVICE_ID *Device, | |
OUT EFI_ISA_ACPI_RESOURCE_LIST **ResourceList | |
); | |
/** | |
Set resource for the specific ISA device. | |
@param This Point to instance of EFI_ISA_ACPI_PROTOCOL | |
@param Device Point to device ID instance | |
@param ResourceList Point to resources instances for given isa device | |
@return EFI_SUCESS Success to set resource. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
IsaSetResource ( | |
IN EFI_ISA_ACPI_PROTOCOL *This, | |
IN EFI_ISA_ACPI_DEVICE_ID *Device, | |
IN EFI_ISA_ACPI_RESOURCE_LIST *ResourceList | |
); | |
/** | |
Enable/Disable the specific ISA device. | |
@param This Point to instance of EFI_ISA_ACPI_PROTOCOL | |
@param Device Point to device ID instance | |
@param Enable Enable/Disable | |
@return EFI_SUCESS Success to enable/disable. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
IsaEnableDevice ( | |
IN EFI_ISA_ACPI_PROTOCOL *This, | |
IN EFI_ISA_ACPI_DEVICE_ID *Device, | |
IN BOOLEAN Enable | |
); | |
/** | |
Initialize the specific ISA device. | |
@param This Point to instance of EFI_ISA_ACPI_PROTOCOL | |
@param Device Point to device ID instance | |
@return EFI_SUCESS Success to initialize. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
IsaInitDevice ( | |
IN EFI_ISA_ACPI_PROTOCOL *This, | |
IN EFI_ISA_ACPI_DEVICE_ID *Device | |
); | |
/** | |
Initialize the ISA interface. | |
@param This Point to instance of EFI_ISA_ACPI_PROTOCOL | |
@return EFI_SUCESS Success to initialize ISA interface. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
IsaInterfaceInit ( | |
IN EFI_ISA_ACPI_PROTOCOL *This | |
); | |
/** | |
Initialize the ISA device list. | |
**/ | |
VOID | |
InitializePcatIsaAcpiDeviceList ( | |
VOID | |
); | |
#endif |