mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-10-31 12:46:42 +00:00 
			
		
		
		
	 f3d08ccf1a
			
		
	
	
		f3d08ccf1a
		
	
	
	
	
		
			
			git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3996 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			1310 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			1310 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /**@file
 | |
|   Include for ISA Floppy Driver
 | |
|   Define the data structure and so on
 | |
|   
 | |
| Copyright (c) 2006 - 2007, Intel Corporation.<BR>
 | |
| All rights reserved. This program and the accompanying materials
 | |
| are licensed and made available under the terms and conditions of the BSD License
 | |
| which accompanies this distribution.  The full text of the license may be found at
 | |
| http://opensource.org/licenses/bsd-license.php
 | |
| 
 | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef _ISA_FLOPPY_H
 | |
| #define _ISA_FLOPPY_H
 | |
| 
 | |
| #include <PiDxe.h>
 | |
| #include <FrameworkPei.h>
 | |
| 
 | |
| #include <Protocol/BlockIo.h>
 | |
| #include <Protocol/IsaIo.h>
 | |
| #include <Protocol/DevicePath.h>
 | |
| 
 | |
| #include <Library/TimerLib.h>
 | |
| #include <Library/DebugLib.h>
 | |
| #include <Library/UefiDriverEntryPoint.h>
 | |
| #include <Library/BaseLib.h>
 | |
| #include <Library/UefiLib.h>
 | |
| #include <Library/BaseMemoryLib.h>
 | |
| #include <Library/MemoryAllocationLib.h>
 | |
| #include <Library/UefiBootServicesTableLib.h>
 | |
| #include <Library/ReportStatusCodeLib.h>
 | |
| //
 | |
| // Driver Binding Externs
 | |
| //
 | |
| extern EFI_DRIVER_BINDING_PROTOCOL  gFdcControllerDriver;
 | |
| extern EFI_COMPONENT_NAME_PROTOCOL  gIsaFloppyComponentName;
 | |
| extern EFI_COMPONENT_NAME2_PROTOCOL gIsaFloppyComponentName2;
 | |
| 
 | |
| //
 | |
| // define some value
 | |
| //
 | |
| #define STALL_1_SECOND  1000000
 | |
| #define STALL_1_MSECOND 1000
 | |
| 
 | |
| #define DATA_IN         1
 | |
| #define DATA_OUT        0
 | |
| #define READ            0
 | |
| #define WRITE           1
 | |
| 
 | |
| //
 | |
| // Internal Data Structures
 | |
| //
 | |
| #define FDC_BLK_IO_DEV_SIGNATURE            EFI_SIGNATURE_32 ('F', 'B', 'I', 'O')
 | |
| #define FLOPPY_CONTROLLER_CONTEXT_SIGNATURE EFI_SIGNATURE_32 ('F', 'D', 'C', 'C')
 | |
| 
 | |
| typedef enum {
 | |
|   FDC_DISK0   = 0,
 | |
|   FDC_DISK1   = 1,
 | |
|   FDC_MAX_DISK= 2
 | |
| } EFI_FDC_DISK;
 | |
| 
 | |
| typedef struct {
 | |
|   UINT32          Signature;
 | |
|   LIST_ENTRY  Link;
 | |
|   BOOLEAN         FddResetPerformed;
 | |
|   EFI_STATUS      FddResetStatus;
 | |
|   BOOLEAN         NeedRecalibrate;
 | |
|   UINT8           NumberOfDrive;
 | |
|   UINT16          BaseAddress;
 | |
| } FLOPPY_CONTROLLER_CONTEXT;
 | |
| 
 | |
| typedef struct {
 | |
|   UINTN                                     Signature;
 | |
|   EFI_HANDLE                                Handle;
 | |
|   EFI_BLOCK_IO_PROTOCOL                     BlkIo;
 | |
|   EFI_BLOCK_IO_MEDIA                        BlkMedia;
 | |
| 
 | |
|   EFI_ISA_IO_PROTOCOL                       *IsaIo;
 | |
| 
 | |
|   UINT16                                    BaseAddress;
 | |
| 
 | |
|   EFI_FDC_DISK                              Disk;
 | |
|   UINT8                                     PresentCylinderNumber;
 | |
|   UINT8                                     *Cache;
 | |
| 
 | |
|   EFI_EVENT                                 Event;
 | |
|   EFI_UNICODE_STRING_TABLE                  *ControllerNameTable;
 | |
|   FLOPPY_CONTROLLER_CONTEXT                 *ControllerState;
 | |
| 
 | |
|   EFI_DEVICE_PATH_PROTOCOL                  *DevicePath;
 | |
| } FDC_BLK_IO_DEV;
 | |
| 
 | |
| #include "ComponentName.h"
 | |
| 
 | |
| #define FDD_BLK_IO_FROM_THIS(a) CR (a, FDC_BLK_IO_DEV, BlkIo, FDC_BLK_IO_DEV_SIGNATURE)
 | |
| #define FLOPPY_CONTROLLER_FROM_LIST_ENTRY(a) \
 | |
|   CR (a, \
 | |
|       FLOPPY_CONTROLLER_CONTEXT, \
 | |
|       Link, \
 | |
|       FLOPPY_CONTROLLER_CONTEXT_SIGNATURE \
 | |
|       )
 | |
| 
 | |
| #define DISK_1440K_EOT            0x12
 | |
| #define DISK_1440K_GPL            0x1b
 | |
| #define DISK_1440K_DTL            0xff
 | |
| #define DISK_1440K_NUMBER         0x02
 | |
| #define DISK_1440K_MAXTRACKNUM    0x4f
 | |
| #define DISK_1440K_BYTEPERSECTOR  512
 | |
| 
 | |
| typedef struct {
 | |
|   UINT8 CommandCode;
 | |
|   UINT8 DiskHeadSel;
 | |
|   UINT8 Cylinder;
 | |
|   UINT8 Head;
 | |
|   UINT8 Sector;
 | |
|   UINT8 Number;
 | |
|   UINT8 EndOfTrack;
 | |
|   UINT8 GapLength;
 | |
|   UINT8 DataLength;
 | |
| } FDD_COMMAND_PACKET1;
 | |
| 
 | |
| typedef struct {
 | |
|   UINT8 CommandCode;
 | |
|   UINT8 DiskHeadSel;
 | |
| } FDD_COMMAND_PACKET2;
 | |
| 
 | |
| typedef struct {
 | |
|   UINT8 CommandCode;
 | |
|   UINT8 SrtHut;
 | |
|   UINT8 HltNd;
 | |
| } FDD_SPECIFY_CMD;
 | |
| 
 | |
| typedef struct {
 | |
|   UINT8 CommandCode;
 | |
|   UINT8 DiskHeadSel;
 | |
|   UINT8 NewCylinder;
 | |
| } FDD_SEEK_CMD;
 | |
| 
 | |
| typedef struct {
 | |
|   UINT8 CommandCode;
 | |
|   UINT8 DiskHeadSel;
 | |
|   UINT8 Cylinder;
 | |
|   UINT8 Head;
 | |
|   UINT8 Sector;
 | |
|   UINT8 EndOfTrack;
 | |
|   UINT8 GapLength;
 | |
|   UINT8 ScanTestPause;
 | |
| } FDD_SCAN_CMD;
 | |
| 
 | |
| typedef struct {
 | |
|   UINT8 Status0;
 | |
|   UINT8 Status1;
 | |
|   UINT8 Status2;
 | |
|   UINT8 C;
 | |
|   UINT8 H;
 | |
|   UINT8 S;
 | |
|   UINT8 Number;
 | |
| } FDD_RESULT_PACKET;
 | |
| 
 | |
| //
 | |
| // FDC Registers
 | |
| //
 | |
| //
 | |
| // 0x3F2 Digital Output Register
 | |
| //
 | |
| #define FDC_REGISTER_DOR  2
 | |
| 
 | |
| //
 | |
| // 0x3F4 Main Status Register
 | |
| //
 | |
| #define FDC_REGISTER_MSR  4
 | |
| 
 | |
| //
 | |
| // 0x3F5 Data Register
 | |
| //
 | |
| #define FDC_REGISTER_DTR  5
 | |
| 
 | |
| //
 | |
| // 0x3F7 Configuration Control Register(data rate select)
 | |
| //
 | |
| #define FDC_REGISTER_CCR  7
 | |
| 
 | |
| //
 | |
| // 0x3F7 Digital Input Register(diskchange)
 | |
| //
 | |
| #define FDC_REGISTER_DIR  7
 | |
| 
 | |
| 
 | |
| 
 | |
| //
 | |
| // FDC Register Bit Definitions
 | |
| //
 | |
| //
 | |
| // Digital Out Register(WO)
 | |
| //
 | |
| //
 | |
| // Select Drive: 0=A 1=B
 | |
| //
 | |
| #define SELECT_DRV  BIT0
 | |
| 
 | |
| //
 | |
| // Reset FDC
 | |
| //
 | |
| #define RESET_FDC BIT2
 | |
| 
 | |
| //
 | |
| // Enable Int & DMA
 | |
| //
 | |
| #define INT_DMA_ENABLE  BIT3
 | |
| 
 | |
| //
 | |
| // Turn On Drive A Motor
 | |
| //
 | |
| #define DRVA_MOTOR_ON BIT4
 | |
| 
 | |
| //
 | |
| // Turn On Drive B Motor
 | |
| //
 | |
| #define DRVB_MOTOR_ON BIT5
 | |
| 
 | |
| //
 | |
| // Main Status Register(RO)
 | |
| //
 | |
| //
 | |
| // Drive A Busy
 | |
| //
 | |
| #define MSR_DAB BIT0
 | |
| 
 | |
| //
 | |
| // Drive B Busy
 | |
| //
 | |
| #define MSR_DBB BIT1
 | |
| 
 | |
| //
 | |
| // FDC Busy
 | |
| //
 | |
| #define MSR_CB  BIT4
 | |
| 
 | |
| //
 | |
| // Non-DMA Mode
 | |
| //
 | |
| #define MSR_NDM BIT5
 | |
| 
 | |
| //
 | |
| // Data Input/Output
 | |
| //
 | |
| #define MSR_DIO BIT6
 | |
| 
 | |
| //
 | |
| // Request For Master
 | |
| //
 | |
| #define MSR_RQM BIT7
 | |
| 
 | |
| //
 | |
| // Configuration Control Register(WO)
 | |
| //
 | |
| //
 | |
| // Data Rate select
 | |
| //
 | |
| #define CCR_DRC (BIT0 | BIT1)
 | |
| 
 | |
| //
 | |
| // Digital Input Register(RO)
 | |
| //
 | |
| //
 | |
| // Disk change line
 | |
| //
 | |
| #define DIR_DCL BIT7
 | |
| //
 | |
| // #define CCR_DCL         BIT7      // Diskette change
 | |
| //
 | |
| // 500K
 | |
| //
 | |
| #define DRC_500KBS  0x0
 | |
| 
 | |
| //
 | |
| // 300K
 | |
| //
 | |
| #define DRC_300KBS  0x01
 | |
| 
 | |
| //
 | |
| // 250K
 | |
| //
 | |
| #define DRC_250KBS  0x02
 | |
| 
 | |
| //
 | |
| // FDC Command Code
 | |
| //
 | |
| #define READ_DATA_CMD         0x06
 | |
| #define WRITE_DATA_CMD        0x05
 | |
| #define WRITE_DEL_DATA_CMD    0x09
 | |
| #define READ_DEL_DATA_CMD     0x0C
 | |
| #define READ_TRACK_CMD        0x02
 | |
| #define READ_ID_CMD           0x0A
 | |
| #define FORMAT_TRACK_CMD      0x0D
 | |
| #define SCAN_EQU_CMD          0x11
 | |
| #define SCAN_LOW_EQU_CMD      0x19
 | |
| #define SCAN_HIGH_EQU_CMD     0x1D
 | |
| #define SEEK_CMD              0x0F
 | |
| #define RECALIBRATE_CMD       0x07
 | |
| #define SENSE_INT_STATUS_CMD  0x08
 | |
| #define SPECIFY_CMD           0x03
 | |
| #define SENSE_DRV_STATUS_CMD  0x04
 | |
| 
 | |
| //
 | |
| // CMD_MT: Multi_Track Selector
 | |
| // when set , this flag selects the multi-track operating mode.
 | |
| // In this mode, the FDC treats a complete cylinder under head0 and 1
 | |
| // as a single track
 | |
| //
 | |
| #define CMD_MT  BIT7
 | |
| 
 | |
| //
 | |
| // CMD_MFM: MFM/FM Mode Selector
 | |
| // A one selects the double density(MFM) mode
 | |
| // A zero selects single density (FM) mode
 | |
| //
 | |
| #define CMD_MFM BIT6
 | |
| 
 | |
| //
 | |
| // CMD_SK: Skip Flag
 | |
| // When set to 1, sectors containing a deleted data address mark will
 | |
| // automatically be skipped during the execution of Read Data.
 | |
| // When set to 0, the sector is read or written the same as the read and
 | |
| // write commands.
 | |
| //
 | |
| #define CMD_SK  BIT5
 | |
| 
 | |
| //
 | |
| // FDC Status Register Bit Definitions
 | |
| //
 | |
| //
 | |
| // Status Register 0
 | |
| //
 | |
| //
 | |
| // Interrupt Code
 | |
| //
 | |
| #define STS0_IC (BIT7 | BIT6)
 | |
| 
 | |
| //
 | |
| // Seek End: the FDC completed a seek or recalibrate command
 | |
| //
 | |
| #define STS0_SE BIT5
 | |
| 
 | |
| //
 | |
| // Equipment Check
 | |
| //
 | |
| #define STS0_EC BIT4
 | |
| 
 | |
| //
 | |
| // Not Ready(unused), this bit is always 0
 | |
| //
 | |
| #define STS0_NR BIT3
 | |
| 
 | |
| //
 | |
| // Head Address: the current head address
 | |
| //
 | |
| #define STS0_HA BIT2
 | |
| 
 | |
| //
 | |
| // STS0_US1 & STS0_US0: Drive Select(the current selected drive)
 | |
| //
 | |
| //
 | |
| // Unit Select1
 | |
| //
 | |
| #define STS0_US1  BIT1
 | |
| 
 | |
| //
 | |
| // Unit Select0
 | |
| //
 | |
| #define STS0_US0  BIT0
 | |
| 
 | |
| //
 | |
| // Status Register 1
 | |
| //
 | |
| //
 | |
| // End of Cylinder
 | |
| //
 | |
| #define STS1_EN BIT7
 | |
| 
 | |
| //
 | |
| // BIT6 is unused
 | |
| //
 | |
| //
 | |
| // Data Error: The FDC detected a CRC error in either the ID field or
 | |
| // data field of a sector
 | |
| //
 | |
| #define STS1_DE BIT5
 | |
| 
 | |
| //
 | |
| // Overrun/Underrun: Becomes set if FDC does not receive CPU or DMA service
 | |
| // within the required time interval
 | |
| //
 | |
| #define STS1_OR BIT4
 | |
| 
 | |
| //
 | |
| // BIT3 is unused
 | |
| //
 | |
| //
 | |
| // No data
 | |
| //
 | |
| #define STS1_ND BIT2
 | |
| 
 | |
| //
 | |
| // Not Writable
 | |
| //
 | |
| #define STS1_NW BIT1
 | |
| 
 | |
| //
 | |
| // Missing Address Mark
 | |
| //
 | |
| #define STS1_MA BIT0
 | |
| 
 | |
| //
 | |
| // Control Mark
 | |
| //
 | |
| #define STS2_CM BIT6
 | |
| 
 | |
| //
 | |
| // Data Error in Data Field: The FDC detected a CRC error in the data field
 | |
| //
 | |
| #define STS2_DD BIT5
 | |
| 
 | |
| //
 | |
| // Wrong Cylinder: The track address from sector ID field is different from
 | |
| // the track address maintained inside FDC
 | |
| //
 | |
| #define STS2_WC BIT4
 | |
| 
 | |
| //
 | |
| // Bad Cylinder
 | |
| //
 | |
| #define STS2_BC BIT1
 | |
| 
 | |
| //
 | |
| // Missing Address Mark in Data Field
 | |
| //
 | |
| #define STS2_MD BIT0
 | |
| 
 | |
| //
 | |
| // Write Protected
 | |
| //
 | |
| #define STS3_WP BIT6
 | |
| 
 | |
| //
 | |
| // Track 0
 | |
| //
 | |
| #define STS3_T0 BIT4
 | |
| 
 | |
| //
 | |
| // Head Address
 | |
| //
 | |
| #define STS3_HD BIT2
 | |
| 
 | |
| //
 | |
| // STS3_US1 & STS3_US0 : Drive Select
 | |
| //
 | |
| #define STS3_US1  BIT1
 | |
| #define STS3_US0  BIT0
 | |
| 
 | |
| //
 | |
| // Status Register 0 Interrupt Code Description
 | |
| //
 | |
| //
 | |
| // Normal Termination of Command
 | |
| //
 | |
| #define IC_NT 0x0
 | |
| 
 | |
| //
 | |
| // Abnormal Termination of Command
 | |
| //
 | |
| #define IC_AT 0x40
 | |
| 
 | |
| //
 | |
| // Invalid Command
 | |
| //
 | |
| #define IC_IC 0x80
 | |
| 
 | |
| //
 | |
| // Abnormal Termination caused by Polling
 | |
| //
 | |
| #define IC_ATRC 0xC0
 | |
| 
 | |
| //
 | |
| // Global Variables
 | |
| //
 | |
| extern EFI_DRIVER_BINDING_PROTOCOL   gFdcControllerDriver;
 | |
| 
 | |
| //
 | |
| // EFI Driver Binding Protocol Functions
 | |
| //
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| FdcControllerDriverSupported (
 | |
|   IN EFI_DRIVER_BINDING_PROTOCOL  *This,
 | |
|   IN EFI_HANDLE                   Controller,
 | |
|   IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   This                - GC_TODO: add argument description
 | |
|   Controller          - GC_TODO: add argument description
 | |
|   RemainingDevicePath - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| FdcControllerDriverStart (
 | |
|   IN EFI_DRIVER_BINDING_PROTOCOL  *This,
 | |
|   IN EFI_HANDLE                   Controller,
 | |
|   IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   This                - GC_TODO: add argument description
 | |
|   Controller          - GC_TODO: add argument description
 | |
|   RemainingDevicePath - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| FdcControllerDriverStop (
 | |
|   IN EFI_DRIVER_BINDING_PROTOCOL  *This,
 | |
|   IN EFI_HANDLE                   Controller,
 | |
|   IN UINTN                        NumberOfChildren,
 | |
|   IN EFI_HANDLE                   *ChildHandleBuffer
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   This              - GC_TODO: add argument description
 | |
|   Controller        - GC_TODO: add argument description
 | |
|   NumberOfChildren  - GC_TODO: add argument description
 | |
|   ChildHandleBuffer - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| //
 | |
| // EFI Block I/O Protocol Functions
 | |
| //
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| FdcReset (
 | |
|   IN EFI_BLOCK_IO_PROTOCOL  *This,
 | |
|   IN BOOLEAN                ExtendedVerification
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   This                  - GC_TODO: add argument description
 | |
|   ExtendedVerification  - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| FddFlushBlocks (
 | |
|   IN EFI_BLOCK_IO_PROTOCOL  *This
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   This  - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| FddReadBlocks (
 | |
|   IN  EFI_BLOCK_IO_PROTOCOL  *This,
 | |
|   IN  UINT32                 MediaId,
 | |
|   IN  EFI_LBA                LBA,
 | |
|   IN  UINTN                  BufferSize,
 | |
|   OUT VOID                   *Buffer
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   This        - GC_TODO: add argument description
 | |
|   MediaId     - GC_TODO: add argument description
 | |
|   LBA         - GC_TODO: add argument description
 | |
|   BufferSize  - GC_TODO: add argument description
 | |
|   Buffer      - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| FddWriteBlocks (
 | |
|   IN EFI_BLOCK_IO_PROTOCOL  *This,
 | |
|   IN UINT32                 MediaId,
 | |
|   IN EFI_LBA                LBA,
 | |
|   IN UINTN                  BufferSize,
 | |
|   IN VOID                   *Buffer
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   This        - GC_TODO: add argument description
 | |
|   MediaId     - GC_TODO: add argument description
 | |
|   LBA         - GC_TODO: add argument description
 | |
|   BufferSize  - GC_TODO: add argument description
 | |
|   Buffer      - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| //
 | |
| // Prototypes of internal functions
 | |
| //
 | |
| EFI_STATUS
 | |
| DiscoverFddDevice (
 | |
|   IN FDC_BLK_IO_DEV  *FdcDev
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   FdcDev  - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| FddIdentify (
 | |
|   IN FDC_BLK_IO_DEV  *FdcDev
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   FdcDev  - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| FddReset (
 | |
|   IN FDC_BLK_IO_DEV  *FdcDev
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   FdcDev  - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| MotorOn (
 | |
|   IN FDC_BLK_IO_DEV  *FdcDev
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   FdcDev  - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| MotorOff (
 | |
|   IN FDC_BLK_IO_DEV  *FdcDev
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   FdcDev  - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| DisketChanged (
 | |
|   IN FDC_BLK_IO_DEV  *FdcDev
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   FdcDev  - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| Specify (
 | |
|   IN FDC_BLK_IO_DEV  *FdcDev
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   FdcDev  - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| Recalibrate (
 | |
|   IN FDC_BLK_IO_DEV  *FdcDev
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   FdcDev  - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| Seek (
 | |
|   IN FDC_BLK_IO_DEV  *FdcDev,
 | |
|   IN EFI_LBA         Lba
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   FdcDev  - GC_TODO: add argument description
 | |
|   Lba     - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| SenseIntStatus (
 | |
|   IN     FDC_BLK_IO_DEV  *FdcDev,
 | |
|   IN OUT UINT8           *StatusRegister0,
 | |
|   IN OUT UINT8           *PresentCylinderNumber
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   FdcDev                - GC_TODO: add argument description
 | |
|   StatusRegister0       - GC_TODO: add argument description
 | |
|   PresentCylinderNumber - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| SenseDrvStatus (
 | |
|   IN FDC_BLK_IO_DEV  *FdcDev,
 | |
|   IN EFI_LBA         Lba
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   FdcDev  - GC_TODO: add argument description
 | |
|   Lba     - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| DetectMedia (
 | |
|   IN FDC_BLK_IO_DEV  *FdcDev
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   FdcDev  - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| Setup (
 | |
|   IN FDC_BLK_IO_DEV  *FdcDev
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   FdcDev  - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| ReadWriteDataSector (
 | |
|   IN FDC_BLK_IO_DEV  *FdcDev,
 | |
|   IN VOID            *HostAddress,
 | |
|   IN EFI_LBA         Lba,
 | |
|   IN UINTN           NumberOfBlocks,
 | |
|   IN BOOLEAN         Read
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   FdcDev          - GC_TODO: add argument description
 | |
|   HostAddress     - GC_TODO: add argument description
 | |
|   Lba             - GC_TODO: add argument description
 | |
|   NumberOfBlocks  - GC_TODO: add argument description
 | |
|   Read            - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| VOID
 | |
| FillPara (
 | |
|   IN FDC_BLK_IO_DEV       *FdcDev,
 | |
|   IN EFI_LBA              Lba,
 | |
|   IN FDD_COMMAND_PACKET1  *Command
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   FdcDev  - GC_TODO: add argument description
 | |
|   Lba     - GC_TODO: add argument description
 | |
|   Command - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| DataInByte (
 | |
|   IN FDC_BLK_IO_DEV  *FdcDev,
 | |
|   IN UINT8           *Pointer
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   FdcDev  - GC_TODO: add argument description
 | |
|   Pointer - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| DataOutByte (
 | |
|   IN FDC_BLK_IO_DEV  *FdcDev,
 | |
|   IN UINT8           *Pointer
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   FdcDev  - GC_TODO: add argument description
 | |
|   Pointer - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| FddWaitForBSYClear (
 | |
|   IN FDC_BLK_IO_DEV  *FdcDev,
 | |
|   IN UINTN           TimeoutInSeconds
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   FdcDev            - GC_TODO: add argument description
 | |
|   TimeoutInSeconds  - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| FddDRQReady (
 | |
|   IN FDC_BLK_IO_DEV  *FdcDev,
 | |
|   IN BOOLEAN         Dio,
 | |
|   IN UINTN           TimeoutInSeconds
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   FdcDev            - GC_TODO: add argument description
 | |
|   Dio               - GC_TODO: add argument description
 | |
|   TimeoutInSeconds  - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| CheckResult (
 | |
|   IN     FDD_RESULT_PACKET  *Result,
 | |
|   IN OUT FDC_BLK_IO_DEV     *FdcDev
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   Result  - GC_TODO: add argument description
 | |
|   FdcDev  - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| CheckStatus3 (
 | |
|   IN UINT8 StatusRegister3
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   StatusRegister3 - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| UINTN
 | |
| GetTransferBlockCount (
 | |
|   IN FDC_BLK_IO_DEV  *FdcDev,
 | |
|   IN EFI_LBA         LBA,
 | |
|   IN UINTN           NumberOfBlocks
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   FdcDev          - GC_TODO: add argument description
 | |
|   LBA             - GC_TODO: add argument description
 | |
|   NumberOfBlocks  - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| VOID
 | |
| EFIAPI
 | |
| FddTimerProc (
 | |
|   IN EFI_EVENT  Event,
 | |
|   IN VOID       *Context
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   Event   - GC_TODO: add argument description
 | |
|   Context - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| UINT8
 | |
| FdcReadPort (
 | |
|   IN FDC_BLK_IO_DEV  *FdcDev,
 | |
|   IN UINT32          Offset
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   FdcDev  - GC_TODO: add argument description
 | |
|   Offset  - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| VOID
 | |
| FdcWritePort (
 | |
|   IN FDC_BLK_IO_DEV  *FdcDev,
 | |
|   IN UINT32          Offset,
 | |
|   IN UINT8           Data
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   FdcDev  - GC_TODO: add argument description
 | |
|   Offset  - GC_TODO: add argument description
 | |
|   Data    - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| FddReadWriteBlocks (
 | |
|   IN  EFI_BLOCK_IO_PROTOCOL  *This,
 | |
|   IN  UINT32                 MediaId,
 | |
|   IN  EFI_LBA                LBA,
 | |
|   IN  UINTN                  BufferSize,
 | |
|   IN  BOOLEAN                Operation,
 | |
|   OUT VOID                   *Buffer
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   This        - GC_TODO: add argument description
 | |
|   MediaId     - GC_TODO: add argument description
 | |
|   LBA         - GC_TODO: add argument description
 | |
|   BufferSize  - GC_TODO: add argument description
 | |
|   Operation   - GC_TODO: add argument description
 | |
|   Buffer      - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| VOID
 | |
| FdcFreeCache (
 | |
|   IN    FDC_BLK_IO_DEV  *FdcDev
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   GC_TODO: Add function description
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   FdcDev  - GC_TODO: add argument description
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   GC_TODO: add return values
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| #endif
 |