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