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