3 Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.
4 This software and associated documentation (if any) is furnished
5 under a license and may only be used or copied in accordance
6 with the terms of the license. Except as permitted by such
7 license, no part of this software or documentation may be
8 reproduced, stored in a retrieval system, or transmitted in any
9 form or by any means without the express written consent of
23 #ifndef _RECOVERY_FLOPPY_H
24 #define _RECOVERY_FLOPPY_H
27 // The package level header files this module uses
30 #include <FrameworkPei.h>
32 #include <Ppi/BlockIo.h>
34 // The Library classes this module consumes
36 #include <Library/DebugLib.h>
37 #include <Library/PeimEntryPoint.h>
38 #include <Library/PeiServicesLib.h>
39 #include <Library/BaseMemoryLib.h>
40 #include <Library/ReportStatusCodeLib.h>
41 #include <Library/TimerLib.h>
42 #include <Library/IoLib.h>
48 #define STALL_1_SECOND 1000000
49 #define STALL_1_MSECOND 1000
72 BOOLEAN NeedRecalibrate
;
74 EFI_PEI_BLOCK_IO_MEDIA MediaInfo
;
75 } PEI_FLOPPY_DEVICE_INFO
;
77 #define FDC_BLK_IO_DEV_SIGNATURE EFI_SIGNATURE_32 ('F', 'b', 'i', 'o')
81 EFI_PEI_RECOVERY_BLOCK_IO_PPI FdcBlkIo
;
82 EFI_PEI_PPI_DESCRIPTOR PpiDescriptor
;
84 PEI_FLOPPY_DEVICE_INFO DeviceInfo
[2];
87 #define PEI_RECOVERY_FDC_FROM_BLKIO_THIS(a) CR (a, FDC_BLK_IO_DEV, FdcBlkIo, FDC_BLK_IO_DEV_SIGNATURE)
90 // PEI Recovery Block I/O PPI
94 FdcGetNumberOfBlockDevices (
95 IN EFI_PEI_SERVICES
**PeiServices
,
96 IN EFI_PEI_RECOVERY_BLOCK_IO_PPI
*This
,
97 OUT UINTN
*NumberBlockDevices
102 FdcGetBlockDeviceMediaInfo (
103 IN EFI_PEI_SERVICES
**PeiServices
,
104 IN EFI_PEI_RECOVERY_BLOCK_IO_PPI
*This
,
105 IN UINTN DeviceIndex
,
106 OUT EFI_PEI_BLOCK_IO_MEDIA
*MediaInfo
112 IN EFI_PEI_SERVICES
**PeiServices
,
113 IN EFI_PEI_RECOVERY_BLOCK_IO_PPI
*This
,
114 IN UINTN DeviceIndex
,
115 IN EFI_PEI_LBA StartLba
,
121 // Internal function declare
125 IN FDC_BLK_IO_DEV
*FdcBlkIoDev
130 IN FDC_BLK_IO_DEV
*FdcBlkIoDev
,
136 IN FDC_BLK_IO_DEV
*FdcBlkIoDev
,
137 IN OUT PEI_FLOPPY_DEVICE_INFO
*Info
,
138 OUT EFI_PEI_BLOCK_IO_MEDIA
*MediaInfo
143 IN FDC_BLK_IO_DEV
*FdcBlkIoDev
,
144 IN OUT PEI_FLOPPY_DEVICE_INFO
*Info
149 IN FDC_BLK_IO_DEV
*FdcBlkIoDev
,
150 IN OUT PEI_FLOPPY_DEVICE_INFO
*Info
,
156 IN FDC_BLK_IO_DEV
*FdcBlkIoDev
,
157 IN OUT PEI_FLOPPY_DEVICE_INFO
*Info
162 IN FDC_BLK_IO_DEV
*FdcBlkIoDev
,
163 IN OUT PEI_FLOPPY_DEVICE_INFO
*Info
168 IN FDC_BLK_IO_DEV
*FdcBlkIoDev
,
170 IN UINTN TimeoutInSeconds
175 IN FDC_BLK_IO_DEV
*FdcBlkIoDev
,
182 IN FDC_BLK_IO_DEV
*FdcBlkIoDev
187 IN FDC_BLK_IO_DEV
*FdcBlkIoDev
,
188 IN OUT PEI_FLOPPY_DEVICE_INFO
*Info
193 IN FDC_BLK_IO_DEV
*FdcBlkIoDev
,
199 IN FDC_BLK_IO_DEV
*FdcBlkIoDev
,
205 IN FDC_BLK_IO_DEV
*FdcBlkIoDev
,
207 IN UINTN TimeoutInSeconds
211 GetTransferBlockCount (
212 IN PEI_FLOPPY_DEVICE_INFO
*Info
,
214 IN UINTN NumberOfBlocks
218 ReadWriteDataSector (
219 IN FDC_BLK_IO_DEV
*FdcBlkIoDev
,
220 IN OUT PEI_FLOPPY_DEVICE_INFO
*Info
,
223 IN UINTN NumberOfBlocks
,
229 IN FDC_BLK_IO_DEV
*FdcBlkIoDev
,
231 IN UINTN NumberOfBlocks
,
237 IN PEI_FLOPPY_DEVICE_INFO
*Info
,
239 IN FDC_COMMAND_PACKET1
*Command
244 IN FDC_BLK_IO_DEV
*FdcBlkIoDev
,
250 IN FDC_RESULT_PACKET
*Result
,
251 IN OUT PEI_FLOPPY_DEVICE_INFO
*Info