Subversion Repositories HelenOS

Rev

Rev 2726 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2726 vana 1
#ifndef _EFI_SER_H
2
#define _EFI_SER_H
3
 
4
/*++
5
 
6
Copyright (c) 1998  Intel Corporation
7
 
8
Module Name:
9
 
10
    efiser.h
11
 
12
Abstract:
13
 
14
    EFI serial protocol
15
 
16
Revision History
17
 
18
--*/
19
 
20
//
21
// Serial protocol
22
//
23
 
24
#define SERIAL_IO_PROTOCOL \
25
    { 0xBB25CF6F, 0xF1D4, 0x11D2, {0x9A, 0x0C, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0xFD} }
26
 
27
INTERFACE_DECL(_SERIAL_IO_INTERFACE);
28
 
29
typedef enum {
30
    DefaultParity,      
31
    NoParity,          
32
    EvenParity,
33
    OddParity,
34
    MarkParity,
35
    SpaceParity
36
} EFI_PARITY_TYPE;
37
 
38
typedef enum {
39
    DefaultStopBits,        
40
    OneStopBit,         // 1 stop bit
41
    OneFiveStopBits,    // 1.5 stop bits
42
    TwoStopBits         // 2 stop bits
43
} EFI_STOP_BITS_TYPE;
44
 
45
#define EFI_SERIAL_CLEAR_TO_SEND                   0x0010  // RO
46
#define EFI_SERIAL_DATA_SET_READY                  0x0020  // RO
47
#define EFI_SERIAL_RING_INDICATE                   0x0040  // RO
48
#define EFI_SERIAL_CARRIER_DETECT                  0x0080  // RO
49
#define EFI_SERIAL_REQUEST_TO_SEND                 0x0002  // WO
50
#define EFI_SERIAL_DATA_TERMINAL_READY             0x0001  // WO
51
#define EFI_SERIAL_INPUT_BUFFER_EMPTY              0x0100  // RO
52
#define EFI_SERIAL_OUTPUT_BUFFER_EMPTY             0x0200  // RO
53
#define EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE        0x1000  // RW
54
#define EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE        0x2000  // RW
55
#define EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE    0x4000  // RW
56
 
57
typedef
58
EFI_STATUS
59
(EFIAPI *EFI_SERIAL_RESET) (
60
    IN struct _SERIAL_IO_INTERFACE  *This
61
    );
62
 
63
typedef
64
EFI_STATUS
65
(EFIAPI *EFI_SERIAL_SET_ATTRIBUTES) (
66
    IN struct _SERIAL_IO_INTERFACE  *This,
67
    IN UINT64                       BaudRate,
68
    IN UINT32                       ReceiveFifoDepth,
69
    IN UINT32                       Timeout,
70
    IN EFI_PARITY_TYPE              Parity,
71
    IN UINT8                        DataBits,
72
    IN EFI_STOP_BITS_TYPE           StopBits
73
    );
74
 
75
typedef
76
EFI_STATUS
77
(EFIAPI *EFI_SERIAL_SET_CONTROL_BITS) (
78
    IN struct _SERIAL_IO_INTERFACE  *This,
79
    IN UINT32                       Control
80
    );
81
 
82
typedef
83
EFI_STATUS
84
(EFIAPI *EFI_SERIAL_GET_CONTROL_BITS) (
85
    IN struct _SERIAL_IO_INTERFACE  *This,
86
    OUT UINT32                      *Control
87
    );
88
 
89
typedef
90
EFI_STATUS
91
(EFIAPI *EFI_SERIAL_WRITE) (
92
    IN struct _SERIAL_IO_INTERFACE  *This,
93
    IN OUT UINTN                    *BufferSize,
94
    IN VOID                         *Buffer
95
    );
96
 
97
typedef
98
EFI_STATUS
99
(EFIAPI *EFI_SERIAL_READ) (
100
    IN struct _SERIAL_IO_INTERFACE  *This,
101
    IN OUT UINTN                    *BufferSize,
102
    OUT VOID                        *Buffer
103
    );
104
 
105
typedef struct {
106
    UINT32                  ControlMask;
107
 
108
    // current Attributes
109
    UINT32                  Timeout;
110
    UINT64                  BaudRate;
111
    UINT32                  ReceiveFifoDepth;
112
    UINT32                  DataBits;
113
    UINT32                  Parity;
114
    UINT32                  StopBits;
115
} SERIAL_IO_MODE;
116
 
117
#define SERIAL_IO_INTERFACE_REVISION    0x00010000
118
 
119
typedef struct _SERIAL_IO_INTERFACE {
120
    UINT32                       Revision;
121
    EFI_SERIAL_RESET             Reset;
122
    EFI_SERIAL_SET_ATTRIBUTES    SetAttributes;
123
    EFI_SERIAL_SET_CONTROL_BITS  SetControl;
124
    EFI_SERIAL_GET_CONTROL_BITS  GetControl;
125
    EFI_SERIAL_WRITE             Write;
126
    EFI_SERIAL_READ              Read;
127
 
128
    SERIAL_IO_MODE               *Mode;
129
} SERIAL_IO_INTERFACE;
130
 
131
#endif
132