Subversion Repositories HelenOS

Rev

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

Rev Author Line No. Line
2726 vana 1
/*
2
 * Copyright (c) 1999, 2000
3
 * Intel Corporation.
4
 * All rights reserved.
5
 *
6
 * Redistribution and use in source and binary forms, with or without
7
 * modification, are permitted provided that the following conditions
8
 * are met:
9
 *
10
 * 1. Redistributions of source code must retain the above copyright
11
 *    notice, this list of conditions and the following disclaimer.
12
 *
13
 * 2. Redistributions in binary form must reproduce the above copyright
14
 *    notice, this list of conditions and the following disclaimer in the
15
 *    documentation and/or other materials provided with the distribution.
16
 *
17
 * 3. All advertising materials mentioning features or use of this software
18
 *    must display the following acknowledgement:
19
 *
20
 *    This product includes software developed by Intel Corporation and
21
 *    its contributors.
22
 *
23
 * 4. Neither the name of Intel Corporation or its contributors may be
24
 *    used to endorse or promote products derived from this software
25
 *    without specific prior written permission.
26
 *
27
 * THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION AND CONTRIBUTORS ``AS IS''
28
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
30
 * ARE DISCLAIMED.  IN NO EVENT SHALL INTEL CORPORATION OR CONTRIBUTORS BE
31
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
32
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
33
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
34
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
35
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
36
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
37
 * THE POSSIBILITY OF SUCH DAMAGE.
38
 *
39
 */
40
 
41
 
42
#ifndef _EFIDBG_H_
43
#define _EFIDBG_H_
44
 
45
#include "eficontext.h"
46
#include "efiser.h"
47
 
48
typedef struct _DEBUGPORT_16550_CONFIG_DATA {
49
        UINT32                          PortAddress;
50
        UINT64                          BaudRate;
51
        UINT32                          ReceiveFifoDepth;
52
        UINT32                          Timeout;
53
        UINT8                           Parity;
54
        UINT8                           DataBits;
55
        UINT8                           StopBits;
56
        UINT32                          ControlMask;
57
        BOOLEAN                         RtsCtsEnable;       // RTS, CTS control
58
} DEBUGPORT_16550_CONFIG_DATA;
59
 
60
typedef struct _DEBUGPORT_16550_DEVICE_PATH {
61
        EFI_DEVICE_PATH                 Header;
62
        DEBUGPORT_16550_CONFIG_DATA     ConfigData;
63
} DEBUGPORT_16550_DEVICE_PATH;
64
 
65
typedef union {
66
    EFI_DEVICE_PATH                     DevPath;
67
    DEBUGPORT_16550_DEVICE_PATH         Uart;
68
    // add new types of debugport device paths to this union...
69
} DEBUGPORT_DEV_PATH;
70
 
71
 
72
//
73
// Debug Support protocol {2755590C-6F3C-42FA-9EA4-A3BA543CDA25}
74
//
75
 
76
#define DEBUG_SUPPORT_PROTOCOL \
77
{ 0x2755590C, 0x6F3C, 0x42fa, 0x9E, 0xA4, 0xA3, 0xBA, 0x54, 0x3C, 0xDA, 0x25 }
78
 
79
 
80
typedef UINTN EXCEPTION_TYPE;
81
 
82
typedef
83
VOID
84
(*EXCEPTION_HANDLER) (
85
    IN EXCEPTION_TYPE ExceptionType,
86
    IN SYSTEM_CONTEXT *SystemContext
87
    );
88
 
89
typedef
90
EFI_STATUS
91
(EFIAPI *EFI_REGISTER_TIMER_TICK_CALLBACK) (
92
    IN struct _EFI_DEBUG_SUPPORT_INTERFACE  *This,
93
    IN EXCEPTION_HANDLER                    TimerTickCallback
94
    );
95
 
96
typedef
97
EFI_STATUS
98
(EFIAPI *EFI_REGISTER_EXCEPTION_HANDLER) (
99
    IN     struct _EFI_DEBUG_SUPPORT_INTERFACE  *This,
100
    IN     EXCEPTION_HANDLER                    ExceptionHandler,
101
    IN     EXCEPTION_TYPE                       ExceptionType
102
    );
103
 
104
typedef
105
EFI_STATUS
106
(EFIAPI *EFI_IP_CALL_TRACE) (
107
    IN     struct _EFI_DEBUG_SUPPORT_INTERFACE  *This
108
    );
109
 
110
 
111
#define EFI_DEBUG_SUPPORT_INTERFACE_REVISION     0x00010000
112
 
113
typedef struct _EFI_DEBUG_SUPPORT_INTERFACE {
114
    UINT32                              Revision;
115
    EFI_REGISTER_TIMER_TICK_CALLBACK    RegisterTimerTickCallback;
116
    EFI_REGISTER_EXCEPTION_HANDLER      RegisterExceptionHandler;
117
    EFI_IP_CALL_TRACE                   IpCallTrace;
118
} EFI_DEBUG_SUPPORT_INTERFACE;
119
 
120
 
121
//
122
// Debugport io protocol {EBA4E8D2-3858-41EC-A281-2647BA9660D0}
123
//
124
 
125
#define DEBUGPORT_IO_PROTOCOL \
126
{ 0XEBA4E8D2, 0X3858, 0X41EC, 0XA2, 0X81, 0X26, 0X47, 0XBA, 0X96, 0X60, 0XD0 }
127
 
128
 
129
typedef
130
EFI_STATUS
131
(EFIAPI *EFI_DEBUGPORT_IO_RESET) (
132
    IN struct _EFI_DEBUGPORT_IO_INTERFACE   *This
133
    );
134
 
135
typedef
136
EFI_STATUS
137
(EFIAPI *EFI_DEBUGPORT_IO_READ) (
138
    IN     struct _EFI_DEBUGPORT_IO_INTERFACE   *This,
139
    IN OUT UINTN                            *BufferSize,
140
    OUT VOID                                *Buffer
141
    );
142
 
143
typedef
144
EFI_STATUS
145
(EFIAPI *EFI_DEBUGPORT_IO_WRITE) (
146
    IN     struct _EFI_DEBUGPORT_IO_INTERFACE *This,
147
    IN OUT UINTN                            *BufferSize,
148
    IN VOID                                 *Buffer
149
    );
150
 
151
#define EFI_DEBUGPORT_IO_INTERFACE_REVISION   0x00010000
152
 
153
typedef struct _EFI_DEBUGPORT_IO_INTERFACE {
154
    UINT32                                  Revision;
155
    EFI_DEBUGPORT_IO_READ                   Read;
156
    EFI_DEBUGPORT_IO_WRITE                  Write;
157
    EFI_DEBUGPORT_IO_RESET                  Reset;
158
} EFI_DEBUGPORT_IO_INTERFACE;
159
 
160
 
161
//
162
// Debugport UART16550 control protocol {628EA978-4C26-4605-BC02-A42A496917DD}
163
//
164
 
165
#define DEBUGPORT_UART16550_CONTROL_PROTOCOL \
166
{ 0X628EA978, 0X4C26, 0X4605, 0XBC, 0X2, 0XA4, 0X2A, 0X49, 0X69, 0X17, 0XDD }
167
 
168
// Note: The definitions for EFI_PARITY_TYPE, EFI_STOP_BITS_TYPE, and 
169
// SERIAL_IO_MODE are included from efiser.h
170
 
171
typedef
172
EFI_STATUS
173
(EFIAPI *EFI_UART16550_SET_ATTRIBUTES) (
174
    IN struct _EFI_DEBUGPORT_UART16550_CONTROL_INTERFACE    *This,
175
    IN UINT64                           BaudRate,
176
    IN UINT32                           ReceiveFifoDepth,
177
    IN UINT32                           Timeout,
178
    IN EFI_PARITY_TYPE                  Parity,
179
    IN UINT8                            DataBits,
180
    IN EFI_STOP_BITS_TYPE               StopBits
181
    );
182
 
183
typedef
184
EFI_STATUS
185
(EFIAPI *EFI_UART16550_SET_CONTROL_BITS) (
186
    IN struct _EFI_DEBUGPORT_UART16550_CONTROL_INTERFACE    *This,
187
    IN UINT32                           Control
188
    );
189
 
190
typedef
191
EFI_STATUS
192
(EFIAPI *EFI_UART16550_GET_CONTROL_BITS) (
193
    IN struct _EFI_DEBUGPORT_UART16550_CONTROL_INTERFACE    *This,
194
    OUT UINT32                          *Control
195
    );
196
 
197
#define EFI_DEBUGPORT_UART16550_CONTROL_INTERFACE_REVISION   0x00010000
198
 
199
typedef struct _EFI_DEBUGPORT_UART16550_CONTROL_INTERFACE {
200
    UINT32                              Revision;
201
    EFI_UART16550_SET_ATTRIBUTES        SetAttributes;
202
    EFI_UART16550_SET_CONTROL_BITS      SetControl;
203
    EFI_UART16550_GET_CONTROL_BITS      GetControl;
204
    DEBUGPORT_16550_CONFIG_DATA         *Mode;
205
} EFI_DEBUGPORT_UART16550_CONTROL_INTERFACE;
206
 
207
 
208
#define DEVICE_PATH_DEBUGPORT DEBUGPORT_IO_PROTOCOL
209
 
210
#endif /* _EFIDBG_H_ */