]> git.proxmox.com Git - mirror_edk2.git/blame - IntelFrameworkModulePkg/Bus/Isa/IsaFloppyDxe/IsaFloppy.h
Remove ambiguous auto-increment usage. (gcc warning)
[mirror_edk2.git] / IntelFrameworkModulePkg / Bus / Isa / IsaFloppyDxe / IsaFloppy.h
CommitLineData
f8cd287b 1/**@file\r
11f43dfd 2 Include for ISA Floppy Driver\r
3 Define the data structure and so on\r
f8cd287b 4 \r
5Copyright (c) 2006 - 2007, Intel Corporation.<BR>\r
6All rights reserved. This program and the accompanying materials\r
7are licensed and made available under the terms and conditions of the BSD License\r
8which accompanies this distribution. The full text of the license may be found at\r
9http://opensource.org/licenses/bsd-license.php\r
11f43dfd 10\r
f8cd287b 11THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11f43dfd 13\r
f8cd287b 14**/\r
11f43dfd 15\r
16#ifndef _ISA_FLOPPY_H\r
17#define _ISA_FLOPPY_H\r
18\r
19#include <PiDxe.h>\r
20#include <FrameworkPei.h>\r
ed7748fe 21\r
11f43dfd 22#include <Protocol/BlockIo.h>\r
23#include <Protocol/IsaIo.h>\r
24#include <Protocol/DevicePath.h>\r
ed7748fe 25\r
11f43dfd 26#include <Library/TimerLib.h>\r
27#include <Library/DebugLib.h>\r
28#include <Library/UefiDriverEntryPoint.h>\r
29#include <Library/BaseLib.h>\r
30#include <Library/UefiLib.h>\r
31#include <Library/BaseMemoryLib.h>\r
32#include <Library/MemoryAllocationLib.h>\r
33#include <Library/UefiBootServicesTableLib.h>\r
34#include <Library/ReportStatusCodeLib.h>\r
35//\r
36// Driver Binding Externs\r
37//\r
f3d08ccf 38extern EFI_DRIVER_BINDING_PROTOCOL gFdcControllerDriver;\r
39extern EFI_COMPONENT_NAME_PROTOCOL gIsaFloppyComponentName;\r
40extern EFI_COMPONENT_NAME2_PROTOCOL gIsaFloppyComponentName2;\r
11f43dfd 41\r
42//\r
43// define some value\r
44//\r
45#define STALL_1_SECOND 1000000\r
46#define STALL_1_MSECOND 1000\r
47\r
48#define DATA_IN 1\r
49#define DATA_OUT 0\r
50#define READ 0\r
51#define WRITE 1\r
52\r
53//\r
54// Internal Data Structures\r
55//\r
56#define FDC_BLK_IO_DEV_SIGNATURE EFI_SIGNATURE_32 ('F', 'B', 'I', 'O')\r
57#define FLOPPY_CONTROLLER_CONTEXT_SIGNATURE EFI_SIGNATURE_32 ('F', 'D', 'C', 'C')\r
58\r
59typedef enum {\r
60 FDC_DISK0 = 0,\r
61 FDC_DISK1 = 1,\r
62 FDC_MAX_DISK= 2\r
63} EFI_FDC_DISK;\r
64\r
65typedef struct {\r
66 UINT32 Signature;\r
67 LIST_ENTRY Link;\r
68 BOOLEAN FddResetPerformed;\r
69 EFI_STATUS FddResetStatus;\r
70 BOOLEAN NeedRecalibrate;\r
71 UINT8 NumberOfDrive;\r
72 UINT16 BaseAddress;\r
73} FLOPPY_CONTROLLER_CONTEXT;\r
74\r
75typedef struct {\r
76 UINTN Signature;\r
77 EFI_HANDLE Handle;\r
78 EFI_BLOCK_IO_PROTOCOL BlkIo;\r
79 EFI_BLOCK_IO_MEDIA BlkMedia;\r
80\r
81 EFI_ISA_IO_PROTOCOL *IsaIo;\r
82\r
83 UINT16 BaseAddress;\r
84\r
85 EFI_FDC_DISK Disk;\r
86 UINT8 PresentCylinderNumber;\r
87 UINT8 *Cache;\r
88\r
89 EFI_EVENT Event;\r
90 EFI_UNICODE_STRING_TABLE *ControllerNameTable;\r
91 FLOPPY_CONTROLLER_CONTEXT *ControllerState;\r
92\r
93 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
94} FDC_BLK_IO_DEV;\r
95\r
96#include "ComponentName.h"\r
97\r
98#define FDD_BLK_IO_FROM_THIS(a) CR (a, FDC_BLK_IO_DEV, BlkIo, FDC_BLK_IO_DEV_SIGNATURE)\r
99#define FLOPPY_CONTROLLER_FROM_LIST_ENTRY(a) \\r
100 CR (a, \\r
101 FLOPPY_CONTROLLER_CONTEXT, \\r
102 Link, \\r
103 FLOPPY_CONTROLLER_CONTEXT_SIGNATURE \\r
104 )\r
105\r
106#define DISK_1440K_EOT 0x12\r
107#define DISK_1440K_GPL 0x1b\r
108#define DISK_1440K_DTL 0xff\r
109#define DISK_1440K_NUMBER 0x02\r
110#define DISK_1440K_MAXTRACKNUM 0x4f\r
111#define DISK_1440K_BYTEPERSECTOR 512\r
112\r
113typedef struct {\r
114 UINT8 CommandCode;\r
115 UINT8 DiskHeadSel;\r
116 UINT8 Cylinder;\r
117 UINT8 Head;\r
118 UINT8 Sector;\r
119 UINT8 Number;\r
120 UINT8 EndOfTrack;\r
121 UINT8 GapLength;\r
122 UINT8 DataLength;\r
123} FDD_COMMAND_PACKET1;\r
124\r
125typedef struct {\r
126 UINT8 CommandCode;\r
127 UINT8 DiskHeadSel;\r
128} FDD_COMMAND_PACKET2;\r
129\r
130typedef struct {\r
131 UINT8 CommandCode;\r
132 UINT8 SrtHut;\r
133 UINT8 HltNd;\r
134} FDD_SPECIFY_CMD;\r
135\r
136typedef struct {\r
137 UINT8 CommandCode;\r
138 UINT8 DiskHeadSel;\r
139 UINT8 NewCylinder;\r
140} FDD_SEEK_CMD;\r
141\r
142typedef struct {\r
143 UINT8 CommandCode;\r
144 UINT8 DiskHeadSel;\r
145 UINT8 Cylinder;\r
146 UINT8 Head;\r
147 UINT8 Sector;\r
148 UINT8 EndOfTrack;\r
149 UINT8 GapLength;\r
150 UINT8 ScanTestPause;\r
151} FDD_SCAN_CMD;\r
152\r
153typedef struct {\r
154 UINT8 Status0;\r
155 UINT8 Status1;\r
156 UINT8 Status2;\r
157 UINT8 C;\r
158 UINT8 H;\r
159 UINT8 S;\r
160 UINT8 Number;\r
161} FDD_RESULT_PACKET;\r
162\r
163//\r
164// FDC Registers\r
165//\r
166//\r
167// 0x3F2 Digital Output Register\r
168//\r
169#define FDC_REGISTER_DOR 2\r
170\r
171//\r
172// 0x3F4 Main Status Register\r
173//\r
174#define FDC_REGISTER_MSR 4\r
175\r
176//\r
177// 0x3F5 Data Register\r
178//\r
179#define FDC_REGISTER_DTR 5\r
180\r
181//\r
182// 0x3F7 Configuration Control Register(data rate select)\r
183//\r
184#define FDC_REGISTER_CCR 7\r
185\r
186//\r
187// 0x3F7 Digital Input Register(diskchange)\r
188//\r
189#define FDC_REGISTER_DIR 7\r
190\r
191\r
192\r
193//\r
194// FDC Register Bit Definitions\r
195//\r
196//\r
197// Digital Out Register(WO)\r
198//\r
199//\r
200// Select Drive: 0=A 1=B\r
201//\r
202#define SELECT_DRV BIT0\r
203\r
204//\r
205// Reset FDC\r
206//\r
207#define RESET_FDC BIT2\r
208\r
209//\r
210// Enable Int & DMA\r
211//\r
212#define INT_DMA_ENABLE BIT3\r
213\r
214//\r
215// Turn On Drive A Motor\r
216//\r
217#define DRVA_MOTOR_ON BIT4\r
218\r
219//\r
220// Turn On Drive B Motor\r
221//\r
222#define DRVB_MOTOR_ON BIT5\r
223\r
224//\r
225// Main Status Register(RO)\r
226//\r
227//\r
228// Drive A Busy\r
229//\r
230#define MSR_DAB BIT0\r
231\r
232//\r
233// Drive B Busy\r
234//\r
235#define MSR_DBB BIT1\r
236\r
237//\r
238// FDC Busy\r
239//\r
240#define MSR_CB BIT4\r
241\r
242//\r
243// Non-DMA Mode\r
244//\r
245#define MSR_NDM BIT5\r
246\r
247//\r
248// Data Input/Output\r
249//\r
250#define MSR_DIO BIT6\r
251\r
252//\r
253// Request For Master\r
254//\r
255#define MSR_RQM BIT7\r
256\r
257//\r
258// Configuration Control Register(WO)\r
259//\r
260//\r
261// Data Rate select\r
262//\r
263#define CCR_DRC (BIT0 | BIT1)\r
264\r
265//\r
266// Digital Input Register(RO)\r
267//\r
268//\r
269// Disk change line\r
270//\r
271#define DIR_DCL BIT7\r
272//\r
273// #define CCR_DCL BIT7 // Diskette change\r
274//\r
275// 500K\r
276//\r
277#define DRC_500KBS 0x0\r
278\r
279//\r
280// 300K\r
281//\r
282#define DRC_300KBS 0x01\r
283\r
284//\r
285// 250K\r
286//\r
287#define DRC_250KBS 0x02\r
288\r
289//\r
290// FDC Command Code\r
291//\r
292#define READ_DATA_CMD 0x06\r
293#define WRITE_DATA_CMD 0x05\r
294#define WRITE_DEL_DATA_CMD 0x09\r
295#define READ_DEL_DATA_CMD 0x0C\r
296#define READ_TRACK_CMD 0x02\r
297#define READ_ID_CMD 0x0A\r
298#define FORMAT_TRACK_CMD 0x0D\r
299#define SCAN_EQU_CMD 0x11\r
300#define SCAN_LOW_EQU_CMD 0x19\r
301#define SCAN_HIGH_EQU_CMD 0x1D\r
302#define SEEK_CMD 0x0F\r
303#define RECALIBRATE_CMD 0x07\r
304#define SENSE_INT_STATUS_CMD 0x08\r
305#define SPECIFY_CMD 0x03\r
306#define SENSE_DRV_STATUS_CMD 0x04\r
307\r
308//\r
309// CMD_MT: Multi_Track Selector\r
310// when set , this flag selects the multi-track operating mode.\r
311// In this mode, the FDC treats a complete cylinder under head0 and 1\r
312// as a single track\r
313//\r
314#define CMD_MT BIT7\r
315\r
316//\r
317// CMD_MFM: MFM/FM Mode Selector\r
318// A one selects the double density(MFM) mode\r
319// A zero selects single density (FM) mode\r
320//\r
321#define CMD_MFM BIT6\r
322\r
323//\r
324// CMD_SK: Skip Flag\r
325// When set to 1, sectors containing a deleted data address mark will\r
326// automatically be skipped during the execution of Read Data.\r
327// When set to 0, the sector is read or written the same as the read and\r
328// write commands.\r
329//\r
330#define CMD_SK BIT5\r
331\r
332//\r
333// FDC Status Register Bit Definitions\r
334//\r
335//\r
336// Status Register 0\r
337//\r
338//\r
339// Interrupt Code\r
340//\r
341#define STS0_IC (BIT7 | BIT6)\r
342\r
343//\r
344// Seek End: the FDC completed a seek or recalibrate command\r
345//\r
346#define STS0_SE BIT5\r
347\r
348//\r
349// Equipment Check\r
350//\r
351#define STS0_EC BIT4\r
352\r
353//\r
354// Not Ready(unused), this bit is always 0\r
355//\r
356#define STS0_NR BIT3\r
357\r
358//\r
359// Head Address: the current head address\r
360//\r
361#define STS0_HA BIT2\r
362\r
363//\r
364// STS0_US1 & STS0_US0: Drive Select(the current selected drive)\r
365//\r
366//\r
367// Unit Select1\r
368//\r
369#define STS0_US1 BIT1\r
370\r
371//\r
372// Unit Select0\r
373//\r
374#define STS0_US0 BIT0\r
375\r
376//\r
377// Status Register 1\r
378//\r
379//\r
380// End of Cylinder\r
381//\r
382#define STS1_EN BIT7\r
383\r
384//\r
385// BIT6 is unused\r
386//\r
387//\r
388// Data Error: The FDC detected a CRC error in either the ID field or\r
389// data field of a sector\r
390//\r
391#define STS1_DE BIT5\r
392\r
393//\r
394// Overrun/Underrun: Becomes set if FDC does not receive CPU or DMA service\r
395// within the required time interval\r
396//\r
397#define STS1_OR BIT4\r
398\r
399//\r
400// BIT3 is unused\r
401//\r
402//\r
403// No data\r
404//\r
405#define STS1_ND BIT2\r
406\r
407//\r
408// Not Writable\r
409//\r
410#define STS1_NW BIT1\r
411\r
412//\r
413// Missing Address Mark\r
414//\r
415#define STS1_MA BIT0\r
416\r
417//\r
418// Control Mark\r
419//\r
420#define STS2_CM BIT6\r
421\r
422//\r
423// Data Error in Data Field: The FDC detected a CRC error in the data field\r
424//\r
425#define STS2_DD BIT5\r
426\r
427//\r
428// Wrong Cylinder: The track address from sector ID field is different from\r
429// the track address maintained inside FDC\r
430//\r
431#define STS2_WC BIT4\r
432\r
433//\r
434// Bad Cylinder\r
435//\r
436#define STS2_BC BIT1\r
437\r
438//\r
439// Missing Address Mark in Data Field\r
440//\r
441#define STS2_MD BIT0\r
442\r
443//\r
444// Write Protected\r
445//\r
446#define STS3_WP BIT6\r
447\r
448//\r
449// Track 0\r
450//\r
451#define STS3_T0 BIT4\r
452\r
453//\r
454// Head Address\r
455//\r
456#define STS3_HD BIT2\r
457\r
458//\r
459// STS3_US1 & STS3_US0 : Drive Select\r
460//\r
461#define STS3_US1 BIT1\r
462#define STS3_US0 BIT0\r
463\r
464//\r
465// Status Register 0 Interrupt Code Description\r
466//\r
467//\r
468// Normal Termination of Command\r
469//\r
470#define IC_NT 0x0\r
471\r
472//\r
473// Abnormal Termination of Command\r
474//\r
475#define IC_AT 0x40\r
476\r
477//\r
478// Invalid Command\r
479//\r
480#define IC_IC 0x80\r
481\r
482//\r
483// Abnormal Termination caused by Polling\r
484//\r
485#define IC_ATRC 0xC0\r
486\r
487//\r
488// Global Variables\r
489//\r
f3d08ccf 490extern EFI_DRIVER_BINDING_PROTOCOL gFdcControllerDriver;\r
11f43dfd 491\r
492//\r
493// EFI Driver Binding Protocol Functions\r
494//\r
495EFI_STATUS\r
496EFIAPI\r
497FdcControllerDriverSupported (\r
498 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
499 IN EFI_HANDLE Controller,\r
500 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
501 )\r
502/*++\r
503\r
504Routine Description:\r
505\r
506 GC_TODO: Add function description\r
507\r
508Arguments:\r
509\r
510 This - GC_TODO: add argument description\r
511 Controller - GC_TODO: add argument description\r
512 RemainingDevicePath - GC_TODO: add argument description\r
513\r
514Returns:\r
515\r
516 GC_TODO: add return values\r
517\r
518--*/\r
519;\r
520\r
521EFI_STATUS\r
522EFIAPI\r
523FdcControllerDriverStart (\r
524 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
525 IN EFI_HANDLE Controller,\r
526 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
527 )\r
528/*++\r
529\r
530Routine Description:\r
531\r
532 GC_TODO: Add function description\r
533\r
534Arguments:\r
535\r
536 This - GC_TODO: add argument description\r
537 Controller - GC_TODO: add argument description\r
538 RemainingDevicePath - GC_TODO: add argument description\r
539\r
540Returns:\r
541\r
542 GC_TODO: add return values\r
543\r
544--*/\r
545;\r
546\r
547EFI_STATUS\r
548EFIAPI\r
549FdcControllerDriverStop (\r
550 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
551 IN EFI_HANDLE Controller,\r
552 IN UINTN NumberOfChildren,\r
553 IN EFI_HANDLE *ChildHandleBuffer\r
554 )\r
555/*++\r
556\r
557Routine Description:\r
558\r
559 GC_TODO: Add function description\r
560\r
561Arguments:\r
562\r
563 This - GC_TODO: add argument description\r
564 Controller - GC_TODO: add argument description\r
565 NumberOfChildren - GC_TODO: add argument description\r
566 ChildHandleBuffer - GC_TODO: add argument description\r
567\r
568Returns:\r
569\r
570 GC_TODO: add return values\r
571\r
572--*/\r
573;\r
574\r
575//\r
576// EFI Block I/O Protocol Functions\r
577//\r
578EFI_STATUS\r
579EFIAPI\r
580FdcReset (\r
581 IN EFI_BLOCK_IO_PROTOCOL *This,\r
582 IN BOOLEAN ExtendedVerification\r
583 )\r
584/*++\r
585\r
586Routine Description:\r
587\r
588 GC_TODO: Add function description\r
589\r
590Arguments:\r
591\r
592 This - GC_TODO: add argument description\r
593 ExtendedVerification - GC_TODO: add argument description\r
594\r
595Returns:\r
596\r
597 GC_TODO: add return values\r
598\r
599--*/\r
600;\r
601\r
602EFI_STATUS\r
603EFIAPI\r
604FddFlushBlocks (\r
605 IN EFI_BLOCK_IO_PROTOCOL *This\r
606 )\r
607/*++\r
608\r
609Routine Description:\r
610\r
611 GC_TODO: Add function description\r
612\r
613Arguments:\r
614\r
615 This - GC_TODO: add argument description\r
616\r
617Returns:\r
618\r
619 GC_TODO: add return values\r
620\r
621--*/\r
622;\r
623\r
624EFI_STATUS\r
625EFIAPI\r
626FddReadBlocks (\r
627 IN EFI_BLOCK_IO_PROTOCOL *This,\r
628 IN UINT32 MediaId,\r
629 IN EFI_LBA LBA,\r
630 IN UINTN BufferSize,\r
631 OUT VOID *Buffer\r
632 )\r
633/*++\r
634\r
635Routine Description:\r
636\r
637 GC_TODO: Add function description\r
638\r
639Arguments:\r
640\r
641 This - GC_TODO: add argument description\r
642 MediaId - GC_TODO: add argument description\r
643 LBA - GC_TODO: add argument description\r
644 BufferSize - GC_TODO: add argument description\r
645 Buffer - GC_TODO: add argument description\r
646\r
647Returns:\r
648\r
649 GC_TODO: add return values\r
650\r
651--*/\r
652;\r
653\r
654EFI_STATUS\r
655EFIAPI\r
656FddWriteBlocks (\r
657 IN EFI_BLOCK_IO_PROTOCOL *This,\r
658 IN UINT32 MediaId,\r
659 IN EFI_LBA LBA,\r
660 IN UINTN BufferSize,\r
661 IN VOID *Buffer\r
662 )\r
663/*++\r
664\r
665Routine Description:\r
666\r
667 GC_TODO: Add function description\r
668\r
669Arguments:\r
670\r
671 This - GC_TODO: add argument description\r
672 MediaId - GC_TODO: add argument description\r
673 LBA - GC_TODO: add argument description\r
674 BufferSize - GC_TODO: add argument description\r
675 Buffer - GC_TODO: add argument description\r
676\r
677Returns:\r
678\r
679 GC_TODO: add return values\r
680\r
681--*/\r
682;\r
683\r
684//\r
685// Prototypes of internal functions\r
686//\r
687EFI_STATUS\r
688DiscoverFddDevice (\r
689 IN FDC_BLK_IO_DEV *FdcDev\r
690 )\r
691/*++\r
692\r
693Routine Description:\r
694\r
695 GC_TODO: Add function description\r
696\r
697Arguments:\r
698\r
699 FdcDev - GC_TODO: add argument description\r
700\r
701Returns:\r
702\r
703 GC_TODO: add return values\r
704\r
705--*/\r
706;\r
707\r
708EFI_STATUS\r
709FddIdentify (\r
710 IN FDC_BLK_IO_DEV *FdcDev\r
711 )\r
712/*++\r
713\r
714Routine Description:\r
715\r
716 GC_TODO: Add function description\r
717\r
718Arguments:\r
719\r
720 FdcDev - GC_TODO: add argument description\r
721\r
722Returns:\r
723\r
724 GC_TODO: add return values\r
725\r
726--*/\r
727;\r
728\r
729EFI_STATUS\r
730FddReset (\r
731 IN FDC_BLK_IO_DEV *FdcDev\r
732 )\r
733/*++\r
734\r
735Routine Description:\r
736\r
737 GC_TODO: Add function description\r
738\r
739Arguments:\r
740\r
741 FdcDev - GC_TODO: add argument description\r
742\r
743Returns:\r
744\r
745 GC_TODO: add return values\r
746\r
747--*/\r
748;\r
749\r
750EFI_STATUS\r
751MotorOn (\r
752 IN FDC_BLK_IO_DEV *FdcDev\r
753 )\r
754/*++\r
755\r
756Routine Description:\r
757\r
758 GC_TODO: Add function description\r
759\r
760Arguments:\r
761\r
762 FdcDev - GC_TODO: add argument description\r
763\r
764Returns:\r
765\r
766 GC_TODO: add return values\r
767\r
768--*/\r
769;\r
770\r
771EFI_STATUS\r
772MotorOff (\r
773 IN FDC_BLK_IO_DEV *FdcDev\r
774 )\r
775/*++\r
776\r
777Routine Description:\r
778\r
779 GC_TODO: Add function description\r
780\r
781Arguments:\r
782\r
783 FdcDev - GC_TODO: add argument description\r
784\r
785Returns:\r
786\r
787 GC_TODO: add return values\r
788\r
789--*/\r
790;\r
791\r
792EFI_STATUS\r
793DisketChanged (\r
794 IN FDC_BLK_IO_DEV *FdcDev\r
795 )\r
796/*++\r
797\r
798Routine Description:\r
799\r
800 GC_TODO: Add function description\r
801\r
802Arguments:\r
803\r
804 FdcDev - GC_TODO: add argument description\r
805\r
806Returns:\r
807\r
808 GC_TODO: add return values\r
809\r
810--*/\r
811;\r
812\r
813EFI_STATUS\r
814Specify (\r
815 IN FDC_BLK_IO_DEV *FdcDev\r
816 )\r
817/*++\r
818\r
819Routine Description:\r
820\r
821 GC_TODO: Add function description\r
822\r
823Arguments:\r
824\r
825 FdcDev - GC_TODO: add argument description\r
826\r
827Returns:\r
828\r
829 GC_TODO: add return values\r
830\r
831--*/\r
832;\r
833\r
834EFI_STATUS\r
835Recalibrate (\r
836 IN FDC_BLK_IO_DEV *FdcDev\r
837 )\r
838/*++\r
839\r
840Routine Description:\r
841\r
842 GC_TODO: Add function description\r
843\r
844Arguments:\r
845\r
846 FdcDev - GC_TODO: add argument description\r
847\r
848Returns:\r
849\r
850 GC_TODO: add return values\r
851\r
852--*/\r
853;\r
854\r
855EFI_STATUS\r
856Seek (\r
857 IN FDC_BLK_IO_DEV *FdcDev,\r
858 IN EFI_LBA Lba\r
859 )\r
860/*++\r
861\r
862Routine Description:\r
863\r
864 GC_TODO: Add function description\r
865\r
866Arguments:\r
867\r
868 FdcDev - GC_TODO: add argument description\r
869 Lba - GC_TODO: add argument description\r
870\r
871Returns:\r
872\r
873 GC_TODO: add return values\r
874\r
875--*/\r
876;\r
877\r
878EFI_STATUS\r
879SenseIntStatus (\r
880 IN FDC_BLK_IO_DEV *FdcDev,\r
881 IN OUT UINT8 *StatusRegister0,\r
882 IN OUT UINT8 *PresentCylinderNumber\r
883 )\r
884/*++\r
885\r
886Routine Description:\r
887\r
888 GC_TODO: Add function description\r
889\r
890Arguments:\r
891\r
892 FdcDev - GC_TODO: add argument description\r
893 StatusRegister0 - GC_TODO: add argument description\r
894 PresentCylinderNumber - GC_TODO: add argument description\r
895\r
896Returns:\r
897\r
898 GC_TODO: add return values\r
899\r
900--*/\r
901;\r
902\r
903EFI_STATUS\r
904SenseDrvStatus (\r
905 IN FDC_BLK_IO_DEV *FdcDev,\r
906 IN EFI_LBA Lba\r
907 )\r
908/*++\r
909\r
910Routine Description:\r
911\r
912 GC_TODO: Add function description\r
913\r
914Arguments:\r
915\r
916 FdcDev - GC_TODO: add argument description\r
917 Lba - GC_TODO: add argument description\r
918\r
919Returns:\r
920\r
921 GC_TODO: add return values\r
922\r
923--*/\r
924;\r
925\r
926EFI_STATUS\r
927DetectMedia (\r
928 IN FDC_BLK_IO_DEV *FdcDev\r
929 )\r
930/*++\r
931\r
932Routine Description:\r
933\r
934 GC_TODO: Add function description\r
935\r
936Arguments:\r
937\r
938 FdcDev - GC_TODO: add argument description\r
939\r
940Returns:\r
941\r
942 GC_TODO: add return values\r
943\r
944--*/\r
945;\r
946\r
947EFI_STATUS\r
948Setup (\r
949 IN FDC_BLK_IO_DEV *FdcDev\r
950 )\r
951/*++\r
952\r
953Routine Description:\r
954\r
955 GC_TODO: Add function description\r
956\r
957Arguments:\r
958\r
959 FdcDev - GC_TODO: add argument description\r
960\r
961Returns:\r
962\r
963 GC_TODO: add return values\r
964\r
965--*/\r
966;\r
967\r
968EFI_STATUS\r
969ReadWriteDataSector (\r
970 IN FDC_BLK_IO_DEV *FdcDev,\r
971 IN VOID *HostAddress,\r
972 IN EFI_LBA Lba,\r
973 IN UINTN NumberOfBlocks,\r
974 IN BOOLEAN Read\r
975 )\r
976/*++\r
977\r
978Routine Description:\r
979\r
980 GC_TODO: Add function description\r
981\r
982Arguments:\r
983\r
984 FdcDev - GC_TODO: add argument description\r
985 HostAddress - GC_TODO: add argument description\r
986 Lba - GC_TODO: add argument description\r
987 NumberOfBlocks - GC_TODO: add argument description\r
988 Read - GC_TODO: add argument description\r
989\r
990Returns:\r
991\r
992 GC_TODO: add return values\r
993\r
994--*/\r
995;\r
996\r
997VOID\r
998FillPara (\r
999 IN FDC_BLK_IO_DEV *FdcDev,\r
1000 IN EFI_LBA Lba,\r
1001 IN FDD_COMMAND_PACKET1 *Command\r
1002 )\r
1003/*++\r
1004\r
1005Routine Description:\r
1006\r
1007 GC_TODO: Add function description\r
1008\r
1009Arguments:\r
1010\r
1011 FdcDev - GC_TODO: add argument description\r
1012 Lba - GC_TODO: add argument description\r
1013 Command - GC_TODO: add argument description\r
1014\r
1015Returns:\r
1016\r
1017 GC_TODO: add return values\r
1018\r
1019--*/\r
1020;\r
1021\r
1022EFI_STATUS\r
1023DataInByte (\r
1024 IN FDC_BLK_IO_DEV *FdcDev,\r
1025 IN UINT8 *Pointer\r
1026 )\r
1027/*++\r
1028\r
1029Routine Description:\r
1030\r
1031 GC_TODO: Add function description\r
1032\r
1033Arguments:\r
1034\r
1035 FdcDev - GC_TODO: add argument description\r
1036 Pointer - GC_TODO: add argument description\r
1037\r
1038Returns:\r
1039\r
1040 GC_TODO: add return values\r
1041\r
1042--*/\r
1043;\r
1044\r
1045EFI_STATUS\r
1046DataOutByte (\r
1047 IN FDC_BLK_IO_DEV *FdcDev,\r
1048 IN UINT8 *Pointer\r
1049 )\r
1050/*++\r
1051\r
1052Routine Description:\r
1053\r
1054 GC_TODO: Add function description\r
1055\r
1056Arguments:\r
1057\r
1058 FdcDev - GC_TODO: add argument description\r
1059 Pointer - GC_TODO: add argument description\r
1060\r
1061Returns:\r
1062\r
1063 GC_TODO: add return values\r
1064\r
1065--*/\r
1066;\r
1067\r
1068EFI_STATUS\r
1069FddWaitForBSYClear (\r
1070 IN FDC_BLK_IO_DEV *FdcDev,\r
1071 IN UINTN TimeoutInSeconds\r
1072 )\r
1073/*++\r
1074\r
1075Routine Description:\r
1076\r
1077 GC_TODO: Add function description\r
1078\r
1079Arguments:\r
1080\r
1081 FdcDev - GC_TODO: add argument description\r
1082 TimeoutInSeconds - GC_TODO: add argument description\r
1083\r
1084Returns:\r
1085\r
1086 GC_TODO: add return values\r
1087\r
1088--*/\r
1089;\r
1090\r
1091EFI_STATUS\r
1092FddDRQReady (\r
1093 IN FDC_BLK_IO_DEV *FdcDev,\r
1094 IN BOOLEAN Dio,\r
1095 IN UINTN TimeoutInSeconds\r
1096 )\r
1097/*++\r
1098\r
1099Routine Description:\r
1100\r
1101 GC_TODO: Add function description\r
1102\r
1103Arguments:\r
1104\r
1105 FdcDev - GC_TODO: add argument description\r
1106 Dio - GC_TODO: add argument description\r
1107 TimeoutInSeconds - GC_TODO: add argument description\r
1108\r
1109Returns:\r
1110\r
1111 GC_TODO: add return values\r
1112\r
1113--*/\r
1114;\r
1115\r
1116EFI_STATUS\r
1117CheckResult (\r
1118 IN FDD_RESULT_PACKET *Result,\r
1119 IN OUT FDC_BLK_IO_DEV *FdcDev\r
1120 )\r
1121/*++\r
1122\r
1123Routine Description:\r
1124\r
1125 GC_TODO: Add function description\r
1126\r
1127Arguments:\r
1128\r
1129 Result - GC_TODO: add argument description\r
1130 FdcDev - GC_TODO: add argument description\r
1131\r
1132Returns:\r
1133\r
1134 GC_TODO: add return values\r
1135\r
1136--*/\r
1137;\r
1138\r
1139EFI_STATUS\r
1140CheckStatus3 (\r
1141 IN UINT8 StatusRegister3\r
1142 )\r
1143/*++\r
1144\r
1145Routine Description:\r
1146\r
1147 GC_TODO: Add function description\r
1148\r
1149Arguments:\r
1150\r
1151 StatusRegister3 - GC_TODO: add argument description\r
1152\r
1153Returns:\r
1154\r
1155 GC_TODO: add return values\r
1156\r
1157--*/\r
1158;\r
1159\r
1160UINTN\r
1161GetTransferBlockCount (\r
1162 IN FDC_BLK_IO_DEV *FdcDev,\r
1163 IN EFI_LBA LBA,\r
1164 IN UINTN NumberOfBlocks\r
1165 )\r
1166/*++\r
1167\r
1168Routine Description:\r
1169\r
1170 GC_TODO: Add function description\r
1171\r
1172Arguments:\r
1173\r
1174 FdcDev - GC_TODO: add argument description\r
1175 LBA - GC_TODO: add argument description\r
1176 NumberOfBlocks - GC_TODO: add argument description\r
1177\r
1178Returns:\r
1179\r
1180 GC_TODO: add return values\r
1181\r
1182--*/\r
1183;\r
1184\r
1185VOID\r
1186EFIAPI\r
1187FddTimerProc (\r
1188 IN EFI_EVENT Event,\r
1189 IN VOID *Context\r
1190 )\r
1191/*++\r
1192\r
1193Routine Description:\r
1194\r
1195 GC_TODO: Add function description\r
1196\r
1197Arguments:\r
1198\r
1199 Event - GC_TODO: add argument description\r
1200 Context - GC_TODO: add argument description\r
1201\r
1202Returns:\r
1203\r
1204 GC_TODO: add return values\r
1205\r
1206--*/\r
1207;\r
1208\r
1209UINT8\r
1210FdcReadPort (\r
1211 IN FDC_BLK_IO_DEV *FdcDev,\r
1212 IN UINT32 Offset\r
1213 )\r
1214/*++\r
1215\r
1216Routine Description:\r
1217\r
1218 GC_TODO: Add function description\r
1219\r
1220Arguments:\r
1221\r
1222 FdcDev - GC_TODO: add argument description\r
1223 Offset - GC_TODO: add argument description\r
1224\r
1225Returns:\r
1226\r
1227 GC_TODO: add return values\r
1228\r
1229--*/\r
1230;\r
1231\r
1232VOID\r
1233FdcWritePort (\r
1234 IN FDC_BLK_IO_DEV *FdcDev,\r
1235 IN UINT32 Offset,\r
1236 IN UINT8 Data\r
1237 )\r
1238/*++\r
1239\r
1240Routine Description:\r
1241\r
1242 GC_TODO: Add function description\r
1243\r
1244Arguments:\r
1245\r
1246 FdcDev - GC_TODO: add argument description\r
1247 Offset - GC_TODO: add argument description\r
1248 Data - GC_TODO: add argument description\r
1249\r
1250Returns:\r
1251\r
1252 GC_TODO: add return values\r
1253\r
1254--*/\r
1255;\r
1256\r
1257EFI_STATUS\r
1258FddReadWriteBlocks (\r
1259 IN EFI_BLOCK_IO_PROTOCOL *This,\r
1260 IN UINT32 MediaId,\r
1261 IN EFI_LBA LBA,\r
1262 IN UINTN BufferSize,\r
1263 IN BOOLEAN Operation,\r
1264 OUT VOID *Buffer\r
1265 )\r
1266/*++\r
1267\r
1268Routine Description:\r
1269\r
1270 GC_TODO: Add function description\r
1271\r
1272Arguments:\r
1273\r
1274 This - GC_TODO: add argument description\r
1275 MediaId - GC_TODO: add argument description\r
1276 LBA - GC_TODO: add argument description\r
1277 BufferSize - GC_TODO: add argument description\r
1278 Operation - GC_TODO: add argument description\r
1279 Buffer - GC_TODO: add argument description\r
1280\r
1281Returns:\r
1282\r
1283 GC_TODO: add return values\r
1284\r
1285--*/\r
1286;\r
1287\r
1288VOID\r
1289FdcFreeCache (\r
1290 IN FDC_BLK_IO_DEV *FdcDev\r
1291 )\r
1292/*++\r
1293\r
1294Routine Description:\r
1295\r
1296 GC_TODO: Add function description\r
1297\r
1298Arguments:\r
1299\r
1300 FdcDev - GC_TODO: add argument description\r
1301\r
1302Returns:\r
1303\r
1304 GC_TODO: add return values\r
1305\r
1306--*/\r
1307;\r
1308\r
1309#endif\r