]> git.proxmox.com Git - mirror_edk2.git/blame - IntelFrameworkModulePkg/Bus/Isa/IsaFloppyDxe/Dxe/IsaFloppy.h
Rename IsaFloppy to IsaFloppyDxe
[mirror_edk2.git] / IntelFrameworkModulePkg / Bus / Isa / IsaFloppyDxe / Dxe / IsaFloppy.h
CommitLineData
11f43dfd 1/*++\r
2\r
6db49ee6 3 Copyright (c) 2006 - 2007, Intel Corporation<BR>\r
4 All rights reserved. This program and the accompanying materials\r
5 are licensed and made available under the terms and conditions of the BSD License\r
6 which accompanies this distribution. The full text of the license may be found at\r
7 http://opensource.org/licenses/bsd-license.php\r
8\r
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11f43dfd 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