Vishal Bhoj | 82c8071 | 2015-12-15 21:13:33 +0530 | [diff] [blame^] | 1 | /** @file
|
| 2 | EFI PCAT ISA ACPI Driver for a Generic PC Platform
|
| 3 |
|
| 4 | Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
|
| 5 | This program and the accompanying materials
|
| 6 | are licensed and made available under the terms and conditions of the BSD License
|
| 7 | which accompanies this distribution. The full text of the license may be found at
|
| 8 | http://opensource.org/licenses/bsd-license.php
|
| 9 |
|
| 10 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
| 11 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
| 12 |
|
| 13 | **/
|
| 14 |
|
| 15 | #ifndef _PCAT_ISA_ACPI_H_
|
| 16 | #define _PCAT_ISA_ACPI_H_
|
| 17 |
|
| 18 | #include <PiDxe.h>
|
| 19 |
|
| 20 | #include <IndustryStandard/Pci.h>
|
| 21 |
|
| 22 | #include <Protocol/DevicePath.h>
|
| 23 | #include <Protocol/PciIo.h>
|
| 24 | #include <Protocol/IsaIo.h>
|
| 25 | #include <Protocol/DriverBinding.h>
|
| 26 | #include <Protocol/ComponentName.h>
|
| 27 | #include <Protocol/ComponentName2.h>
|
| 28 |
|
| 29 |
|
| 30 | #include <Library/UefiLib.h>
|
| 31 | #include <Library/UefiBootServicesTableLib.h>
|
| 32 | #include <Library/BaseMemoryLib.h>
|
| 33 | #include <Library/PcdLib.h>
|
| 34 |
|
| 35 | #include <Protocol/IsaAcpi.h>
|
| 36 | //
|
| 37 | // PCAT ISA ACPI device private data structure
|
| 38 | //
|
| 39 | #define PCAT_ISA_ACPI_DEV_SIGNATURE SIGNATURE_32('L','P','C','D')
|
| 40 |
|
| 41 | typedef struct {
|
| 42 | UINTN Signature;
|
| 43 | EFI_HANDLE Handle;
|
| 44 | EFI_ISA_ACPI_PROTOCOL IsaAcpi;
|
| 45 | EFI_PCI_IO_PROTOCOL *PciIo;
|
| 46 | } PCAT_ISA_ACPI_DEV;
|
| 47 |
|
| 48 | #define PCAT_ISA_ACPI_DEV_FROM_THIS(a) BASE_CR(a, PCAT_ISA_ACPI_DEV, IsaAcpi)
|
| 49 |
|
| 50 | //
|
| 51 | // Global Variables
|
| 52 | //
|
| 53 | extern EFI_DRIVER_BINDING_PROTOCOL gPcatIsaAcpiDriverBinding;
|
| 54 |
|
| 55 | extern EFI_COMPONENT_NAME2_PROTOCOL gPcatIsaAcpiComponentName2;
|
| 56 |
|
| 57 | extern EFI_COMPONENT_NAME_PROTOCOL gPcatIsaAcpiComponentName;
|
| 58 |
|
| 59 |
|
| 60 | //
|
| 61 | // Prototypes for Driver model protocol interface
|
| 62 | //
|
| 63 | /**
|
| 64 | ControllerDriver Protocol Method
|
| 65 |
|
| 66 | @param This Driver Binding protocol instance pointer.
|
| 67 | @param Controller Handle of device to test.
|
| 68 | @param RemainingDevicePath Optional parameter use to pick a specific child
|
| 69 | device to start.
|
| 70 | @retval EFI_SUCCESS This driver supports this device.
|
| 71 | @retval other This driver does not support this device.
|
| 72 |
|
| 73 | **/
|
| 74 | EFI_STATUS
|
| 75 | EFIAPI
|
| 76 | PcatIsaAcpiDriverBindingSupported (
|
| 77 | IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
| 78 | IN EFI_HANDLE Controller,
|
| 79 | IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
| 80 | );
|
| 81 |
|
| 82 | /**
|
| 83 | Install EFI_ISA_ACPI_PROTOCOL.
|
| 84 |
|
| 85 | @param This Driver Binding protocol instance pointer.
|
| 86 | @param ControllerHandle Handle of device to bind driver to.
|
| 87 | @param RemainingDevicePath Optional parameter use to pick a specific child
|
| 88 | device to start.
|
| 89 |
|
| 90 | @retval EFI_SUCCESS This driver is added to ControllerHandle
|
| 91 | @retval EFI_ALREADY_STARTED This driver is already running on ControllerHandle
|
| 92 | @retval other This driver does not support this device
|
| 93 | **/
|
| 94 | EFI_STATUS
|
| 95 | EFIAPI
|
| 96 | PcatIsaAcpiDriverBindingStart (
|
| 97 | IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
| 98 | IN EFI_HANDLE Controller,
|
| 99 | IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
| 100 | );
|
| 101 |
|
| 102 | /**
|
| 103 | Stop this driver on ControllerHandle. Support stopping any child handles
|
| 104 | created by this driver.
|
| 105 |
|
| 106 | @param This Protocol instance pointer.
|
| 107 | @param ControllerHandle Handle of device to stop driver on
|
| 108 | @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of
|
| 109 | children is zero stop the entire bus driver.
|
| 110 | @param ChildHandleBuffer List of Child Handles to Stop.
|
| 111 |
|
| 112 | @retval EFI_SUCCESS This driver is removed ControllerHandle
|
| 113 | @retval other This driver was not removed from this device
|
| 114 |
|
| 115 | **/
|
| 116 | EFI_STATUS
|
| 117 | EFIAPI
|
| 118 | PcatIsaAcpiDriverBindingStop (
|
| 119 | IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
| 120 | IN EFI_HANDLE Controller,
|
| 121 | IN UINTN NumberOfChildren,
|
| 122 | IN EFI_HANDLE *ChildHandleBuffer
|
| 123 | );
|
| 124 |
|
| 125 | //
|
| 126 | // Prototypes for the ISA ACPI protocol interface
|
| 127 | //
|
| 128 | /**
|
| 129 | Enumerate the ISA devices on the ISA bus
|
| 130 |
|
| 131 |
|
| 132 | @param This Point to instance of EFI_ISA_ACPI_PROTOCOL
|
| 133 | @param Device Point to device ID instance
|
| 134 |
|
| 135 | @retval EFI_NOT_FOUND Can not found the next Isa device.
|
| 136 | @retval EFI_SUCESS Success retrieve the next Isa device for enumration.
|
| 137 |
|
| 138 | **/
|
| 139 | EFI_STATUS
|
| 140 | EFIAPI
|
| 141 | IsaDeviceEnumerate (
|
| 142 | IN EFI_ISA_ACPI_PROTOCOL *This,
|
| 143 | OUT EFI_ISA_ACPI_DEVICE_ID **Device
|
| 144 | );
|
| 145 |
|
| 146 | /**
|
| 147 | Set ISA device power
|
| 148 |
|
| 149 |
|
| 150 | @param This Point to instance of EFI_ISA_ACPI_PROTOCOL
|
| 151 | @param Device Point to device ID instance
|
| 152 | @param OnOff TRUE for setting isa device power on,
|
| 153 | FALSE for setting isa device power off
|
| 154 |
|
| 155 | @return EFI_SUCCESS Sucess to change power status for isa device.
|
| 156 | **/
|
| 157 | EFI_STATUS
|
| 158 | EFIAPI
|
| 159 | IsaDeviceSetPower (
|
| 160 | IN EFI_ISA_ACPI_PROTOCOL *This,
|
| 161 | IN EFI_ISA_ACPI_DEVICE_ID *Device,
|
| 162 | IN BOOLEAN OnOff
|
| 163 | );
|
| 164 |
|
| 165 | /**
|
| 166 | Get current resource for the specific ISA device.
|
| 167 |
|
| 168 | @param This Point to instance of EFI_ISA_ACPI_PROTOCOL
|
| 169 | @param Device Point to device ID instance
|
| 170 | @param ResourceList On return, point to resources instances for given isa device
|
| 171 |
|
| 172 | @retval EFI_NOT_FOUND Can not found the resource instance for given isa device
|
| 173 | @retval EFI_SUCCESS Success to get resource instance for given isa device.
|
| 174 | **/
|
| 175 | EFI_STATUS
|
| 176 | EFIAPI
|
| 177 | IsaGetCurrentResource (
|
| 178 | IN EFI_ISA_ACPI_PROTOCOL *This,
|
| 179 | IN EFI_ISA_ACPI_DEVICE_ID *Device,
|
| 180 | OUT EFI_ISA_ACPI_RESOURCE_LIST **ResourceList
|
| 181 | );
|
| 182 |
|
| 183 | /**
|
| 184 | Get possible resource for the specific ISA device.
|
| 185 |
|
| 186 | @param This Point to instance of EFI_ISA_ACPI_PROTOCOL
|
| 187 | @param Device Point to device ID instance
|
| 188 | @param ResourceList On return, point to resources instances for given isa device
|
| 189 |
|
| 190 | @retval EFI_SUCCESS Success to get resource instance for given isa device.
|
| 191 | **/
|
| 192 | EFI_STATUS
|
| 193 | EFIAPI
|
| 194 | IsaGetPossibleResource (
|
| 195 | IN EFI_ISA_ACPI_PROTOCOL *This,
|
| 196 | IN EFI_ISA_ACPI_DEVICE_ID *Device,
|
| 197 | OUT EFI_ISA_ACPI_RESOURCE_LIST **ResourceList
|
| 198 | );
|
| 199 |
|
| 200 | /**
|
| 201 | Set resource for the specific ISA device.
|
| 202 |
|
| 203 | @param This Point to instance of EFI_ISA_ACPI_PROTOCOL
|
| 204 | @param Device Point to device ID instance
|
| 205 | @param ResourceList Point to resources instances for given isa device
|
| 206 |
|
| 207 | @return EFI_SUCESS Success to set resource.
|
| 208 |
|
| 209 | **/
|
| 210 | EFI_STATUS
|
| 211 | EFIAPI
|
| 212 | IsaSetResource (
|
| 213 | IN EFI_ISA_ACPI_PROTOCOL *This,
|
| 214 | IN EFI_ISA_ACPI_DEVICE_ID *Device,
|
| 215 | IN EFI_ISA_ACPI_RESOURCE_LIST *ResourceList
|
| 216 | );
|
| 217 |
|
| 218 | /**
|
| 219 | Enable/Disable the specific ISA device.
|
| 220 |
|
| 221 | @param This Point to instance of EFI_ISA_ACPI_PROTOCOL
|
| 222 | @param Device Point to device ID instance
|
| 223 | @param Enable Enable/Disable
|
| 224 |
|
| 225 | @return EFI_SUCESS Success to enable/disable.
|
| 226 |
|
| 227 | **/
|
| 228 | EFI_STATUS
|
| 229 | EFIAPI
|
| 230 | IsaEnableDevice (
|
| 231 | IN EFI_ISA_ACPI_PROTOCOL *This,
|
| 232 | IN EFI_ISA_ACPI_DEVICE_ID *Device,
|
| 233 | IN BOOLEAN Enable
|
| 234 | );
|
| 235 |
|
| 236 | /**
|
| 237 | Initialize the specific ISA device.
|
| 238 |
|
| 239 | @param This Point to instance of EFI_ISA_ACPI_PROTOCOL
|
| 240 | @param Device Point to device ID instance
|
| 241 |
|
| 242 | @return EFI_SUCESS Success to initialize.
|
| 243 |
|
| 244 | **/
|
| 245 | EFI_STATUS
|
| 246 | EFIAPI
|
| 247 | IsaInitDevice (
|
| 248 | IN EFI_ISA_ACPI_PROTOCOL *This,
|
| 249 | IN EFI_ISA_ACPI_DEVICE_ID *Device
|
| 250 | );
|
| 251 |
|
| 252 | /**
|
| 253 | Initialize the ISA interface.
|
| 254 |
|
| 255 | @param This Point to instance of EFI_ISA_ACPI_PROTOCOL
|
| 256 |
|
| 257 | @return EFI_SUCESS Success to initialize ISA interface.
|
| 258 |
|
| 259 | **/
|
| 260 | EFI_STATUS
|
| 261 | EFIAPI
|
| 262 | IsaInterfaceInit (
|
| 263 | IN EFI_ISA_ACPI_PROTOCOL *This
|
| 264 | );
|
| 265 |
|
| 266 | /**
|
| 267 | Initialize the ISA device list.
|
| 268 | **/
|
| 269 | VOID
|
| 270 | InitializePcatIsaAcpiDeviceList (
|
| 271 | VOID
|
| 272 | );
|
| 273 |
|
| 274 | #endif
|