Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/stand/efi/include/efiser.h
34865 views
1
#ifndef _EFI_SER_H
2
#define _EFI_SER_H
3
4
/*++
5
6
Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved
7
This software and associated documentation (if any) is furnished
8
under a license and may only be used or copied in accordance
9
with the terms of the license. Except as permitted by such
10
license, no part of this software or documentation may be
11
reproduced, stored in a retrieval system, or transmitted in any
12
form or by any means without the express written consent of
13
Intel Corporation.
14
15
Module Name:
16
17
efiser.h
18
19
Abstract:
20
21
EFI serial protocol
22
23
Revision History
24
25
--*/
26
27
//
28
// Serial protocol
29
//
30
31
#define SERIAL_IO_PROTOCOL \
32
{ 0xBB25CF6F, 0xF1D4, 0x11D2, {0x9A, 0x0C, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0xFD} }
33
34
INTERFACE_DECL(_SERIAL_IO_INTERFACE);
35
36
typedef enum {
37
DefaultParity,
38
NoParity,
39
EvenParity,
40
OddParity,
41
MarkParity,
42
SpaceParity
43
} EFI_PARITY_TYPE;
44
45
typedef enum {
46
DefaultStopBits,
47
OneStopBit, // 1 stop bit
48
OneFiveStopBits, // 1.5 stop bits
49
TwoStopBits // 2 stop bits
50
} EFI_STOP_BITS_TYPE;
51
52
#define EFI_SERIAL_CLEAR_TO_SEND 0x0010 // RO
53
#define EFI_SERIAL_DATA_SET_READY 0x0020 // RO
54
#define EFI_SERIAL_RING_INDICATE 0x0040 // RO
55
#define EFI_SERIAL_CARRIER_DETECT 0x0080 // RO
56
#define EFI_SERIAL_REQUEST_TO_SEND 0x0002 // WO
57
#define EFI_SERIAL_DATA_TERMINAL_READY 0x0001 // WO
58
#define EFI_SERIAL_INPUT_BUFFER_EMPTY 0x0100 // RO
59
#define EFI_SERIAL_OUTPUT_BUFFER_EMPTY 0x0200 // RO
60
#define EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE 0x1000 // RW
61
#define EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE 0x2000 // RW
62
#define EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE 0x4000 // RW
63
64
typedef
65
EFI_STATUS
66
(EFIAPI *EFI_SERIAL_RESET) (
67
IN struct _SERIAL_IO_INTERFACE *This
68
);
69
70
typedef
71
EFI_STATUS
72
(EFIAPI *EFI_SERIAL_SET_ATTRIBUTES) (
73
IN struct _SERIAL_IO_INTERFACE *This,
74
IN UINT64 BaudRate,
75
IN UINT32 ReceiveFifoDepth,
76
IN UINT32 Timeout,
77
IN EFI_PARITY_TYPE Parity,
78
IN UINT8 DataBits,
79
IN EFI_STOP_BITS_TYPE StopBits
80
);
81
82
typedef
83
EFI_STATUS
84
(EFIAPI *EFI_SERIAL_SET_CONTROL_BITS) (
85
IN struct _SERIAL_IO_INTERFACE *This,
86
IN UINT32 Control
87
);
88
89
typedef
90
EFI_STATUS
91
(EFIAPI *EFI_SERIAL_GET_CONTROL_BITS) (
92
IN struct _SERIAL_IO_INTERFACE *This,
93
OUT UINT32 *Control
94
);
95
96
typedef
97
EFI_STATUS
98
(EFIAPI *EFI_SERIAL_WRITE) (
99
IN struct _SERIAL_IO_INTERFACE *This,
100
IN OUT UINTN *BufferSize,
101
IN VOID *Buffer
102
);
103
104
typedef
105
EFI_STATUS
106
(EFIAPI *EFI_SERIAL_READ) (
107
IN struct _SERIAL_IO_INTERFACE *This,
108
IN OUT UINTN *BufferSize,
109
OUT VOID *Buffer
110
);
111
112
typedef struct {
113
UINT32 ControlMask;
114
115
// current Attributes
116
UINT32 Timeout;
117
UINT64 BaudRate;
118
UINT32 ReceiveFifoDepth;
119
UINT32 DataBits;
120
UINT32 Parity;
121
UINT32 StopBits;
122
} SERIAL_IO_MODE;
123
124
#define SERIAL_IO_INTERFACE_REVISION 0x00010000
125
126
typedef struct _SERIAL_IO_INTERFACE {
127
UINT32 Revision;
128
EFI_SERIAL_RESET Reset;
129
EFI_SERIAL_SET_ATTRIBUTES SetAttributes;
130
EFI_SERIAL_SET_CONTROL_BITS SetControl;
131
EFI_SERIAL_GET_CONTROL_BITS GetControl;
132
EFI_SERIAL_WRITE Write;
133
EFI_SERIAL_READ Read;
134
135
SERIAL_IO_MODE *Mode;
136
} SERIAL_IO_INTERFACE;
137
138
#endif
139
140