]>
Commit | Line | Data |
---|---|---|
18c97f53 | 1 | /** @file\r |
2 | EFI PCAT ISA ACPI Driver for a Generic PC Platform\r | |
c69dd9df | 3 | \r |
5a702acd | 4 | Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r |
e1d302e5 | 5 | SPDX-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 |
35 | typedef 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 | |
48 | extern EFI_DRIVER_BINDING_PROTOCOL gPcatIsaAcpiDriverBinding;\r | |
49 | \r | |
50 | extern EFI_COMPONENT_NAME2_PROTOCOL gPcatIsaAcpiComponentName2;\r | |
51 | \r | |
52 | extern 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 | 69 | EFI_STATUS\r |
70 | EFIAPI\r | |
71 | PcatIsaAcpiDriverBindingSupported (\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 | 89 | EFI_STATUS\r |
90 | EFIAPI\r | |
91 | PcatIsaAcpiDriverBindingStart (\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 | 111 | EFI_STATUS\r |
112 | EFIAPI\r | |
113 | PcatIsaAcpiDriverBindingStop (\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 | 134 | EFI_STATUS\r |
135 | EFIAPI\r | |
136 | IsaDeviceEnumerate (\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 | 152 | EFI_STATUS\r |
153 | EFIAPI\r | |
154 | IsaDeviceSetPower (\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 | 170 | EFI_STATUS\r |
171 | EFIAPI\r | |
172 | IsaGetCurrentResource (\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 | 187 | EFI_STATUS\r |
188 | EFIAPI\r | |
189 | IsaGetPossibleResource (\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 | 205 | EFI_STATUS\r |
206 | EFIAPI\r | |
207 | IsaSetResource (\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 | 223 | EFI_STATUS\r |
224 | EFIAPI\r | |
225 | IsaEnableDevice (\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 | 240 | EFI_STATUS\r |
241 | EFIAPI\r | |
242 | IsaInitDevice (\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 | 255 | EFI_STATUS\r |
256 | EFIAPI\r | |
257 | IsaInterfaceInit (\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 | |
264 | VOID\r | |
265 | InitializePcatIsaAcpiDeviceList (\r | |
266 | VOID\r | |
267 | );\r | |
268 | \r | |
c69dd9df | 269 | #endif\r |