]> git.proxmox.com Git - mirror_edk2.git/blame - EdkModulePkg/Bus/Scsi/ScsiDisk/Dxe/ScsiDisk.h
Perfected MSA files.
[mirror_edk2.git] / EdkModulePkg / Bus / Scsi / ScsiDisk / Dxe / ScsiDisk.h
CommitLineData
878ddf1f 1/*++\r
2\r
3Copyright (c) 2006, Intel Corporation \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
12Module Name:\r
13\r
14 ScsiDisk.h\r
15\r
16Abstract:\r
17 \r
18 Header file for SCSI Disk Driver.\r
19\r
20--*/\r
21\r
22#ifndef _SCSI_DISK_H\r
23#define _SCSI_DISK_H\r
24\r
25\r
26#include <IndustryStandard/scsi.h>\r
27\r
28#define IsDeviceFixed(a) (a)->FixedDevice ? 1 : 0\r
29\r
30#define SCSI_DISK_DEV_SIGNATURE EFI_SIGNATURE_32 ('s', 'c', 'd', 'k')\r
31\r
32typedef struct {\r
33 UINT32 Signature;\r
34\r
35 EFI_HANDLE Handle;\r
36\r
37 EFI_BLOCK_IO_PROTOCOL BlkIo;\r
38 EFI_BLOCK_IO_MEDIA BlkIoMedia;\r
39 EFI_SCSI_IO_PROTOCOL *ScsiIo;\r
40 UINT8 DeviceType;\r
41 BOOLEAN FixedDevice;\r
42 UINT16 Reserved;\r
43\r
44 EFI_SCSI_SENSE_DATA *SenseData;\r
45 UINTN SenseDataNumber;\r
46 EFI_SCSI_INQUIRY_DATA InquiryData;\r
47\r
48 EFI_UNICODE_STRING_TABLE *ControllerNameTable;\r
49\r
50} SCSI_DISK_DEV;\r
51\r
52#define SCSI_DISK_DEV_FROM_THIS(a) CR (a, SCSI_DISK_DEV, BlkIo, SCSI_DISK_DEV_SIGNATURE)\r
53\r
54//\r
55// Global Variables\r
56//\r
57extern EFI_DRIVER_BINDING_PROTOCOL gScsiDiskDriverBinding;\r
58extern EFI_COMPONENT_NAME_PROTOCOL gScsiDiskComponentName;\r
59//\r
60// action code used in detect media process\r
61//\r
62#define ACTION_NO_ACTION 0x00\r
63#define ACTION_READ_CAPACITY 0x01\r
64#define ACTION_RETRY_COMMAND_LATER 0x02\r
65\r
92dda53e 66EFI_STATUS\r
67EFIAPI\r
68ScsiDiskDriverBindingSupported (\r
69 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
70 IN EFI_HANDLE Controller,\r
71 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
72 );\r
73\r
74EFI_STATUS\r
75EFIAPI\r
76ScsiDiskDriverBindingStart (\r
77 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
78 IN EFI_HANDLE Controller,\r
79 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
80 );\r
81\r
82EFI_STATUS\r
83EFIAPI\r
84ScsiDiskDriverBindingStop (\r
85 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
86 IN EFI_HANDLE Controller,\r
87 IN UINTN NumberOfChildren,\r
88 IN EFI_HANDLE *ChildHandleBuffer\r
89 );\r
90\r
91//\r
92// EFI Component Name Functions\r
93//\r
94EFI_STATUS\r
95EFIAPI\r
96ScsiDiskComponentNameGetDriverName (\r
97 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
98 IN CHAR8 *Language,\r
99 OUT CHAR16 **DriverName\r
100 );\r
101\r
102EFI_STATUS\r
103EFIAPI\r
104ScsiDiskComponentNameGetControllerName (\r
105 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
106 IN EFI_HANDLE ControllerHandle,\r
107 IN EFI_HANDLE ChildHandle OPTIONAL,\r
108 IN CHAR8 *Language,\r
109 OUT CHAR16 **ControllerName\r
110 );\r
111\r
878ddf1f 112EFI_STATUS\r
113EFIAPI\r
114ScsiDiskReset (\r
115 IN EFI_BLOCK_IO_PROTOCOL *This,\r
116 IN BOOLEAN ExtendedVerification\r
117 )\r
118/*++\r
119\r
120Routine Description:\r
121\r
122 TODO: Add function description\r
123\r
124Arguments:\r
125\r
126 This - TODO: add argument description\r
127 ExtendedVerification - TODO: add argument description\r
128\r
129Returns:\r
130\r
131 TODO: add return values\r
132\r
133--*/\r
134;\r
135\r
136EFI_STATUS\r
137EFIAPI\r
138ScsiDiskReadBlocks (\r
139 IN EFI_BLOCK_IO_PROTOCOL *This,\r
140 IN UINT32 MediaId,\r
141 IN EFI_LBA LBA,\r
142 IN UINTN BufferSize,\r
143 OUT VOID *Buffer\r
144 )\r
145/*++\r
146\r
147Routine Description:\r
148\r
149 TODO: Add function description\r
150\r
151Arguments:\r
152\r
153 This - TODO: add argument description\r
154 MediaId - TODO: add argument description\r
155 LBA - TODO: add argument description\r
156 BufferSize - TODO: add argument description\r
157 Buffer - TODO: add argument description\r
158\r
159Returns:\r
160\r
161 TODO: add return values\r
162\r
163--*/\r
164;\r
165\r
166EFI_STATUS\r
167EFIAPI\r
168ScsiDiskWriteBlocks (\r
169 IN EFI_BLOCK_IO_PROTOCOL *This,\r
170 IN UINT32 MediaId,\r
171 IN EFI_LBA LBA,\r
172 IN UINTN BufferSize,\r
173 IN VOID *Buffer\r
174 )\r
175/*++\r
176\r
177Routine Description:\r
178\r
179 TODO: Add function description\r
180\r
181Arguments:\r
182\r
183 This - TODO: add argument description\r
184 MediaId - TODO: add argument description\r
185 LBA - TODO: add argument description\r
186 BufferSize - TODO: add argument description\r
187 Buffer - TODO: add argument description\r
188\r
189Returns:\r
190\r
191 TODO: add return values\r
192\r
193--*/\r
194;\r
195\r
196EFI_STATUS\r
197EFIAPI\r
198ScsiDiskFlushBlocks (\r
199 IN EFI_BLOCK_IO_PROTOCOL *This\r
200 )\r
201/*++\r
202\r
203Routine Description:\r
204\r
205 TODO: Add function description\r
206\r
207Arguments:\r
208\r
209 This - 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
219ScsiDiskDetectMedia (\r
220 SCSI_DISK_DEV *ScsiDiskDevice,\r
221 BOOLEAN MustReadCap,\r
222 BOOLEAN *MediaChange\r
223 )\r
224/*++\r
225\r
226Routine Description:\r
227\r
228 TODO: Add function description\r
229\r
230Arguments:\r
231\r
232 ScsiDiskDevice - TODO: add argument description\r
233 MustReadCap - TODO: add argument description\r
234 MediaChange - TODO: add argument description\r
235\r
236Returns:\r
237\r
238 TODO: add return values\r
239\r
240--*/\r
241;\r
242 \r
243EFI_STATUS\r
244ScsiDiskTestUnitReady (\r
245 SCSI_DISK_DEV *ScsiDiskDevice,\r
246 BOOLEAN *NeedRetry,\r
247 EFI_SCSI_SENSE_DATA **SenseDataArray,\r
248 UINTN *NumberOfSenseKeys\r
249 )\r
250/*++\r
251\r
252Routine Description:\r
253\r
254 TODO: Add function description\r
255\r
256Arguments:\r
257\r
258 ScsiDiskDevice - TODO: add argument description\r
259 NeedRetry - TODO: add argument description\r
260 SenseDataArray - TODO: add argument description\r
261 NumberOfSenseKeys - TODO: add argument description\r
262\r
263Returns:\r
264\r
265 TODO: add return values\r
266\r
267--*/\r
268;\r
269\r
270EFI_STATUS\r
271DetectMediaParsingSenseKeys (\r
272 SCSI_DISK_DEV *ScsiDiskDevice,\r
273 EFI_SCSI_SENSE_DATA *SenseData,\r
274 UINTN NumberOfSenseKeys,\r
275 UINTN *Action\r
276 )\r
277/*++\r
278\r
279Routine Description:\r
280\r
281 TODO: Add function description\r
282\r
283Arguments:\r
284\r
285 ScsiDiskDevice - TODO: add argument description\r
286 SenseData - TODO: add argument description\r
287 NumberOfSenseKeys - TODO: add argument description\r
288 Action - TODO: add argument description\r
289\r
290Returns:\r
291\r
292 TODO: add return values\r
293\r
294--*/\r
295;\r
296\r
297EFI_STATUS\r
298ScsiDiskReadCapacity (\r
299 SCSI_DISK_DEV *ScsiDiskDevice,\r
300 BOOLEAN *NeedRetry,\r
301 EFI_SCSI_SENSE_DATA **SenseDataArray,\r
302 UINTN *NumberOfSenseKeys\r
303 )\r
304/*++\r
305\r
306Routine Description:\r
307\r
308 TODO: Add function description\r
309\r
310Arguments:\r
311\r
312 ScsiDiskDevice - TODO: add argument description\r
313 NeedRetry - TODO: add argument description\r
314 SenseDataArray - TODO: add argument description\r
315 NumberOfSenseKeys - TODO: add argument description\r
316\r
317Returns:\r
318\r
319 TODO: add return values\r
320\r
321--*/\r
322;\r
323\r
324EFI_STATUS\r
325CheckHostAdapterStatus (\r
326 UINT8 HostAdapterStatus\r
327 )\r
328/*++\r
329\r
330Routine Description:\r
331\r
332 TODO: Add function description\r
333\r
334Arguments:\r
335\r
336 HostAdapterStatus - TODO: add argument description\r
337\r
338Returns:\r
339\r
340 TODO: add return values\r
341\r
342--*/\r
343;\r
344\r
345EFI_STATUS\r
346CheckTargetStatus (\r
347 UINT8 TargetStatus\r
348 )\r
349/*++\r
350\r
351Routine Description:\r
352\r
353 TODO: Add function description\r
354\r
355Arguments:\r
356\r
357 TargetStatus - TODO: add argument description\r
358\r
359Returns:\r
360\r
361 TODO: add return values\r
362\r
363--*/\r
364;\r
365\r
366EFI_STATUS\r
367ScsiDiskRequestSenseKeys (\r
368 SCSI_DISK_DEV *ScsiDiskDevice,\r
369 BOOLEAN *NeedRetry,\r
370 EFI_SCSI_SENSE_DATA **SenseDataArray,\r
371 UINTN *NumberOfSenseKeys,\r
372 BOOLEAN AskResetIfError\r
373 )\r
374/*++\r
375\r
376Routine Description:\r
377\r
378 TODO: Add function description\r
379\r
380Arguments:\r
381\r
382 ScsiDiskDevice - TODO: add argument description\r
383 NeedRetry - TODO: add argument description\r
384 SenseDataArray - TODO: add argument description\r
385 NumberOfSenseKeys - TODO: add argument description\r
386 AskResetIfError - TODO: add argument description\r
387\r
388Returns:\r
389\r
390 TODO: add return values\r
391\r
392--*/\r
393;\r
394\r
395EFI_STATUS\r
396ScsiDiskInquiryDevice (\r
397 SCSI_DISK_DEV *ScsiDiskDevice,\r
398 BOOLEAN *NeedRetry\r
399 )\r
400/*++\r
401\r
402Routine Description:\r
403\r
404 TODO: Add function description\r
405\r
406Arguments:\r
407\r
408 ScsiDiskDevice - TODO: add argument description\r
409 NeedRetry - TODO: add argument description\r
410\r
411Returns:\r
412\r
413 TODO: add return values\r
414\r
415--*/\r
416;\r
417\r
418VOID\r
419ParseInquiryData (\r
420 SCSI_DISK_DEV *ScsiDiskDevice\r
421 )\r
422/*++\r
423\r
424Routine Description:\r
425\r
426 TODO: Add function description\r
427\r
428Arguments:\r
429\r
430 ScsiDiskDevice - TODO: add argument description\r
431\r
432Returns:\r
433\r
434 TODO: add return values\r
435\r
436--*/\r
437;\r
438\r
439EFI_STATUS\r
440ScsiDiskReadSectors (\r
441 SCSI_DISK_DEV *ScsiDiskDevice,\r
442 VOID *Buffer,\r
443 EFI_LBA Lba,\r
444 UINTN NumberOfBlocks\r
445 )\r
446/*++\r
447\r
448Routine Description:\r
449\r
450 TODO: Add function description\r
451\r
452Arguments:\r
453\r
454 ScsiDiskDevice - TODO: add argument description\r
455 Buffer - TODO: add argument description\r
456 Lba - TODO: add argument description\r
457 NumberOfBlocks - TODO: add argument description\r
458\r
459Returns:\r
460\r
461 TODO: add return values\r
462\r
463--*/\r
464;\r
465\r
466EFI_STATUS\r
467ScsiDiskWriteSectors (\r
468 SCSI_DISK_DEV *ScsiDiskDevice,\r
469 VOID *Buffer,\r
470 EFI_LBA Lba,\r
471 UINTN NumberOfBlocks\r
472 )\r
473/*++\r
474\r
475Routine Description:\r
476\r
477 TODO: Add function description\r
478\r
479Arguments:\r
480\r
481 ScsiDiskDevice - TODO: add argument description\r
482 Buffer - TODO: add argument description\r
483 Lba - TODO: add argument description\r
484 NumberOfBlocks - TODO: add argument description\r
485\r
486Returns:\r
487\r
488 TODO: add return values\r
489\r
490--*/\r
491;\r
492\r
493EFI_STATUS\r
494ScsiDiskRead10 (\r
495 SCSI_DISK_DEV *ScsiDiskDevice,\r
496 BOOLEAN *NeedRetry,\r
497 EFI_SCSI_SENSE_DATA **SenseDataArray,\r
498 UINTN *NumberOfSenseKeys,\r
499 UINT64 Timeout,\r
500 UINT8 *DataBuffer,\r
501 UINT32 *DataLength,\r
502 UINT32 StartLba,\r
503 UINT32 SectorSize\r
504 )\r
505/*++\r
506\r
507Routine Description:\r
508\r
509 TODO: Add function description\r
510\r
511Arguments:\r
512\r
513 ScsiDiskDevice - TODO: add argument description\r
514 NeedRetry - TODO: add argument description\r
515 SenseDataArray - TODO: add argument description\r
516 NumberOfSenseKeys - TODO: add argument description\r
517 Timeout - TODO: add argument description\r
518 DataBuffer - TODO: add argument description\r
519 DataLength - TODO: add argument description\r
520 StartLba - TODO: add argument description\r
521 SectorSize - TODO: add argument description\r
522\r
523Returns:\r
524\r
525 TODO: add return values\r
526\r
527--*/\r
528;\r
529\r
530EFI_STATUS\r
531ScsiDiskWrite10 (\r
532 SCSI_DISK_DEV *ScsiDiskDevice,\r
533 BOOLEAN *NeedRetry,\r
534 EFI_SCSI_SENSE_DATA **SenseDataArray,\r
535 UINTN *NumberOfSenseKeys,\r
536 UINT64 Timeout,\r
537 UINT8 *DataBuffer,\r
538 UINT32 *DataLength,\r
539 UINT32 StartLba,\r
540 UINT32 SectorSize\r
541 )\r
542/*++\r
543\r
544Routine Description:\r
545\r
546 TODO: Add function description\r
547\r
548Arguments:\r
549\r
550 ScsiDiskDevice - TODO: add argument description\r
551 NeedRetry - TODO: add argument description\r
552 SenseDataArray - TODO: add argument description\r
553 NumberOfSenseKeys - TODO: add argument description\r
554 Timeout - TODO: add argument description\r
555 DataBuffer - TODO: add argument description\r
556 DataLength - TODO: add argument description\r
557 StartLba - TODO: add argument description\r
558 SectorSize - TODO: add argument description\r
559\r
560Returns:\r
561\r
562 TODO: add return values\r
563\r
564--*/\r
565;\r
566\r
567VOID\r
568GetMediaInfo (\r
569 SCSI_DISK_DEV *ScsiDiskDevice,\r
570 EFI_SCSI_DISK_CAPACITY_DATA *Capacity\r
571 )\r
572/*++\r
573\r
574Routine Description:\r
575\r
576 TODO: Add function description\r
577\r
578Arguments:\r
579\r
580 ScsiDiskDevice - TODO: add argument description\r
581 Capacity - TODO: add argument description\r
582\r
583Returns:\r
584\r
585 TODO: add return values\r
586\r
587--*/\r
588;\r
589\r
590BOOLEAN\r
591ScsiDiskIsNoMedia (\r
592 IN EFI_SCSI_SENSE_DATA *SenseData,\r
593 IN UINTN SenseCounts\r
594 )\r
595/*++\r
596\r
597Routine Description:\r
598\r
599 TODO: Add function description\r
600\r
601Arguments:\r
602\r
603 SenseData - TODO: add argument description\r
604 SenseCounts - TODO: add argument description\r
605\r
606Returns:\r
607\r
608 TODO: add return values\r
609\r
610--*/\r
611;\r
612\r
613BOOLEAN\r
614ScsiDiskIsMediaError (\r
615 IN EFI_SCSI_SENSE_DATA *SenseData,\r
616 IN UINTN SenseCounts\r
617 )\r
618/*++\r
619\r
620Routine Description:\r
621\r
622 TODO: Add function description\r
623\r
624Arguments:\r
625\r
626 SenseData - TODO: add argument description\r
627 SenseCounts - TODO: add argument description\r
628\r
629Returns:\r
630\r
631 TODO: add return values\r
632\r
633--*/\r
634;\r
635\r
636BOOLEAN\r
637ScsiDiskIsHardwareError (\r
638 IN EFI_SCSI_SENSE_DATA *SenseData,\r
639 IN UINTN SenseCounts\r
640 )\r
641/*++\r
642\r
643Routine Description:\r
644\r
645 TODO: Add function description\r
646\r
647Arguments:\r
648\r
649 SenseData - TODO: add argument description\r
650 SenseCounts - TODO: add argument description\r
651\r
652Returns:\r
653\r
654 TODO: add return values\r
655\r
656--*/\r
657;\r
658\r
659BOOLEAN\r
660ScsiDiskIsMediaChange (\r
661 IN EFI_SCSI_SENSE_DATA *SenseData,\r
662 IN UINTN SenseCounts\r
663 )\r
664/*++\r
665\r
666Routine Description:\r
667\r
668 TODO: Add function description\r
669\r
670Arguments:\r
671\r
672 SenseData - TODO: add argument description\r
673 SenseCounts - TODO: add argument description\r
674\r
675Returns:\r
676\r
677 TODO: add return values\r
678\r
679--*/\r
680;\r
681\r
682BOOLEAN\r
683ScsiDiskIsResetBefore (\r
684 IN EFI_SCSI_SENSE_DATA *SenseData,\r
685 IN UINTN SenseCounts\r
686 )\r
687/*++\r
688\r
689Routine Description:\r
690\r
691 TODO: Add function description\r
692\r
693Arguments:\r
694\r
695 SenseData - TODO: add argument description\r
696 SenseCounts - TODO: add argument description\r
697\r
698Returns:\r
699\r
700 TODO: add return values\r
701\r
702--*/\r
703;\r
704\r
705BOOLEAN\r
706ScsiDiskIsDriveReady (\r
707 IN EFI_SCSI_SENSE_DATA *SenseData,\r
708 IN UINTN SenseCounts,\r
709 OUT BOOLEAN *NeedRetry\r
710 )\r
711/*++\r
712\r
713Routine Description:\r
714\r
715 TODO: Add function description\r
716\r
717Arguments:\r
718\r
719 SenseData - TODO: add argument description\r
720 SenseCounts - TODO: add argument description\r
721 NeedRetry - TODO: add argument description\r
722\r
723Returns:\r
724\r
725 TODO: add return values\r
726\r
727--*/\r
728;\r
729\r
730BOOLEAN\r
731ScsiDiskHaveSenseKey (\r
732 IN EFI_SCSI_SENSE_DATA *SenseData,\r
733 IN UINTN SenseCounts\r
734 )\r
735/*++\r
736\r
737Routine Description:\r
738\r
739 TODO: Add function description\r
740\r
741Arguments:\r
742\r
743 SenseData - TODO: add argument description\r
744 SenseCounts - TODO: add argument description\r
745\r
746Returns:\r
747\r
748 TODO: add return values\r
749\r
750--*/\r
751;\r
752\r
753VOID\r
754ReleaseScsiDiskDeviceResources (\r
755 IN SCSI_DISK_DEV *ScsiDiskDevice\r
756 )\r
757/*++\r
758\r
759Routine Description:\r
760\r
761 TODO: Add function description\r
762\r
763Arguments:\r
764\r
765 ScsiDiskDevice - TODO: add argument description\r
766\r
767Returns:\r
768\r
769 TODO: add return values\r
770\r
771--*/\r
772;\r
773\r
774#endif\r