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