]> git.proxmox.com Git - mirror_edk2.git/blame - IntelFrameworkModulePkg/Bus/Isa/IsaFloppy/Pei/FloppyPeim.h
Update Copyright header of IsaFloppyPei.
[mirror_edk2.git] / IntelFrameworkModulePkg / Bus / Isa / IsaFloppy / Pei / FloppyPeim.h
CommitLineData
11f43dfd 1/*++\r
2\r
e72a8ec5 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
12\r
13Module Name:\r
14\r
15 FloppyPeim.h\r
16 \r
17Abstract: \r
18 \r
19\r
20Revision History\r
21--*/\r
22\r
23#ifndef _RECOVERY_FLOPPY_H\r
24#define _RECOVERY_FLOPPY_H\r
25\r
26//\r
27// The package level header files this module uses\r
28//\r
29#include <PiPei.h>\r
30#include <FrameworkPei.h>\r
31\r
32#include <Ppi/BlockIo.h>\r
33//\r
34// The Library classes this module consumes\r
35//\r
36#include <Library/DebugLib.h>\r
37#include <Library/PeimEntryPoint.h>\r
38#include <Library/PeiServicesLib.h>\r
39#include <Library/BaseMemoryLib.h>\r
40#include <Library/ReportStatusCodeLib.h>\r
41#include <Library/TimerLib.h>\r
42#include <Library/IoLib.h>\r
43\r
44#include "Fdc.h"\r
45//\r
46// define some macro\r
47//\r
48#define STALL_1_SECOND 1000000\r
49#define STALL_1_MSECOND 1000\r
50\r
51#define DATA_IN 1\r
52#define DATA_OUT 0\r
53#define READ 0\r
54#define WRITE 1\r
55\r
56typedef enum {\r
57 _360K_360K = 0,\r
58 _360K_1200K,\r
59 _1200K_1200K,\r
60 _720K_720K,\r
61 _720K_1440K,\r
62 _1440K_1440K,\r
63 _720K_2880K,\r
64 _1440K_2880K,\r
65 _2880K_2880K\r
66} FDC_DISKET_TYPE;\r
67\r
68typedef struct {\r
69 UINT8 DevPos;\r
70 UINT8 Pcn;\r
71 BOOLEAN MotorOn;\r
72 BOOLEAN NeedRecalibrate;\r
73 FDC_DISKET_TYPE Type;\r
74 EFI_PEI_BLOCK_IO_MEDIA MediaInfo;\r
75} PEI_FLOPPY_DEVICE_INFO;\r
76\r
77#define FDC_BLK_IO_DEV_SIGNATURE EFI_SIGNATURE_32 ('F', 'b', 'i', 'o')\r
78\r
79typedef struct {\r
80 UINTN Signature;\r
81 EFI_PEI_RECOVERY_BLOCK_IO_PPI FdcBlkIo;\r
82 EFI_PEI_PPI_DESCRIPTOR PpiDescriptor;\r
83 UINTN DeviceCount;\r
84 PEI_FLOPPY_DEVICE_INFO DeviceInfo[2];\r
85} FDC_BLK_IO_DEV;\r
86\r
87#define PEI_RECOVERY_FDC_FROM_BLKIO_THIS(a) CR (a, FDC_BLK_IO_DEV, FdcBlkIo, FDC_BLK_IO_DEV_SIGNATURE)\r
88\r
89//\r
90// PEI Recovery Block I/O PPI\r
91//\r
92EFI_STATUS\r
93EFIAPI\r
94FdcGetNumberOfBlockDevices (\r
95 IN EFI_PEI_SERVICES **PeiServices,\r
96 IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This,\r
97 OUT UINTN *NumberBlockDevices\r
98 );\r
99\r
100EFI_STATUS\r
101EFIAPI\r
102FdcGetBlockDeviceMediaInfo (\r
103 IN EFI_PEI_SERVICES **PeiServices,\r
104 IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This,\r
105 IN UINTN DeviceIndex,\r
106 OUT EFI_PEI_BLOCK_IO_MEDIA *MediaInfo\r
107 );\r
108\r
109EFI_STATUS\r
110EFIAPI\r
111FdcReadBlocks (\r
112 IN EFI_PEI_SERVICES **PeiServices,\r
113 IN EFI_PEI_RECOVERY_BLOCK_IO_PPI *This,\r
114 IN UINTN DeviceIndex,\r
115 IN EFI_PEI_LBA StartLba,\r
116 IN UINTN BufferSize,\r
117 OUT VOID *Buffer\r
118 );\r
119\r
120//\r
121// Internal function declare\r
122//\r
123UINT8\r
124FdcEnumeration (\r
125 IN FDC_BLK_IO_DEV *FdcBlkIoDev\r
126 );\r
127\r
128EFI_STATUS\r
129FdcReset (\r
130 IN FDC_BLK_IO_DEV *FdcBlkIoDev,\r
131 IN UINT8 DevPos\r
132 );\r
133\r
134BOOLEAN\r
135DiscoverFdcDevice (\r
136 IN FDC_BLK_IO_DEV *FdcBlkIoDev,\r
137 IN OUT PEI_FLOPPY_DEVICE_INFO *Info,\r
138 OUT EFI_PEI_BLOCK_IO_MEDIA *MediaInfo\r
139 );\r
140\r
141EFI_STATUS\r
142Recalibrate (\r
143 IN FDC_BLK_IO_DEV *FdcBlkIoDev,\r
144 IN OUT PEI_FLOPPY_DEVICE_INFO *Info\r
145 );\r
146\r
147EFI_STATUS\r
148Seek (\r
149 IN FDC_BLK_IO_DEV *FdcBlkIoDev,\r
150 IN OUT PEI_FLOPPY_DEVICE_INFO *Info,\r
151 IN EFI_PEI_LBA Lba\r
152 );\r
153\r
154EFI_STATUS\r
155MotorOn (\r
156 IN FDC_BLK_IO_DEV *FdcBlkIoDev,\r
157 IN OUT PEI_FLOPPY_DEVICE_INFO *Info\r
158 );\r
159\r
160EFI_STATUS\r
161MotorOff (\r
162 IN FDC_BLK_IO_DEV *FdcBlkIoDev,\r
163 IN OUT PEI_FLOPPY_DEVICE_INFO *Info\r
164 );\r
165\r
166EFI_STATUS\r
167FdcWaitForBSYClear (\r
168 IN FDC_BLK_IO_DEV *FdcBlkIoDev,\r
169 IN UINT8 DevPos,\r
170 IN UINTN TimeoutInSeconds\r
171 );\r
172\r
173EFI_STATUS\r
174SenseIntStatus (\r
175 IN FDC_BLK_IO_DEV *FdcBlkIoDev,\r
176 IN OUT UINT8 *sts0,\r
177 IN OUT UINT8 *pcn\r
178 );\r
179\r
180EFI_STATUS\r
181Specify (\r
182 IN FDC_BLK_IO_DEV *FdcBlkIoDev\r
183 );\r
184\r
185EFI_STATUS\r
186DisketChanged (\r
187 IN FDC_BLK_IO_DEV *FdcBlkIoDev,\r
188 IN OUT PEI_FLOPPY_DEVICE_INFO *Info\r
189 );\r
190\r
191EFI_STATUS\r
192DataInByte (\r
193 IN FDC_BLK_IO_DEV *FdcBlkIoDev,\r
194 IN OUT UINT8 *pt\r
195 );\r
196\r
197EFI_STATUS\r
198DataOutByte (\r
199 IN FDC_BLK_IO_DEV *FdcBlkIoDev,\r
200 IN UINT8 *pt\r
201 );\r
202\r
203EFI_STATUS\r
204FdcDRQReady (\r
205 IN FDC_BLK_IO_DEV *FdcBlkIoDev,\r
206 IN BOOLEAN Dio,\r
207 IN UINTN TimeoutInSeconds\r
208 );\r
209\r
210UINTN\r
211GetTransferBlockCount (\r
212 IN PEI_FLOPPY_DEVICE_INFO *Info,\r
213 IN EFI_PEI_LBA LBA,\r
214 IN UINTN NumberOfBlocks\r
215 );\r
216\r
217EFI_STATUS\r
218ReadWriteDataSector (\r
219 IN FDC_BLK_IO_DEV *FdcBlkIoDev,\r
220 IN OUT PEI_FLOPPY_DEVICE_INFO *Info,\r
221 IN VOID *Buffer,\r
222 IN EFI_PEI_LBA Lba,\r
223 IN UINTN NumberOfBlocks,\r
224 IN BOOLEAN Read\r
225 );\r
226\r
227EFI_STATUS\r
228SetDMA (\r
229 IN FDC_BLK_IO_DEV *FdcBlkIoDev,\r
230 IN VOID *Buffer,\r
231 IN UINTN NumberOfBlocks,\r
232 IN BOOLEAN Read\r
233 );\r
234\r
235VOID\r
236FillPara (\r
237 IN PEI_FLOPPY_DEVICE_INFO *Info,\r
238 IN EFI_PEI_LBA Lba,\r
239 IN FDC_COMMAND_PACKET1 *Command\r
240 );\r
241\r
242EFI_STATUS\r
243Setup (\r
244 IN FDC_BLK_IO_DEV *FdcBlkIoDev,\r
245 IN UINT8 DevPos\r
246 );\r
247\r
248EFI_STATUS\r
249CheckResult (\r
250 IN FDC_RESULT_PACKET *Result,\r
251 IN OUT PEI_FLOPPY_DEVICE_INFO *Info\r
252 );\r
253\r
254#endif\r