Subversion Repositories HelenOS

Rev

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

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