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