]> git.proxmox.com Git - mirror_edk2.git/blob - EdkModulePkg/Bus/Pci/IdeBus/Dxe/idebus.h
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@150 6f19259b...
[mirror_edk2.git] / EdkModulePkg / Bus / Pci / IdeBus / Dxe / idebus.h
1 /*++
2 Copyright (c) 2006, Intel Corporation
3 All rights reserved. This program and the accompanying materials
4 are licensed and made available under the terms and conditions of the BSD License
5 which accompanies this distribution. The full text of the license may be found at
6 http://opensource.org/licenses/bsd-license.php
7
8 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
9 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
10
11 Module Name:
12
13 idebus.h
14
15 Abstract:
16
17 Header file for IDE Bus Driver.
18
19 Revision History
20 ++*/
21
22 // TODO: fix comment to end with --*/
23 #ifndef _IDE_BUS_H
24 #define _IDE_BUS_H
25
26
27 #include <IndustryStandard/Pci22.h>
28 #include "idedata.h"
29
30 //
31 // Extra Definition to porting
32 //
33 #define EFI_MIN(a, b) (((a) < (b)) ? (a) : (b))
34
35 #define MAX_IDE_DEVICE 4
36 #define MAX_IDE_CHANNELS 2
37 #define MAX_IDE_DRIVES 2
38
39 typedef struct {
40 BOOLEAN HaveScannedDevice[MAX_IDE_DEVICE];
41 BOOLEAN DeviceFound[MAX_IDE_DEVICE];
42 BOOLEAN DeviceProcessed[MAX_IDE_DEVICE];
43 } IDE_BUS_DRIVER_PRIVATE_DATA;
44
45 #define IDE_BLK_IO_DEV_SIGNATURE EFI_SIGNATURE_32 ('i', 'b', 'i', 'd')
46
47 typedef struct {
48 UINT32 Signature;
49
50 EFI_HANDLE Handle;
51 EFI_BLOCK_IO_PROTOCOL BlkIo;
52 EFI_BLOCK_IO_MEDIA BlkMedia;
53 EFI_DISK_INFO_PROTOCOL DiskInfo;
54 EFI_DEVICE_PATH_PROTOCOL *DevicePath;
55 EFI_PCI_IO_PROTOCOL *PciIo;
56 IDE_BUS_DRIVER_PRIVATE_DATA *IdeBusDriverPrivateData;
57
58 //
59 // Local Data for IDE interface goes here
60 //
61 EFI_IDE_CHANNEL Channel;
62 EFI_IDE_DEVICE Device;
63 UINT16 Lun;
64 IDE_DEVICE_TYPE Type;
65
66 IDE_BASE_REGISTERS *IoPort;
67 UINT16 AtapiError;
68
69 INQUIRY_DATA *pInquiryData;
70 EFI_IDENTIFY_DATA *pIdData;
71 ATA_PIO_MODE PioMode;
72 ATA_UDMA_MODE UDma_Mode;
73 CHAR8 ModelName[41];
74 REQUEST_SENSE_DATA *SenseData;
75 UINT8 SenseDataNumber;
76 UINT8 *Cache;
77
78 EFI_UNICODE_STRING_TABLE *ControllerNameTable;
79 } IDE_BLK_IO_DEV;
80
81 #include "ComponentName.h"
82
83 #define IDE_BLOCK_IO_DEV_FROM_THIS(a) CR (a, IDE_BLK_IO_DEV, BlkIo, IDE_BLK_IO_DEV_SIGNATURE)
84 #define IDE_BLOCK_IO_DEV_FROM_DISK_INFO_THIS(a) CR (a, IDE_BLK_IO_DEV, DiskInfo, IDE_BLK_IO_DEV_SIGNATURE)
85
86 //
87 // Global Variables
88 //
89 extern EFI_DRIVER_BINDING_PROTOCOL gIDEBusDriverBinding;
90
91 #include "ide.h"
92
93 //
94 // Prototypes
95 // Driver model protocol interface
96 //
97 EFI_STATUS
98 EFIAPI
99 IDEBusControllerDriverEntryPoint (
100 IN EFI_HANDLE ImageHandle,
101 IN EFI_SYSTEM_TABLE *SystemTable
102 )
103 /*++
104
105 Routine Description:
106
107 TODO: Add function description
108
109 Arguments:
110
111 ImageHandle - TODO: add argument description
112 SystemTable - TODO: add argument description
113
114 Returns:
115
116 TODO: add return values
117
118 --*/
119 ;
120
121 EFI_STATUS
122 EFIAPI
123 IDEBusDriverBindingSupported (
124 IN EFI_DRIVER_BINDING_PROTOCOL *This,
125 IN EFI_HANDLE Controller,
126 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
127 )
128 /*++
129
130 Routine Description:
131
132 TODO: Add function description
133
134 Arguments:
135
136 This - TODO: add argument description
137 Controller - TODO: add argument description
138 RemainingDevicePath - TODO: add argument description
139
140 Returns:
141
142 TODO: add return values
143
144 --*/
145 ;
146
147 EFI_STATUS
148 EFIAPI
149 IDEBusDriverBindingStart (
150 IN EFI_DRIVER_BINDING_PROTOCOL *This,
151 IN EFI_HANDLE Controller,
152 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
153 )
154 /*++
155
156 Routine Description:
157
158 TODO: Add function description
159
160 Arguments:
161
162 This - TODO: add argument description
163 Controller - TODO: add argument description
164 RemainingDevicePath - TODO: add argument description
165
166 Returns:
167
168 TODO: add return values
169
170 --*/
171 ;
172
173 EFI_STATUS
174 EFIAPI
175 IDEBusDriverBindingStop (
176 IN EFI_DRIVER_BINDING_PROTOCOL *This,
177 IN EFI_HANDLE Controller,
178 IN UINTN NumberOfChildren,
179 IN EFI_HANDLE *ChildHandleBuffer
180 )
181 /*++
182
183 Routine Description:
184
185 TODO: Add function description
186
187 Arguments:
188
189 This - TODO: add argument description
190 Controller - TODO: add argument description
191 NumberOfChildren - TODO: add argument description
192 ChildHandleBuffer - TODO: add argument description
193
194 Returns:
195
196 TODO: add return values
197
198 --*/
199 ;
200
201 //
202 // Block I/O Protocol Interface
203 //
204 EFI_STATUS
205 EFIAPI
206 IDEBlkIoReset (
207 IN EFI_BLOCK_IO_PROTOCOL *This,
208 IN BOOLEAN ExtendedVerification
209 )
210 /*++
211
212 Routine Description:
213
214 TODO: Add function description
215
216 Arguments:
217
218 This - TODO: add argument description
219 ExtendedVerification - TODO: add argument description
220
221 Returns:
222
223 TODO: add return values
224
225 --*/
226 ;
227
228 EFI_STATUS
229 EFIAPI
230 IDEBlkIoReadBlocks (
231 IN EFI_BLOCK_IO_PROTOCOL *This,
232 IN UINT32 MediaId,
233 IN EFI_LBA LBA,
234 IN UINTN BufferSize,
235 OUT VOID *Buffer
236 )
237 /*++
238
239 Routine Description:
240
241 TODO: Add function description
242
243 Arguments:
244
245 This - TODO: add argument description
246 MediaId - TODO: add argument description
247 LBA - TODO: add argument description
248 BufferSize - TODO: add argument description
249 Buffer - TODO: add argument description
250
251 Returns:
252
253 TODO: add return values
254
255 --*/
256 ;
257
258 EFI_STATUS
259 EFIAPI
260 IDEBlkIoWriteBlocks (
261 IN EFI_BLOCK_IO_PROTOCOL *This,
262 IN UINT32 MediaId,
263 IN EFI_LBA LBA,
264 IN UINTN BufferSize,
265 IN VOID *Buffer
266 )
267 /*++
268
269 Routine Description:
270
271 TODO: Add function description
272
273 Arguments:
274
275 This - TODO: add argument description
276 MediaId - TODO: add argument description
277 LBA - TODO: add argument description
278 BufferSize - TODO: add argument description
279 Buffer - TODO: add argument description
280
281 Returns:
282
283 TODO: add return values
284
285 --*/
286 ;
287
288 EFI_STATUS
289 EFIAPI
290 IDEBlkIoFlushBlocks (
291 IN EFI_BLOCK_IO_PROTOCOL *This
292 )
293 /*++
294
295 Routine Description:
296
297 TODO: Add function description
298
299 Arguments:
300
301 This - TODO: add argument description
302
303 Returns:
304
305 TODO: add return values
306
307 --*/
308 ;
309
310 EFI_STATUS
311 IDERegisterDecodeEnableorDisable (
312 IN EFI_PCI_IO_PROTOCOL *PciIo,
313 IN BOOLEAN Enable
314 )
315 /*++
316
317 Routine Description:
318
319 TODO: Add function description
320
321 Arguments:
322
323 PciIo - TODO: add argument description
324 Enable - TODO: add argument description
325
326 Returns:
327
328 TODO: add return values
329
330 --*/
331 ;
332
333 EFI_STATUS
334 EFIAPI
335 IDEDiskInfoInquiry (
336 IN EFI_DISK_INFO_PROTOCOL *This,
337 IN OUT VOID *InquiryData,
338 IN OUT UINT32 *IntquiryDataSize
339 )
340 /*++
341
342 Routine Description:
343
344 TODO: Add function description
345
346 Arguments:
347
348 This - TODO: add argument description
349 InquiryData - TODO: add argument description
350 IntquiryDataSize - TODO: add argument description
351
352 Returns:
353
354 TODO: add return values
355
356 --*/
357 ;
358
359 EFI_STATUS
360 EFIAPI
361 IDEDiskInfoIdentify (
362 IN EFI_DISK_INFO_PROTOCOL *This,
363 IN OUT VOID *IdentifyData,
364 IN OUT UINT32 *IdentifyDataSize
365 )
366 /*++
367
368 Routine Description:
369
370 TODO: Add function description
371
372 Arguments:
373
374 This - TODO: add argument description
375 IdentifyData - TODO: add argument description
376 IdentifyDataSize - TODO: add argument description
377
378 Returns:
379
380 TODO: add return values
381
382 --*/
383 ;
384
385 EFI_STATUS
386 EFIAPI
387 IDEDiskInfoSenseData (
388 IN EFI_DISK_INFO_PROTOCOL *This,
389 IN OUT VOID *SenseData,
390 IN OUT UINT32 *SenseDataSize,
391 OUT UINT8 *SenseDataNumber
392 )
393 /*++
394
395 Routine Description:
396
397 TODO: Add function description
398
399 Arguments:
400
401 This - TODO: add argument description
402 SenseData - TODO: add argument description
403 SenseDataSize - TODO: add argument description
404 SenseDataNumber - TODO: add argument description
405
406 Returns:
407
408 TODO: add return values
409
410 --*/
411 ;
412
413 EFI_STATUS
414 EFIAPI
415 IDEDiskInfoWhichIde (
416 IN EFI_DISK_INFO_PROTOCOL *This,
417 OUT UINT32 *IdeChannel,
418 OUT UINT32 *IdeDevice
419 )
420 /*++
421
422 Routine Description:
423
424 TODO: Add function description
425
426 Arguments:
427
428 This - TODO: add argument description
429 IdeChannel - TODO: add argument description
430 IdeDevice - TODO: add argument description
431
432 Returns:
433
434 TODO: add return values
435
436 --*/
437 ;
438
439 #endif