]> git.proxmox.com Git - mirror_edk2.git/blame - UnixPkg/UnixSerialIoDxe/UnixSerialIo.h
Fix issue with fixing tabs.
[mirror_edk2.git] / UnixPkg / UnixSerialIoDxe / UnixSerialIo.h
CommitLineData
804405e7 1/*++\r
2\r
f9b8ab56
HT
3Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
4Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
5This program and the accompanying materials \r
804405e7 6are licensed and made available under the terms and conditions of the BSD License \r
7which accompanies this distribution. The full text of the license may be found at \r
8http://opensource.org/licenses/bsd-license.php \r
9 \r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
12\r
13Module Name:\r
14\r
15 UnixSerialIo.h\r
16\r
17Abstract:\r
18\r
19\r
20--*/\r
21\r
22#ifndef _UNIXPKG_SERIAL_IO_\r
23#define _UNIXPKG_SERIAL_IO_\r
ccd55824 24\r
d0c3acd4 25#include <Common/UnixInclude.h>\r
ccd55824 26\r
d0c3acd4 27#include <Uefi.h>\r
804405e7 28#include <Protocol/SerialIo.h>\r
29#include <Protocol/DevicePath.h>\r
30\r
31#include <Library/DebugLib.h>\r
32#include <Library/BaseLib.h>\r
33#include <Library/UefiDriverEntryPoint.h>\r
34#include <Library/UefiLib.h>\r
35#include <Library/BaseMemoryLib.h>\r
36#include <Library/UefiBootServicesTableLib.h>\r
37#include <Library/DevicePathLib.h>\r
38#include <Library/MemoryAllocationLib.h>\r
39#include "UnixDxe.h"\r
40\r
41extern EFI_DRIVER_BINDING_PROTOCOL gUnixSerialIoDriverBinding;\r
42extern EFI_COMPONENT_NAME_PROTOCOL gUnixSerialIoComponentName;\r
43\r
44#define SERIAL_MAX_BUFFER_SIZE 256\r
45#define TIMEOUT_STALL_INTERVAL 10\r
46\r
47typedef struct {\r
48 UINT32 First;\r
49 UINT32 Last;\r
50 UINT32 Surplus;\r
51 UINT8 Data[SERIAL_MAX_BUFFER_SIZE];\r
52} SERIAL_DEV_FIFO;\r
53\r
208301e9 54#define UNIX_SERIAL_IO_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('U', 'N', 's', 'i')\r
804405e7 55typedef struct {\r
56 UINT64 Signature;\r
57\r
58 //\r
59 // Protocol data for the new handle we are going to add\r
60 //\r
61 EFI_HANDLE Handle;\r
62 EFI_SERIAL_IO_PROTOCOL SerialIo;\r
63 EFI_SERIAL_IO_MODE SerialIoMode;\r
64 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
65\r
66 //\r
67 // Private Data\r
68 //\r
69 EFI_HANDLE ControllerHandle;\r
70 EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath;\r
71 UART_DEVICE_PATH UartDevicePath;\r
72 EFI_UNIX_THUNK_PROTOCOL *UnixThunk;\r
73\r
74 EFI_UNICODE_STRING_TABLE *ControllerNameTable;\r
75\r
76 //\r
77 // Private NT type Data;\r
78 //\r
79 UINTN UnixHandle;\r
80 struct termios UnixTermios;\r
81\r
82 BOOLEAN SoftwareLoopbackEnable;\r
83 BOOLEAN HardwareFlowControl;\r
84 BOOLEAN HardwareLoopbackEnable;\r
85\r
86 SERIAL_DEV_FIFO Fifo;\r
87\r
88} UNIX_SERIAL_IO_PRIVATE_DATA;\r
89\r
90#define UNIX_SERIAL_IO_PRIVATE_DATA_FROM_THIS(a) \\r
91 CR(a, UNIX_SERIAL_IO_PRIVATE_DATA, SerialIo, UNIX_SERIAL_IO_PRIVATE_DATA_SIGNATURE)\r
92\r
93//\r
94// Global Protocol Variables\r
95//\r
96extern EFI_DRIVER_BINDING_PROTOCOL gUnixSerialIoDriverBinding;\r
97extern EFI_COMPONENT_NAME_PROTOCOL gUnixSerialIoComponentName;\r
98\r
99//\r
100// Macros to convert EFI serial types to NT serial types.\r
101//\r
102\r
103//\r
104// one second\r
105//\r
106#define SERIAL_TIMEOUT_DEFAULT (1000 * 1000) \r
107#define SERIAL_BAUD_DEFAULT 115200\r
108#define SERIAL_FIFO_DEFAULT 14\r
109#define SERIAL_DATABITS_DEFAULT 8\r
110#define SERIAL_PARITY_DEFAULT DefaultParity\r
111#define SERIAL_STOPBITS_DEFAULT DefaultStopBits\r
112\r
526bf28c
RN
113#define SERIAL_CONTROL_MASK (EFI_SERIAL_CLEAR_TO_SEND | \\r
114 EFI_SERIAL_DATA_SET_READY | \\r
115 EFI_SERIAL_RING_INDICATE | \\r
116 EFI_SERIAL_CARRIER_DETECT | \\r
117 EFI_SERIAL_REQUEST_TO_SEND | \\r
118 EFI_SERIAL_DATA_TERMINAL_READY | \\r
119 EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE | \\r
120 EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE | \\r
121 EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE | \\r
804405e7 122 EFI_SERIAL_INPUT_BUFFER_EMPTY)\r
123\r
124#define ConvertBaud2Nt(x) (DWORD) x\r
125#define ConvertData2Nt(x) (BYTE) x\r
126\r
127#define ConvertParity2Nt(x) \\r
128 (BYTE) ( \\r
129 x == DefaultParity ? NOPARITY : \\r
130 x == NoParity ? NOPARITY : \\r
131 x == EvenParity ? EVENPARITY : \\r
132 x == OddParity ? ODDPARITY : \\r
133 x == MarkParity ? MARKPARITY : \\r
134 x == SpaceParity ? SPACEPARITY : 0 \\r
135 )\r
136\r
137#define ConvertStop2Nt(x) \\r
138 (BYTE) ( \\r
139 x == DefaultParity ? ONESTOPBIT : \\r
140 x == OneFiveStopBits ? ONE5STOPBITS : \\r
141 x == TwoStopBits ? TWOSTOPBITS : 0 \\r
142 )\r
143\r
144#define ConvertTime2Nt(x) ((x) / 1000)\r
145\r
146//\r
147// 115400 baud with rounding errors\r
148//\r
149#define SERIAL_PORT_MAX_BAUD_RATE 115400 \r
150\r
151//\r
152// Fix the differences issue of linux header files termios.h \r
153// \r
154#ifndef B460800\r
155#define B460800 0010004\r
156#endif\r
157#ifndef B500000\r
158#define B500000 0010005\r
159#endif\r
160#ifndef B576000\r
161#define B576000 0010006\r
162#endif\r
163#ifndef B921600\r
164#define B921600 0010007\r
165#endif\r
166#ifndef B1000000\r
167#define B1000000 0010010\r
168#endif\r
169#ifndef B1152000\r
170#define B1152000 0010011\r
171#endif\r
172#ifndef B1500000\r
173#define B1500000 0010012\r
174#endif\r
175#ifndef B2000000\r
176#define B2000000 0010013\r
177#endif\r
178#ifndef B2500000\r
179#define B2500000 0010014\r
180#endif\r
181#ifndef B3000000\r
182#define B3000000 0010015\r
183#endif\r
184#ifndef B3500000\r
185#define B3500000 0010016\r
186#endif\r
187#ifndef B4000000\r
188#define B4000000 0010017\r
189#endif\r
190#ifndef __MAX_BAUD\r
191#define __MAX_BAUD B4000000\r
192#endif\r
193#ifndef CMSPAR\r
2ac288f9 194#define CMSPAR 010000000000 /* mark or space (stick) parity */\r
804405e7 195#endif\r
196#ifndef FIONREAD\r
2ac288f9 197#define FIONREAD 0x541B\r
804405e7 198#endif\r
199//\r
200// Function Prototypes\r
201//\r
202EFI_STATUS\r
203EFIAPI\r
204InitializeUnixSerialIo (\r
205 IN EFI_HANDLE ImageHandle,\r
206 IN EFI_SYSTEM_TABLE *SystemTable\r
207 )\r
208/*++\r
209\r
210Routine Description:\r
211\r
212 TODO: Add function description\r
213\r
214Arguments:\r
215\r
216 ImageHandle - TODO: add argument description\r
217 SystemTable - TODO: add argument description\r
218\r
219Returns:\r
220\r
221 TODO: add return values\r
222\r
223--*/\r
224;\r
225\r
226EFI_STATUS\r
227EFIAPI\r
228UnixSerialIoDriverBindingSupported (\r
229 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
230 IN EFI_HANDLE Handle,\r
231 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
232 )\r
233/*++\r
234\r
235Routine Description:\r
236\r
237 TODO: Add function description\r
238\r
239Arguments:\r
240\r
241 This - TODO: add argument description\r
242 Handle - TODO: add argument description\r
243 RemainingDevicePath - TODO: add argument description\r
244\r
245Returns:\r
246\r
247 TODO: add return values\r
248\r
249--*/\r
250;\r
251\r
252EFI_STATUS\r
253EFIAPI\r
254UnixSerialIoDriverBindingStart (\r
255 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
256 IN EFI_HANDLE Handle,\r
257 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
258 )\r
259/*++\r
260\r
261Routine Description:\r
262\r
263 TODO: Add function description\r
264\r
265Arguments:\r
266\r
267 This - TODO: add argument description\r
268 Handle - TODO: add argument description\r
269 RemainingDevicePath - TODO: add argument description\r
270\r
271Returns:\r
272\r
273 TODO: add return values\r
274\r
275--*/\r
276;\r
277\r
278EFI_STATUS\r
279EFIAPI\r
280UnixSerialIoDriverBindingStop (\r
281 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
282 IN EFI_HANDLE Handle,\r
283 IN UINTN NumberOfChildren,\r
284 IN EFI_HANDLE *ChildHandleBuffer\r
285 )\r
286/*++\r
287\r
288Routine Description:\r
289\r
290 TODO: Add function description\r
291\r
292Arguments:\r
293\r
294 This - TODO: add argument description\r
295 Handle - TODO: add argument description\r
296 NumberOfChildren - TODO: add argument description\r
297 ChildHandleBuffer - TODO: add argument description\r
298\r
299Returns:\r
300\r
301 TODO: add return values\r
302\r
303--*/\r
304;\r
305\r
306EFI_STATUS\r
307EFIAPI\r
308UnixSerialIoReset (\r
309 IN EFI_SERIAL_IO_PROTOCOL *This\r
310 )\r
311/*++\r
312\r
313Routine Description:\r
314\r
315 TODO: Add function description\r
316\r
317Arguments:\r
318\r
319 This - TODO: add argument description\r
320\r
321Returns:\r
322\r
323 TODO: add return values\r
324\r
325--*/\r
326;\r
327\r
328EFI_STATUS\r
329EFIAPI\r
330UnixSerialIoSetAttributes (\r
331 IN EFI_SERIAL_IO_PROTOCOL *This,\r
332 IN UINT64 BaudRate,\r
333 IN UINT32 ReceiveFifoDepth,\r
334 IN UINT32 Timeout,\r
335 IN EFI_PARITY_TYPE Parity,\r
336 IN UINT8 DataBits,\r
337 IN EFI_STOP_BITS_TYPE StopBits\r
338 )\r
339/*++\r
340\r
341Routine Description:\r
342\r
343 TODO: Add function description\r
344\r
345Arguments:\r
346\r
347 This - TODO: add argument description\r
348 BaudRate - TODO: add argument description\r
349 ReceiveFifoDepth - TODO: add argument description\r
350 Timeout - TODO: add argument description\r
351 Parity - TODO: add argument description\r
352 DataBits - TODO: add argument description\r
353 StopBits - TODO: add argument description\r
354\r
355Returns:\r
356\r
357 TODO: add return values\r
358\r
359--*/\r
360;\r
361\r
362EFI_STATUS\r
363EFIAPI\r
364UnixSerialIoSetControl (\r
365 IN EFI_SERIAL_IO_PROTOCOL *This,\r
366 IN UINT32 Control\r
367 )\r
368/*++\r
369\r
370Routine Description:\r
371\r
372 TODO: Add function description\r
373\r
374Arguments:\r
375\r
376 This - TODO: add argument description\r
377 Control - TODO: add argument description\r
378\r
379Returns:\r
380\r
381 TODO: add return values\r
382\r
383--*/\r
384;\r
385\r
386EFI_STATUS\r
387EFIAPI\r
388UnixSerialIoGetControl (\r
389 IN EFI_SERIAL_IO_PROTOCOL *This,\r
390 OUT UINT32 *Control\r
391 )\r
392/*++\r
393\r
394Routine Description:\r
395\r
396 TODO: Add function description\r
397\r
398Arguments:\r
399\r
400 This - TODO: add argument description\r
401 Control - TODO: add argument description\r
402\r
403Returns:\r
404\r
405 TODO: add return values\r
406\r
407--*/\r
408;\r
409\r
410EFI_STATUS\r
411EFIAPI\r
412UnixSerialIoWrite (\r
413 IN EFI_SERIAL_IO_PROTOCOL *This,\r
414 IN OUT UINTN *BufferSize,\r
415 IN VOID *Buffer\r
416 )\r
417/*++\r
418\r
419Routine Description:\r
420\r
421 TODO: Add function description\r
422\r
423Arguments:\r
424\r
425 This - TODO: add argument description\r
426 BufferSize - TODO: add argument description\r
427 Buffer - TODO: add argument description\r
428\r
429Returns:\r
430\r
431 TODO: add return values\r
432\r
433--*/\r
434;\r
435\r
436EFI_STATUS\r
437EFIAPI\r
438UnixSerialIoRead (\r
439 IN EFI_SERIAL_IO_PROTOCOL *This,\r
440 IN OUT UINTN *BufferSize,\r
441 OUT VOID *Buffer\r
442 )\r
443/*++\r
444\r
445Routine Description:\r
446\r
447 TODO: Add function description\r
448\r
449Arguments:\r
450\r
451 This - TODO: add argument description\r
452 BufferSize - TODO: add argument description\r
453 Buffer - TODO: add argument description\r
454\r
455Returns:\r
456\r
457 TODO: add return values\r
458\r
459--*/\r
460;\r
461\r
462BOOLEAN\r
463IsaSerialFifoFull (\r
464 IN SERIAL_DEV_FIFO *Fifo\r
465 )\r
466/*++\r
467\r
468Routine Description:\r
469\r
470 TODO: Add function description\r
471\r
472Arguments:\r
473\r
474 Fifo - TODO: add argument description\r
475\r
476Returns:\r
477\r
478 TODO: add return values\r
479\r
480--*/\r
481;\r
482\r
483BOOLEAN\r
484IsaSerialFifoEmpty (\r
485 IN SERIAL_DEV_FIFO *Fifo\r
486 )\r
487/*++\r
488\r
489Routine Description:\r
490\r
491 TODO: Add function description\r
492\r
493Arguments:\r
494\r
495 Fifo - TODO: add argument description\r
496\r
497Returns:\r
498\r
499 TODO: add return values\r
500\r
501--*/\r
502;\r
503\r
504EFI_STATUS\r
505IsaSerialFifoAdd (\r
506 IN SERIAL_DEV_FIFO *Fifo,\r
507 IN UINT8 Data\r
508 )\r
509/*++\r
510\r
511Routine Description:\r
512\r
513 TODO: Add function description\r
514\r
515Arguments:\r
516\r
517 Fifo - TODO: add argument description\r
518 Data - TODO: add argument description\r
519\r
520Returns:\r
521\r
522 TODO: add return values\r
523\r
524--*/\r
525;\r
526\r
527EFI_STATUS\r
528IsaSerialFifoRemove (\r
529 IN SERIAL_DEV_FIFO *Fifo,\r
530 OUT UINT8 *Data\r
531 )\r
532/*++\r
533\r
534Routine Description:\r
535\r
536 TODO: Add function description\r
537\r
538Arguments:\r
539\r
540 Fifo - TODO: add argument description\r
541 Data - TODO: add argument description\r
542\r
543Returns:\r
544\r
545 TODO: add return values\r
546\r
547--*/\r
548;\r
549\r
550EFI_STATUS\r
551IsaSerialReceiveTransmit (\r
552 UNIX_SERIAL_IO_PRIVATE_DATA *Private\r
553 )\r
554/*++\r
555\r
556Routine Description:\r
557\r
558 TODO: Add function description\r
559\r
560Arguments:\r
561\r
562 Private - TODO: add argument description\r
563\r
564Returns:\r
565\r
566 TODO: add return values\r
567\r
568--*/\r
569;\r
570\r
571#endif\r