1 /** @file 2 I/O FIFO routines 3 4 Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved.<BR> 5 6 This program and the accompanying materials are licensed and made available 7 under the terms and conditions of the BSD License which accompanies this 8 distribution. The full text of the license may be found at 9 http://opensource.org/licenses/bsd-license.php 10 11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 13 14 **/ 15 16 #ifndef _IO_FIFO_H_INCLUDED_ 17 #define _IO_FIFO_H_INCLUDED_ 18 19 /** 20 Reads an 8-bit I/O port fifo into a block of memory. 21 22 Reads the 8-bit I/O fifo port specified by Port. 23 24 The port is read Count times, and the read data is 25 stored in the provided Buffer. 26 27 This function must guarantee that all I/O read and write operations are 28 serialized. 29 30 If 8-bit I/O port operations are not supported, then ASSERT(). 31 32 @param Port The I/O port to read. 33 @param Count The number of times to read I/O port. 34 @param Buffer The buffer to store the read data into. 35 36 **/ 37 VOID 38 EFIAPI 39 IoReadFifo8 ( 40 IN UINTN Port, 41 IN UINTN Count, 42 OUT VOID *Buffer 43 ); 44 45 /** 46 Reads a 16-bit I/O port fifo into a block of memory. 47 48 Reads the 16-bit I/O fifo port specified by Port. 49 50 The port is read Count times, and the read data is 51 stored in the provided Buffer. 52 53 This function must guarantee that all I/O read and write operations are 54 serialized. 55 56 If 16-bit I/O port operations are not supported, then ASSERT(). 57 58 @param Port The I/O port to read. 59 @param Count The number of times to read I/O port. 60 @param Buffer The buffer to store the read data into. 61 62 **/ 63 VOID 64 EFIAPI 65 IoReadFifo16 ( 66 IN UINTN Port, 67 IN UINTN Count, 68 OUT VOID *Buffer 69 ); 70 71 /** 72 Reads a 32-bit I/O port fifo into a block of memory. 73 74 Reads the 32-bit I/O fifo port specified by Port. 75 76 The port is read Count times, and the read data is 77 stored in the provided Buffer. 78 79 This function must guarantee that all I/O read and write operations are 80 serialized. 81 82 If 32-bit I/O port operations are not supported, then ASSERT(). 83 84 @param Port The I/O port to read. 85 @param Count The number of times to read I/O port. 86 @param Buffer The buffer to store the read data into. 87 88 **/ 89 VOID 90 EFIAPI 91 IoReadFifo32 ( 92 IN UINTN Port, 93 IN UINTN Count, 94 OUT VOID *Buffer 95 ); 96 97 /** 98 Writes a block of memory into an 8-bit I/O port fifo. 99 100 Writes the 8-bit I/O fifo port specified by Port. 101 102 The port is written Count times, and the write data is 103 retrieved from the provided Buffer. 104 105 This function must guarantee that all I/O write and write operations are 106 serialized. 107 108 If 8-bit I/O port operations are not supported, then ASSERT(). 109 110 @param Port The I/O port to write. 111 @param Count The number of times to write I/O port. 112 @param Buffer The buffer to store the write data into. 113 114 **/ 115 VOID 116 EFIAPI 117 IoWriteFifo8 ( 118 IN UINTN Port, 119 IN UINTN Count, 120 OUT VOID *Buffer 121 ); 122 123 /** 124 Writes a block of memory into a 16-bit I/O port fifo. 125 126 Writes the 16-bit I/O fifo port specified by Port. 127 128 The port is written Count times, and the write data is 129 retrieved from the provided Buffer. 130 131 This function must guarantee that all I/O write and write operations are 132 serialized. 133 134 If 16-bit I/O port operations are not supported, then ASSERT(). 135 136 @param Port The I/O port to write. 137 @param Count The number of times to write I/O port. 138 @param Buffer The buffer to store the write data into. 139 140 **/ 141 VOID 142 EFIAPI 143 IoWriteFifo16 ( 144 IN UINTN Port, 145 IN UINTN Count, 146 OUT VOID *Buffer 147 ); 148 149 /** 150 Writes a block of memory into a 32-bit I/O port fifo. 151 152 Writes the 32-bit I/O fifo port specified by Port. 153 154 The port is written Count times, and the write data is 155 retrieved from the provided Buffer. 156 157 This function must guarantee that all I/O write and write operations are 158 serialized. 159 160 If 32-bit I/O port operations are not supported, then ASSERT(). 161 162 @param Port The I/O port to write. 163 @param Count The number of times to write I/O port. 164 @param Buffer The buffer to store the write data into. 165 166 **/ 167 VOID 168 EFIAPI 169 IoWriteFifo32 ( 170 IN UINTN Port, 171 IN UINTN Count, 172 OUT VOID *Buffer 173 ); 174 175 #endif 176 177