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