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