]> git.proxmox.com Git - mirror_edk2.git/blame - DuetPkg/IdeControllerDxe/IdeController.h
Add PcdVerifyNoteInList for judge whether do verification of node in list in debug...
[mirror_edk2.git] / DuetPkg / IdeControllerDxe / IdeController.h
CommitLineData
93d4ce91 1/*++\r
2\r
3Copyright (c) 2006 Intel Corporation. All rights reserved\r
4All rights reserved. This program and the accompanying materials \r
5are licensed and made available under the terms and conditions of the BSD License \r
6which accompanies this distribution. The full text of the license may be found at \r
7http://opensource.org/licenses/bsd-license.php \r
8 \r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
11\r
12\r
13Module Name:\r
14\r
15 IdeController.h\r
16\r
17Abstract:\r
18\r
19 Header file for chipset ATA controller driver.\r
20\r
21Revision History\r
22--*/\r
23\r
24#ifndef _IDE_CONTROLLER_H\r
25#define _IDE_CONTROLLER_H\r
26\r
27#include <PiDxe.h>\r
28\r
29#include <Library/UefiBootServicesTableLib.h>\r
30#include <Library/UefiDriverEntryPoint.h>\r
31#include <Library/BaseMemoryLib.h>\r
32#include <Library/DebugLib.h>\r
33#include <Library/MemoryAllocationLib.h>\r
34#include <Library/UefiLib.h>\r
35#include <Protocol/PciIo.h>\r
36#include <Protocol/IdeControllerInit.h>\r
37\r
38//\r
39// Driver Binding Externs\r
40//\r
41extern EFI_DRIVER_BINDING_PROTOCOL gIdeControllerDriverBinding;\r
42extern EFI_COMPONENT_NAME_PROTOCOL gIdeControllerName;\r
43extern EFI_COMPONENT_NAME2_PROTOCOL gIdeControllerName2;\r
44\r
45#include <IndustryStandard/Pci22.h>\r
46\r
47//\r
48// Symbol definition, for PCI IDE configuration field\r
49//\r
50#define PCI_CLASS_MASS_STORAGE 0x01\r
51#define PCI_SUB_CLASS_IDE 0x01\r
52\r
53//\r
54// Supports 2 channel max\r
55//\r
56#define ICH_IDE_MAX_CHANNEL 0x02\r
57//\r
58// Supports 2 devices max\r
59//\r
60#define ICH_IDE_MAX_DEVICES 0x02\r
61#define ICH_IDE_ENUMER_ALL FALSE\r
62\r
63#define IDE_CONTROLLER_SIGNATURE SIGNATURE_32 ('i', 'i', 'd', 'e')\r
64\r
65//\r
66// Ide controller driver private data structure\r
67//\r
68typedef struct {\r
69 //\r
70 // Standard signature used to identify Ide controller private data\r
71 //\r
72 UINT32 Signature;\r
73\r
74 //\r
75 // Protocol instance of IDE_CONTROLLER_INIT produced by this driver\r
76 //\r
77 EFI_IDE_CONTROLLER_INIT_PROTOCOL IdeInit;\r
78\r
79 //\r
80 // copy of protocol pointers used by this driver\r
81 //\r
82 EFI_PCI_IO_PROTOCOL *PciIo;\r
83\r
84 //\r
85 // The highest disqulified mode for each attached Ide device.\r
86 // Per ATA/ATAPI spec, if a mode is not supported, the modes higher than\r
87 // it should not be supported\r
88 //\r
89 EFI_ATA_COLLECTIVE_MODE DisqulifiedModes[ICH_IDE_MAX_CHANNEL][ICH_IDE_MAX_DEVICES];\r
90\r
91 //\r
92 // A copy of EFI_IDENTIFY_DATA data for each attached Ide device and its flag\r
93 //\r
94 EFI_IDENTIFY_DATA IdentifyData[ICH_IDE_MAX_CHANNEL][ICH_IDE_MAX_DEVICES];\r
95 BOOLEAN IdentifyValid[ICH_IDE_MAX_CHANNEL][ICH_IDE_MAX_DEVICES];\r
96\r
97} EFI_IDE_CONTROLLER_PRIVATE_DATA;\r
98\r
99#define IDE_CONTROLLER_PRIVATE_DATA_FROM_THIS(a) \\r
100 CR (a, \\r
101 EFI_IDE_CONTROLLER_PRIVATE_DATA, \\r
102 IdeInit, \\r
103 IDE_CONTROLLER_SIGNATURE \\r
104 )\r
105\r
106//\r
107// Driver binding functions declaration\r
108//\r
109EFI_STATUS\r
110EFIAPI\r
111IdeControllerSupported (\r
112 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
113 IN EFI_HANDLE Controller,\r
114 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
115 )\r
116/*++\r
117\r
118 Routine Description:\r
119 \r
120 Register Driver Binding protocol for this driver.\r
121 \r
122 Arguments:\r
123 \r
124 This -- a pointer points to the Binding Protocol instance\r
125 Controller -- The handle of controller to be tested. \r
126 *RemainingDevicePath -- A pointer to the device path. Ignored by device\r
127 driver but used by bus driver\r
128\r
129 Returns:\r
130\r
131 EFI_SUCCESS -- Driver loaded.\r
132 other -- Driver not loaded.\r
133--*/\r
134;\r
135\r
136EFI_STATUS\r
137EFIAPI\r
138IdeControllerStart (\r
139 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
140 IN EFI_HANDLE Controller,\r
141 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
142 )\r
143/*++\r
144\r
145 Routine Description:\r
146 \r
147 This routine is called right after the .Supported() called and return \r
148 EFI_SUCCESS. Notes: The supported protocols are checked but the Protocols\r
149 are closed.\r
150\r
151 Arguments:\r
152 \r
153 This -- a pointer points to the Binding Protocol instance\r
154 Controller -- The handle of controller to be tested. Parameter\r
155 passed by the caller\r
156 *RemainingDevicePath -- A pointer to the device path. Should be ignored by\r
157 device driver\r
158--*/\r
159;\r
160\r
161EFI_STATUS\r
162EFIAPI\r
163IdeControllerStop (\r
164 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
165 IN EFI_HANDLE Controller,\r
166 IN UINTN NumberOfChildren,\r
167 IN EFI_HANDLE *ChildHandleBuffer\r
168 )\r
169/*++\r
170 \r
171 Routine Description:\r
172 Stop this driver on Controller Handle. \r
173\r
174 Arguments:\r
175 This - Protocol instance pointer.\r
176 Controller - Handle of device to stop driver on \r
177 NumberOfChildren - Not used\r
178 ChildHandleBuffer - Not used\r
179\r
180 Returns:\r
181 EFI_SUCCESS - This driver is removed DeviceHandle\r
182 other - This driver was not removed from this device\r
183 \r
184--*/\r
185;\r
186\r
187//\r
188// IDE controller init functions declaration\r
189//\r
190EFI_STATUS\r
191EFIAPI\r
192IdeInitGetChannelInfo (\r
193 IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This,\r
194 IN UINT8 Channel,\r
195 OUT BOOLEAN *Enabled,\r
196 OUT UINT8 *MaxDevices\r
197 )\r
198/*++\r
199\r
200Routine Description:\r
201\r
202 TODO: Add function description\r
203\r
204Arguments:\r
205\r
206 This - TODO: add argument description\r
207 Channel - TODO: add argument description\r
208 Enabled - TODO: add argument description\r
209 MaxDevices - TODO: add argument description\r
210\r
211Returns:\r
212\r
213 TODO: add return values\r
214\r
215--*/\r
216;\r
217\r
218EFI_STATUS\r
219EFIAPI\r
220IdeInitNotifyPhase (\r
221 IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This,\r
222 IN EFI_IDE_CONTROLLER_ENUM_PHASE Phase,\r
223 OUT UINT8 Channel\r
224 )\r
225/*++\r
226\r
227Routine Description:\r
228\r
229 TODO: Add function description\r
230\r
231Arguments:\r
232\r
233 This - TODO: add argument description\r
234 Phase - TODO: add argument description\r
235 Channel - TODO: add argument description\r
236\r
237Returns:\r
238\r
239 TODO: add return values\r
240\r
241--*/\r
242;\r
243\r
244EFI_STATUS\r
245EFIAPI\r
246IdeInitSubmitData (\r
247 IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This,\r
248 IN UINT8 Channel,\r
249 IN UINT8 Device,\r
250 IN EFI_IDENTIFY_DATA *IdentifyData\r
251 )\r
252/*++\r
253\r
254Routine Description:\r
255\r
256 TODO: Add function description\r
257\r
258Arguments:\r
259\r
260 This - TODO: add argument description\r
261 Channel - TODO: add argument description\r
262 Device - TODO: add argument description\r
263 IdentifyData - TODO: add argument description\r
264\r
265Returns:\r
266\r
267 TODO: add return values\r
268\r
269--*/\r
270;\r
271\r
272EFI_STATUS\r
273EFIAPI\r
274IdeInitSubmitFailingModes (\r
275 IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This,\r
276 IN UINT8 Channel,\r
277 IN UINT8 Device\r
278 )\r
279/*++\r
280\r
281Routine Description:\r
282\r
283 TODO: Add function description\r
284\r
285Arguments:\r
286\r
287 This - TODO: add argument description\r
288 Channel - TODO: add argument description\r
289 Device - TODO: add argument description\r
290\r
291Returns:\r
292\r
293 TODO: add return values\r
294\r
295--*/\r
296;\r
297\r
298EFI_STATUS\r
299EFIAPI\r
300IdeInitDisqualifyMode (\r
301 IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This,\r
302 IN UINT8 Channel,\r
303 IN UINT8 Device,\r
304 IN EFI_ATA_COLLECTIVE_MODE *BadModes\r
305 )\r
306/*++\r
307\r
308Routine Description:\r
309\r
310 TODO: Add function description\r
311\r
312Arguments:\r
313\r
314 This - TODO: add argument description\r
315 Channel - TODO: add argument description\r
316 Device - TODO: add argument description\r
317 BadModes - TODO: add argument description\r
318\r
319Returns:\r
320\r
321 TODO: add return values\r
322\r
323--*/\r
324;\r
325\r
326EFI_STATUS\r
327EFIAPI\r
328IdeInitCalculateMode (\r
329 IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This,\r
330 IN UINT8 Channel,\r
331 IN UINT8 Device,\r
332 IN EFI_ATA_COLLECTIVE_MODE **SupportedModes\r
333 )\r
334/*++\r
335\r
336Routine Description:\r
337\r
338 TODO: Add function description\r
339\r
340Arguments:\r
341\r
342 This - TODO: add argument description\r
343 Channel - TODO: add argument description\r
344 Device - TODO: add argument description\r
345 SupportedModes - TODO: add argument description\r
346\r
347Returns:\r
348\r
349 TODO: add return values\r
350\r
351--*/\r
352;\r
353\r
354EFI_STATUS\r
355EFIAPI\r
356IdeInitSetTiming (\r
357 IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This,\r
358 IN UINT8 Channel,\r
359 IN UINT8 Device,\r
360 IN EFI_ATA_COLLECTIVE_MODE *Modes\r
361 )\r
362/*++\r
363\r
364Routine Description:\r
365\r
366 TODO: Add function description\r
367\r
368Arguments:\r
369\r
370 This - TODO: add argument description\r
371 Channel - TODO: add argument description\r
372 Device - TODO: add argument description\r
373 Modes - TODO: add argument description\r
374\r
375Returns:\r
376\r
377 TODO: add return values\r
378\r
379--*/\r
380;\r
381\r
382#endif\r