summaryrefslogtreecommitdiff
path: root/IntelFrameworkModulePkg/Bus/Isa/IsaFloppyDxe/IsaFloppy.h
diff options
context:
space:
mode:
Diffstat (limited to 'IntelFrameworkModulePkg/Bus/Isa/IsaFloppyDxe/IsaFloppy.h')
-rw-r--r--IntelFrameworkModulePkg/Bus/Isa/IsaFloppyDxe/IsaFloppy.h1093
1 files changed, 0 insertions, 1093 deletions
diff --git a/IntelFrameworkModulePkg/Bus/Isa/IsaFloppyDxe/IsaFloppy.h b/IntelFrameworkModulePkg/Bus/Isa/IsaFloppyDxe/IsaFloppy.h
deleted file mode 100644
index 30a2d7bf0c..0000000000
--- a/IntelFrameworkModulePkg/Bus/Isa/IsaFloppyDxe/IsaFloppy.h
+++ /dev/null
@@ -1,1093 +0,0 @@
-/** @file
- Include file for ISA Floppy Driver
-
-Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
-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 <Uefi.h>
-
-#include <Protocol/BlockIo.h>
-#include <Protocol/IsaIo.h>
-#include <Protocol/DevicePath.h>
-#include <Guid/StatusCodeDataTypeId.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>
-#include <Library/PcdLib.h>
-
-extern EFI_DRIVER_BINDING_PROTOCOL gFdcControllerDriver;
-
-#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 SIGNATURE_32 ('F', 'B', 'I', 'O')
-#define FLOPPY_CONTROLLER_CONTEXT_SIGNATURE SIGNATURE_32 ('F', 'D', 'C', 'C')
-
-typedef enum {
- FdcDisk0 = 0,
- FdcDisk1 = 1,
- FdcMaxDisk = 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 Cylinder;
- UINT8 Head;
- UINT8 Sector;
- UINT8 Number;
-} FDD_RESULT_PACKET;
-
-//
-// FDC Registers
-//
-//
-// Digital Output Register address offset
-//
-#define FDC_REGISTER_DOR 2
-
-//
-// Main Status Register address offset
-//
-#define FDC_REGISTER_MSR 4
-
-//
-// Data Register address offset
-//
-#define FDC_REGISTER_DTR 5
-
-//
-// Configuration Control Register(data rate select) address offset
-//
-#define FDC_REGISTER_CCR 7
-
-//
-// Digital Input Register(diskchange) address offset
-//
-#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
-
-//
-// EFI Driver Binding Protocol Functions
-//
-
-/**
- Test controller is a floppy disk drive device
-
- @param[in] This A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
- @param[in] Controller The handle of the controller to test.
- @param[in] RemainingDevicePath A pointer to the remaining portion of a device path.
-
- @retval EFI_SUCCESS The device is supported by this driver.
- @retval EFI_ALREADY_STARTED The device is already being managed by this driver.
- @retval EFI_ACCESS_DENIED The device is already being managed by a different driver
- or an application that requires exclusive access.
-**/
-EFI_STATUS
-EFIAPI
-FdcControllerDriverSupported (
- IN EFI_DRIVER_BINDING_PROTOCOL *This,
- IN EFI_HANDLE Controller,
- IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
- );
-
-/**
- Start this driver on Controller.
-
- @param[in] This A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
- @param[in] ControllerHandle The handle of the controller to start. This handle
- must support a protocol interface that supplies
- an I/O abstraction to the driver.
- @param[in] RemainingDevicePath A pointer to the remaining portion of a device path.
- This parameter is ignored by device drivers, and is optional for bus drivers.
-
- @retval EFI_SUCCESS The device was started.
- @retval EFI_DEVICE_ERROR The device could not be started due to a device error.
- Currently not implemented.
- @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
- @retval Others The driver failded to start the device.
-**/
-EFI_STATUS
-EFIAPI
-FdcControllerDriverStart (
- IN EFI_DRIVER_BINDING_PROTOCOL *This,
- IN EFI_HANDLE Controller,
- IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
- );
-
-/**
- Stop this driver on ControllerHandle.
-
- @param[in] This A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
- @param[in] ControllerHandle A handle to the device being stopped. The handle must
- support a bus specific I/O protocol for the driver
- to use to stop the device.
- @param[in] NumberOfChildren The number of child device handles in ChildHandleBuffer.
- @param[in] ChildHandleBuffer An array of child handles to be freed. May be NULL
- if NumberOfChildren is 0.
-
- @retval EFI_SUCCESS The device was stopped.
- @retval EFI_DEVICE_ERROR The device could not be stopped due to a device error.
-**/
-EFI_STATUS
-EFIAPI
-FdcControllerDriverStop (
- IN EFI_DRIVER_BINDING_PROTOCOL *This,
- IN EFI_HANDLE Controller,
- IN UINTN NumberOfChildren,
- IN EFI_HANDLE *ChildHandleBuffer
- );
-
-//
-// EFI Block I/O Protocol Functions
-//
-
-/**
- Reset the Floppy Logic Drive, call the FddReset function.
-
- @param This EFI_BLOCK_IO *: A pointer to the Block I/O protocol interface
- @param ExtendedVerification BOOLEAN: Indicate that the driver may perform a more
- exhaustive verification operation of the device during
- reset, now this par is ignored in this driver
- @retval EFI_SUCCESS: The Floppy Logic Drive is reset
- @retval EFI_DEVICE_ERROR: The Floppy Logic Drive is not functioning correctly
- and can not be reset
-
-**/
-EFI_STATUS
-EFIAPI
-FdcReset (
- IN EFI_BLOCK_IO_PROTOCOL *This,
- IN BOOLEAN ExtendedVerification
- );
-
-/**
- Flush block via fdd controller.
-
- @param This EFI_BLOCK_IO *: A pointer to the Block I/O protocol interface
- @return EFI_SUCCESS
-
-**/
-EFI_STATUS
-EFIAPI
-FddFlushBlocks (
- IN EFI_BLOCK_IO_PROTOCOL *This
- );
-
-/**
- Read the requested number of blocks from the device.
-
- @param This EFI_BLOCK_IO *: A pointer to the Block I/O protocol interface
- @param MediaId UINT32: The media id that the read request is for
- @param Lba EFI_LBA: The starting logic block address to read from on the device
- @param BufferSize UINTN: The size of the Buffer in bytes
- @param Buffer VOID *: A pointer to the destination buffer for the data
-
- @retval EFI_SUCCESS: The data was read correctly from the device
- @retval EFI_DEVICE_ERROR:The device reported an error while attempting to perform
- the read operation
- @retval EFI_NO_MEDIA: There is no media in the device
- @retval EFI_MEDIA_CHANGED: The MediaId is not for the current media
- @retval EFI_BAD_BUFFER_SIZE: The BufferSize parameter is not a multiple of the
- intrinsic block size of the device
- @retval EFI_INVALID_PARAMETER:The read request contains LBAs that are not valid,
- or the buffer is not on proper alignment
-
-**/
-EFI_STATUS
-EFIAPI
-FddReadBlocks (
- IN EFI_BLOCK_IO_PROTOCOL *This,
- IN UINT32 MediaId,
- IN EFI_LBA Lba,
- IN UINTN BufferSize,
- OUT VOID *Buffer
- );
-
-/**
- Write a specified number of blocks to the device.
-
- @param This EFI_BLOCK_IO *: A pointer to the Block I/O protocol interface
- @param MediaId UINT32: The media id that the write request is for
- @param Lba EFI_LBA: The starting logic block address to be written
- @param BufferSize UINTN: The size in bytes in Buffer
- @param Buffer VOID *: A pointer to the source buffer for the data
-
- @retval EFI_SUCCESS: The data were written correctly to the device
- @retval EFI_WRITE_PROTECTED: The device can not be written to
- @retval EFI_NO_MEDIA: There is no media in the device
- @retval EFI_MEDIA_CHANGED: The MediaId is not for the current media
- @retval EFI_DEVICE_ERROR: The device reported an error while attempting to perform
- the write operation
- @retval EFI_BAD_BUFFER_SIZE: The BufferSize parameter is not a multiple of the
- intrinsic block size of the device
- @retval EFI_INVALID_PARAMETER:The write request contains LBAs that are not valid,
- or the buffer is not on proper alignment
-**/
-EFI_STATUS
-EFIAPI
-FddWriteBlocks (
- IN EFI_BLOCK_IO_PROTOCOL *This,
- IN UINT32 MediaId,
- IN EFI_LBA Lba,
- IN UINTN BufferSize,
- IN VOID *Buffer
- );
-
-//
-// Prototypes of internal functions
-//
-/**
-
- Detect the floppy drive is presented or not.
-
- @param FdcDev FDC_BLK_IO_DEV * : A pointer to the Data Structure FDC_BLK_IO_DEV
- @retval EFI_SUCCESS Drive is presented
- @retval EFI_NOT_FOUND Drive is not presented
-
-**/
-EFI_STATUS
-DiscoverFddDevice (
- IN FDC_BLK_IO_DEV *FdcDev
- );
-
-/**
-
- Do recalibrate and see the drive is presented or not.
- Set the media parameters.
-
- @param FdcDev FDC_BLK_IO_DEV * : A pointer to the Data Structure FDC_BLK_IO_DEV
- @return the drive is presented or not
-
-**/
-EFI_STATUS
-FddIdentify (
- IN FDC_BLK_IO_DEV *FdcDev
- );
-
-/**
-
- Reset the Floppy Logic Drive.
-
- @param FdcDev FDC_BLK_IO_DEV * : A pointer to the Data Structure FDC_BLK_IO_DEV
-
- @retval EFI_SUCCESS: The Floppy Logic Drive is reset
- @retval EFI_DEVICE_ERROR: The Floppy Logic Drive is not functioning correctly and
- can not be reset
-
-**/
-EFI_STATUS
-FddReset (
- IN FDC_BLK_IO_DEV *FdcDev
- );
-
-/**
-
- Turn the drive's motor on.
- The drive's motor must be on before any command can be executed.
-
- @param FdcDev FDC_BLK_IO_DEV * : A pointer to the Data Structure FDC_BLK_IO_DEV
-
- @retval EFI_SUCCESS: Turn the drive's motor on successfully
- @retval EFI_DEVICE_ERROR: The drive is busy, so can not turn motor on
- @retval EFI_INVALID_PARAMETER: Fail to Set timer(Cancel timer)
-
-**/
-EFI_STATUS
-MotorOn (
- IN FDC_BLK_IO_DEV *FdcDev
- );
-
-/**
-
- Set a Timer and when Timer goes off, turn the motor off.
-
-
- @param FdcDev FDC_BLK_IO_DEV * : A pointer to the Data Structure FDC_BLK_IO_DEV
-
- @retval EFI_SUCCESS: Set the Timer successfully
- @retval EFI_INVALID_PARAMETER: Fail to Set the timer
-
-**/
-EFI_STATUS
-MotorOff (
- IN FDC_BLK_IO_DEV *FdcDev
- );
-
-/**
- Detect the disk in the drive is changed or not.
-
-
- @param FdcDev FDC_BLK_IO_DEV *: A pointer to Data Structure FDC_BLK_IO_DEV
-
- @retval EFI_SUCCESS: No disk media change
- @retval EFI_DEVICE_ERROR: Fail to do the recalibrate or seek operation
- @retval EFI_NO_MEDIA: No disk in the drive
- @retval EFI_MEDIA_CHANGED: There is a new disk in the drive
-**/
-EFI_STATUS
-DisketChanged (
- IN FDC_BLK_IO_DEV *FdcDev
- );
-
-/**
- Do the Specify command, this command sets DMA operation
- and the initial values for each of the three internal
- times: HUT, SRT and HLT.
-
- @param FdcDev Pointer to instance of FDC_BLK_IO_DEV
-
- @retval EFI_SUCCESS: Execute the Specify command successfully
- @retval EFI_DEVICE_ERROR: Fail to execute the command
-
-**/
-EFI_STATUS
-Specify (
- IN FDC_BLK_IO_DEV *FdcDev
- );
-
-/**
- Set the head of floppy drive to track 0.
-
- @param FdcDev FDC_BLK_IO_DEV *: A pointer to Data Structure FDC_BLK_IO_DEV
- @retval EFI_SUCCESS: Execute the Recalibrate operation successfully
- @retval EFI_DEVICE_ERROR: Fail to execute the Recalibrate operation
-
-**/
-EFI_STATUS
-Recalibrate (
- IN FDC_BLK_IO_DEV *FdcDev
- );
-
-/**
- Set the head of floppy drive to the new cylinder.
-
- @param FdcDev FDC_BLK_IO_DEV *: A pointer to Data Structure FDC_BLK_IO_DEV
- @param Lba EFI_LBA : The logic block address want to seek
-
- @retval EFI_SUCCESS: Execute the Seek operation successfully
- @retval EFI_DEVICE_ERROR: Fail to execute the Seek operation
-
-**/
-EFI_STATUS
-Seek (
- IN FDC_BLK_IO_DEV *FdcDev,
- IN EFI_LBA Lba
- );
-
-/**
- Do the Sense Interrupt Status command, this command resets the interrupt signal.
-
- @param FdcDev FDC_BLK_IO_DEV *: A pointer to Data Structure FDC_BLK_IO_DEV
- @param StatusRegister0 UINT8 *: Be used to save Status Register 0 read from FDC
- @param PresentCylinderNumber UINT8 *: Be used to save present cylinder number
- read from FDC
-
- @retval EFI_SUCCESS: Execute the Sense Interrupt Status command successfully
- @retval EFI_DEVICE_ERROR: Fail to execute the command
-
-**/
-EFI_STATUS
-SenseIntStatus (
- IN FDC_BLK_IO_DEV *FdcDev,
- IN OUT UINT8 *StatusRegister0,
- IN OUT UINT8 *PresentCylinderNumber
- );
-
-/**
- Do the Sense Drive Status command.
-
- @param FdcDev FDC_BLK_IO_DEV *: A pointer to Data Structure FDC_BLK_IO_DEV
- @param Lba EFI_LBA : Logic block address
-
- @retval EFI_SUCCESS: Execute the Sense Drive Status command successfully
- @retval EFI_DEVICE_ERROR: Fail to execute the command
- @retval EFI_WRITE_PROTECTED:The disk is write protected
-
-**/
-EFI_STATUS
-SenseDrvStatus (
- IN FDC_BLK_IO_DEV *FdcDev,
- IN EFI_LBA Lba
- );
-
-/**
- Update the disk media properties and if necessary reinstall Block I/O interface.
-
- @param FdcDev FDC_BLK_IO_DEV *: A pointer to Data Structure FDC_BLK_IO_DEV
-
- @retval EFI_SUCCESS: Do the operation successfully
- @retval EFI_DEVICE_ERROR: Fail to the operation
-
-**/
-EFI_STATUS
-DetectMedia (
- IN FDC_BLK_IO_DEV *FdcDev
- );
-
-/**
- Set the data rate and so on.
-
- @param FdcDev FDC_BLK_IO_DEV *: A pointer to Data Structure FDC_BLK_IO_DEV
-
- @retval EFI_SUCCESS success to set the data rate
-**/
-EFI_STATUS
-Setup (
- IN FDC_BLK_IO_DEV *FdcDev
- );
-
-/**
- Read or Write a number of blocks in the same cylinder.
-
- @param FdcDev A pointer to Data Structure FDC_BLK_IO_DEV
- @param HostAddress device address
- @param Lba The starting logic block address to read from on the device
- @param NumberOfBlocks The number of block wanted to be read or write
- @param Read Operation type: read or write
-
- @retval EFI_SUCCESS Success operate
-
-**/
-EFI_STATUS
-ReadWriteDataSector (
- IN FDC_BLK_IO_DEV *FdcDev,
- IN VOID *HostAddress,
- IN EFI_LBA Lba,
- IN UINTN NumberOfBlocks,
- IN BOOLEAN Read
- );
-
-/**
- Fill in FDD command's parameter.
-
- @param FdcDev Pointer to instance of FDC_BLK_IO_DEV
- @param Lba The starting logic block address to read from on the device
- @param Command FDD command
-
-**/
-VOID
-FillPara (
- IN FDC_BLK_IO_DEV *FdcDev,
- IN EFI_LBA Lba,
- IN FDD_COMMAND_PACKET1 *Command
- );
-
-/**
- Read result byte from Data Register of FDC.
-
- @param FdcDev Pointer to instance of FDC_BLK_IO_DEV
- @param Pointer Buffer to store the byte read from FDC
-
- @retval EFI_SUCCESS Read result byte from FDC successfully
- @retval EFI_DEVICE_ERROR The FDC is not ready to be read
-
-**/
-EFI_STATUS
-DataInByte (
- IN FDC_BLK_IO_DEV *FdcDev,
- OUT UINT8 *Pointer
- );
-
-/**
- Write command byte to Data Register of FDC.
-
- @param FdcDev Pointer to instance of FDC_BLK_IO_DEV
- @param Pointer Be used to save command byte written to FDC
-
- @retval EFI_SUCCESS: Write command byte to FDC successfully
- @retval EFI_DEVICE_ERROR: The FDC is not ready to be written
-
-**/
-EFI_STATUS
-DataOutByte (
- IN FDC_BLK_IO_DEV *FdcDev,
- IN UINT8 *Pointer
- );
-
-/**
- Detect the specified floppy logic drive is busy or not within a period of time.
-
- @param FdcDev Indicate it is drive A or drive B
- @param Timeout The time period for waiting
-
- @retval EFI_SUCCESS: The drive and command are not busy
- @retval EFI_TIMEOUT: The drive or command is still busy after a period time that
- set by Timeout
-
-**/
-EFI_STATUS
-FddWaitForBSYClear (
- IN FDC_BLK_IO_DEV *FdcDev,
- IN UINTN Timeout
- );
-
-/**
- Determine whether FDC is ready to write or read.
-
- @param FdcDev Pointer to instance of FDC_BLK_IO_DEV
- @param Dio BOOLEAN: Indicate the FDC is waiting to write or read
- @param Timeout The time period for waiting
-
- @retval EFI_SUCCESS: FDC is ready to write or read
- @retval EFI_NOT_READY: FDC is not ready within the specified time period
-
-**/
-EFI_STATUS
-FddDRQReady (
- IN FDC_BLK_IO_DEV *FdcDev,
- IN BOOLEAN Dio,
- IN UINTN Timeout
- );
-
-/**
- Set FDC control structure's attribute according to result.
-
- @param Result Point to result structure
- @param FdcDev FDC control structure
-
- @retval EFI_DEVICE_ERROR - GC_TODO: Add description for return value
- @retval EFI_DEVICE_ERROR - GC_TODO: Add description for return value
- @retval EFI_DEVICE_ERROR - GC_TODO: Add description for return value
- @retval EFI_SUCCESS - GC_TODO: Add description for return value
-
-**/
-EFI_STATUS
-CheckResult (
- IN FDD_RESULT_PACKET *Result,
- IN OUT FDC_BLK_IO_DEV *FdcDev
- );
-
-/**
- Check the drive status information.
-
- @param StatusRegister3 the value of Status Register 3
-
- @retval EFI_SUCCESS The disk is not write protected
- @retval EFI_WRITE_PROTECTED: The disk is write protected
-
-**/
-EFI_STATUS
-CheckStatus3 (
- IN UINT8 StatusRegister3
- );
-
-/**
- Calculate the number of block in the same cylinder according to Lba.
-
- @param FdcDev FDC_BLK_IO_DEV *: A pointer to Data Structure FDC_BLK_IO_DEV
- @param Lba EFI_LBA: The starting logic block address
- @param NumberOfBlocks UINTN: The number of blocks
-
- @return The number of blocks in the same cylinder which the starting
- logic block address is Lba
-
-**/
-UINTN
-GetTransferBlockCount (
- IN FDC_BLK_IO_DEV *FdcDev,
- IN EFI_LBA Lba,
- IN UINTN NumberOfBlocks
- );
-
-/**
- When the Timer(2s) off, turn the drive's motor off.
-
- @param Event EFI_EVENT: Event(the timer) whose notification function is being
- invoked
- @param Context VOID *: Pointer to the notification function's context
-
-**/
-VOID
-EFIAPI
-FddTimerProc (
- IN EFI_EVENT Event,
- IN VOID *Context
- );
-
-/**
- Read I/O port for FDC.
-
- @param FdcDev FDC_BLK_IO_DEV *: A pointer to Data Structure FDC_BLK_IO_DEV
- @param Offset The offset address of port
-
-**/
-UINT8
-FdcReadPort (
- IN FDC_BLK_IO_DEV *FdcDev,
- IN UINT32 Offset
- );
-
-/**
- Write I/O port for FDC.
-
- @param FdcDev FDC_BLK_IO_DEV *: A pointer to Data Structure FDC_BLK_IO_DEV
- @param Offset The offset address of port
- @param Data Value written to port
-
-**/
-VOID
-FdcWritePort (
- IN FDC_BLK_IO_DEV *FdcDev,
- IN UINT32 Offset,
- IN UINT8 Data
- );
-
-/**
- Read or Write a number of blocks to floppy device.
-
- @param This Pointer to instance of EFI_BLOCK_IO_PROTOCOL
- @param MediaId The media id of read/write request
- @param Lba The starting logic block address to read from on the device
- @param BufferSize The size of the Buffer in bytes
- @param Operation - GC_TODO: add argument description
- @param Buffer - GC_TODO: add argument description
-
- @retval EFI_INVALID_PARAMETER - GC_TODO: Add description for return value
- @retval EFI_SUCCESS - GC_TODO: Add description for return value
- @retval EFI_DEVICE_ERROR - GC_TODO: Add description for return value
- @retval EFI_DEVICE_ERROR - GC_TODO: Add description for return value
- @retval EFI_NO_MEDIA - GC_TODO: Add description for return value
- @retval EFI_MEDIA_CHANGED - GC_TODO: Add description for return value
- @retval EFI_WRITE_PROTECTED - GC_TODO: Add description for return value
- @retval EFI_BAD_BUFFER_SIZE - GC_TODO: Add description for return value
- @retval EFI_INVALID_PARAMETER - GC_TODO: Add description for return value
- @retval EFI_INVALID_PARAMETER - GC_TODO: Add description for return value
- @retval EFI_SUCCESS - GC_TODO: Add description for return value
- @retval EFI_DEVICE_ERROR - GC_TODO: Add description for return value
- @retval EFI_DEVICE_ERROR - GC_TODO: Add description for return value
- @retval EFI_SUCCESS - GC_TODO: Add description for return value
-
-**/
-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
- );
-
-/**
- Common interface for free cache.
-
- @param FdcDev Pointer of FDC_BLK_IO_DEV instance
-
-**/
-VOID
-FdcFreeCache (
- IN FDC_BLK_IO_DEV *FdcDev
- );
-
-#endif
-