xref: /freebsd/sys/contrib/edk2/Include/Protocol/DebugPort.h (revision 0d1ba6657e90b1f9b76e1c393b1555d6cf6cf260)
1*0d1ba665SWarner Losh /** @file
2*0d1ba665SWarner Losh 
3*0d1ba665SWarner Losh   The file defines the EFI Debugport protocol.
4*0d1ba665SWarner Losh   This protocol is used by debug agent to communicate with the
5*0d1ba665SWarner Losh   remote debug host.
6*0d1ba665SWarner Losh 
7*0d1ba665SWarner Losh   Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
8*0d1ba665SWarner Losh   This program and the accompanying materials
9*0d1ba665SWarner Losh   are licensed and made available under the terms and conditions of the BSD License
10*0d1ba665SWarner Losh   which accompanies this distribution.  The full text of the license may be found at
11*0d1ba665SWarner Losh   http://opensource.org/licenses/bsd-license.php
12*0d1ba665SWarner Losh 
13*0d1ba665SWarner Losh   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
14*0d1ba665SWarner Losh   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
15*0d1ba665SWarner Losh 
16*0d1ba665SWarner Losh **/
17*0d1ba665SWarner Losh 
18*0d1ba665SWarner Losh #ifndef __DEBUG_PORT_H__
19*0d1ba665SWarner Losh #define __DEBUG_PORT_H__
20*0d1ba665SWarner Losh 
21*0d1ba665SWarner Losh 
22*0d1ba665SWarner Losh ///
23*0d1ba665SWarner Losh /// DebugPortIo protocol {EBA4E8D2-3858-41EC-A281-2647BA9660D0}
24*0d1ba665SWarner Losh ///
25*0d1ba665SWarner Losh #define EFI_DEBUGPORT_PROTOCOL_GUID \
26*0d1ba665SWarner Losh   { \
27*0d1ba665SWarner Losh     0xEBA4E8D2, 0x3858, 0x41EC, {0xA2, 0x81, 0x26, 0x47, 0xBA, 0x96, 0x60, 0xD0 } \
28*0d1ba665SWarner Losh   }
29*0d1ba665SWarner Losh 
30*0d1ba665SWarner Losh extern EFI_GUID gEfiDebugPortProtocolGuid;
31*0d1ba665SWarner Losh 
32*0d1ba665SWarner Losh typedef struct _EFI_DEBUGPORT_PROTOCOL EFI_DEBUGPORT_PROTOCOL;
33*0d1ba665SWarner Losh 
34*0d1ba665SWarner Losh //
35*0d1ba665SWarner Losh // DebugPort member functions
36*0d1ba665SWarner Losh //
37*0d1ba665SWarner Losh 
38*0d1ba665SWarner Losh /**
39*0d1ba665SWarner Losh   Resets the debugport.
40*0d1ba665SWarner Losh 
41*0d1ba665SWarner Losh   @param  This                  A pointer to the EFI_DEBUGPORT_PROTOCOL instance.
42*0d1ba665SWarner Losh 
43*0d1ba665SWarner Losh   @retval EFI_SUCCESS           The debugport device was reset and is in usable state.
44*0d1ba665SWarner Losh   @retval EFI_DEVICE_ERROR      The debugport device could not be reset and is unusable.
45*0d1ba665SWarner Losh 
46*0d1ba665SWarner Losh **/
47*0d1ba665SWarner Losh typedef
48*0d1ba665SWarner Losh EFI_STATUS
49*0d1ba665SWarner Losh (EFIAPI *EFI_DEBUGPORT_RESET)(
50*0d1ba665SWarner Losh   IN EFI_DEBUGPORT_PROTOCOL               *This
51*0d1ba665SWarner Losh   );
52*0d1ba665SWarner Losh 
53*0d1ba665SWarner Losh /**
54*0d1ba665SWarner Losh   Writes data to the debugport.
55*0d1ba665SWarner Losh 
56*0d1ba665SWarner Losh   @param  This                  A pointer to the EFI_DEBUGPORT_PROTOCOL instance.
57*0d1ba665SWarner Losh   @param  Timeout               The number of microseconds to wait before timing out a write operation.
58*0d1ba665SWarner Losh   @param  BufferSize            On input, the requested number of bytes of data to write. On output, the
59*0d1ba665SWarner Losh                                 number of bytes of data actually written.
60*0d1ba665SWarner Losh   @param  Buffer                A pointer to a buffer containing the data to write.
61*0d1ba665SWarner Losh 
62*0d1ba665SWarner Losh   @retval EFI_SUCCESS           The data was written.
63*0d1ba665SWarner Losh   @retval EFI_DEVICE_ERROR      The device reported an error.
64*0d1ba665SWarner Losh   @retval EFI_TIMEOUT           The data write was stopped due to a timeout.
65*0d1ba665SWarner Losh 
66*0d1ba665SWarner Losh **/
67*0d1ba665SWarner Losh typedef
68*0d1ba665SWarner Losh EFI_STATUS
69*0d1ba665SWarner Losh (EFIAPI *EFI_DEBUGPORT_WRITE)(
70*0d1ba665SWarner Losh   IN EFI_DEBUGPORT_PROTOCOL               *This,
71*0d1ba665SWarner Losh   IN UINT32                               Timeout,
72*0d1ba665SWarner Losh   IN OUT UINTN                            *BufferSize,
73*0d1ba665SWarner Losh   IN VOID                                 *Buffer
74*0d1ba665SWarner Losh   );
75*0d1ba665SWarner Losh 
76*0d1ba665SWarner Losh /**
77*0d1ba665SWarner Losh   Reads data from the debugport.
78*0d1ba665SWarner Losh 
79*0d1ba665SWarner Losh   @param  This                  A pointer to the EFI_DEBUGPORT_PROTOCOL instance.
80*0d1ba665SWarner Losh   @param  Timeout               The number of microseconds to wait before timing out a read operation.
81*0d1ba665SWarner Losh   @param  BufferSize            On input, the requested number of bytes of data to read. On output, the
82*0d1ba665SWarner Losh                                 number of bytes of data actually number of bytes
83*0d1ba665SWarner Losh                                 of data read and returned in Buffer.
84*0d1ba665SWarner Losh   @param  Buffer                A pointer to a buffer into which the data read will be saved.
85*0d1ba665SWarner Losh 
86*0d1ba665SWarner Losh   @retval EFI_SUCCESS           The data was read.
87*0d1ba665SWarner Losh   @retval EFI_DEVICE_ERROR      The device reported an error.
88*0d1ba665SWarner Losh   @retval EFI_TIMEOUT           The operation was stopped due to a timeout or overrun.
89*0d1ba665SWarner Losh 
90*0d1ba665SWarner Losh **/
91*0d1ba665SWarner Losh typedef
92*0d1ba665SWarner Losh EFI_STATUS
93*0d1ba665SWarner Losh (EFIAPI *EFI_DEBUGPORT_READ)(
94*0d1ba665SWarner Losh   IN EFI_DEBUGPORT_PROTOCOL               *This,
95*0d1ba665SWarner Losh   IN UINT32                               Timeout,
96*0d1ba665SWarner Losh   IN OUT UINTN                            *BufferSize,
97*0d1ba665SWarner Losh   OUT VOID                                *Buffer
98*0d1ba665SWarner Losh   );
99*0d1ba665SWarner Losh 
100*0d1ba665SWarner Losh /**
101*0d1ba665SWarner Losh   Checks to see if any data is available to be read from the debugport device.
102*0d1ba665SWarner Losh 
103*0d1ba665SWarner Losh   @param  This                  A pointer to the EFI_DEBUGPORT_PROTOCOL instance.
104*0d1ba665SWarner Losh 
105*0d1ba665SWarner Losh   @retval EFI_SUCCESS           At least one byte of data is available to be read.
106*0d1ba665SWarner Losh   @retval EFI_DEVICE_ERROR      The debugport device is not functioning correctly.
107*0d1ba665SWarner Losh   @retval EFI_NOT_READY         No data is available to be read.
108*0d1ba665SWarner Losh 
109*0d1ba665SWarner Losh **/
110*0d1ba665SWarner Losh typedef
111*0d1ba665SWarner Losh EFI_STATUS
112*0d1ba665SWarner Losh (EFIAPI *EFI_DEBUGPORT_POLL)(
113*0d1ba665SWarner Losh   IN EFI_DEBUGPORT_PROTOCOL               *This
114*0d1ba665SWarner Losh   );
115*0d1ba665SWarner Losh 
116*0d1ba665SWarner Losh ///
117*0d1ba665SWarner Losh /// This protocol provides the communication link between the debug agent and the remote host.
118*0d1ba665SWarner Losh ///
119*0d1ba665SWarner Losh struct _EFI_DEBUGPORT_PROTOCOL {
120*0d1ba665SWarner Losh   EFI_DEBUGPORT_RESET Reset;
121*0d1ba665SWarner Losh   EFI_DEBUGPORT_WRITE Write;
122*0d1ba665SWarner Losh   EFI_DEBUGPORT_READ  Read;
123*0d1ba665SWarner Losh   EFI_DEBUGPORT_POLL  Poll;
124*0d1ba665SWarner Losh };
125*0d1ba665SWarner Losh 
126*0d1ba665SWarner Losh //
127*0d1ba665SWarner Losh // DEBUGPORT variable definitions...
128*0d1ba665SWarner Losh //
129*0d1ba665SWarner Losh #define EFI_DEBUGPORT_VARIABLE_NAME L"DEBUGPORT"
130*0d1ba665SWarner Losh #define EFI_DEBUGPORT_VARIABLE_GUID EFI_DEBUGPORT_PROTOCOL_GUID
131*0d1ba665SWarner Losh 
132*0d1ba665SWarner Losh extern EFI_GUID  gEfiDebugPortVariableGuid;
133*0d1ba665SWarner Losh 
134*0d1ba665SWarner Losh //
135*0d1ba665SWarner Losh // DebugPort device path definitions...
136*0d1ba665SWarner Losh //
137*0d1ba665SWarner Losh #define DEVICE_PATH_MESSAGING_DEBUGPORT EFI_DEBUGPORT_PROTOCOL_GUID
138*0d1ba665SWarner Losh 
139*0d1ba665SWarner Losh extern EFI_GUID  gEfiDebugPortDevicePathGuid;
140*0d1ba665SWarner Losh 
141*0d1ba665SWarner Losh typedef struct {
142*0d1ba665SWarner Losh   EFI_DEVICE_PATH_PROTOCOL  Header;
143*0d1ba665SWarner Losh   EFI_GUID                  Guid;
144*0d1ba665SWarner Losh } DEBUGPORT_DEVICE_PATH;
145*0d1ba665SWarner Losh 
146*0d1ba665SWarner Losh #endif
147