1 /** @file
2   Functions for access I2C MMIO register.
3 
4   Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
5   This program and the accompanying materials
6   are licensed and made available under the terms and conditions of the BSD License
7   which accompanies this distribution.  The full text of the license may be found at
8   http://opensource.org/licenses/bsd-license.php.
9 
10   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12 
13 **/
14 
15 #ifndef __I2C_IOLIB_PEI__
16 
17 #define __I2C_IOLIB_PEI__
18 #include <PiPei.h>
19 
20 
21 /**
22   Reads an 8-bit MMIO register.
23 
24   Reads the 8-bit MMIO register specified by Address. The 8-bit read value is
25   returned. This function must guarantee that all MMIO read and write
26   operations are serialized.
27 
28   If 8-bit MMIO register operations are not supported, then ASSERT().
29 
30   @param  Address The MMIO register to read.
31 
32   @return The value read.
33 
34 **/
35 
36 UINT8
37 EFIAPI
38 I2CLibPeiMmioRead8 (
39   IN      UINTN                     Address
40   );
41 
42 
43 /**
44   Reads a 16-bit MMIO register.
45 
46   Reads the 16-bit MMIO register specified by Address. The 16-bit read value is
47   returned. This function must guarantee that all MMIO read and write
48   operations are serialized.
49 
50   If 16-bit MMIO register operations are not supported, then ASSERT().
51   If Address is not aligned on a 16-bit boundary, then ASSERT().
52 
53   @param  Address The MMIO register to read.
54 
55   @return The value read.
56 
57 **/
58 UINT16
59 EFIAPI
60 I2CLibPeiMmioRead16 (
61   IN      UINTN                     Address
62   );
63 
64 
65 /**
66   Writes a 16-bit MMIO register.
67 
68   Writes the 16-bit MMIO register specified by Address with the value specified
69   by Value and returns Value. This function must guarantee that all MMIO read
70   and write operations are serialized.
71 
72   If 16-bit MMIO register operations are not supported, then ASSERT().
73   If Address is not aligned on a 16-bit boundary, then ASSERT().
74 
75   @param  Address The MMIO register to write.
76   @param  Value   The value to write to the MMIO register.
77 
78   @return Value.
79 
80 **/
81 UINT16
82 EFIAPI
83 I2CLibPeiMmioWrite16 (
84   IN      UINTN                     Address,
85   IN      UINT16                    Value
86   );
87 
88 
89 /**
90   Reads a 32-bit MMIO register.
91 
92   Reads the 32-bit MMIO register specified by Address. The 32-bit read value is
93   returned. This function must guarantee that all MMIO read and write
94   operations are serialized.
95 
96   If 32-bit MMIO register operations are not supported, then ASSERT().
97   If Address is not aligned on a 32-bit boundary, then ASSERT().
98 
99   @param  Address The MMIO register to read.
100 
101   @return The value read.
102 
103 **/
104 UINT32
105 EFIAPI
106 I2CLibPeiMmioRead32 (
107   IN      UINTN                     Address
108   );
109 
110 
111 /**
112   Writes a 32-bit MMIO register.
113 
114   Writes the 32-bit MMIO register specified by Address with the value specified
115   by Value and returns Value. This function must guarantee that all MMIO read
116   and write operations are serialized.
117 
118   If 32-bit MMIO register operations are not supported, then ASSERT().
119   If Address is not aligned on a 32-bit boundary, then ASSERT().
120 
121   @param  Address The MMIO register to write.
122   @param  Value   The value to write to the MMIO register.
123 
124   @return Value.
125 
126 **/
127 UINT32
128 EFIAPI
129 I2CLibPeiMmioWrite32 (
130   IN      UINTN                     Address,
131   IN      UINT32                    Value
132   );
133 
134 
135 /**
136   OR a 32-bit MMIO register.
137 
138   OR the 32-bit MMIO register specified by Address with the value specified
139   by Value and returns Value. This function must guarantee that all MMIO read
140   and write operations are serialized.
141 
142   If 32-bit MMIO register operations are not supported, then ASSERT().
143   If Address is not aligned on a 32-bit boundary, then ASSERT().
144 
145   @param  Address The MMIO register to write OR.
146   @param  Value   The value to OR to the MMIO register.
147 
148   @return Value.
149 
150 **/
151 UINT32
152 EFIAPI
153 I2CLibPeiMmioOr32 (
154   IN      UINTN                     Address,
155   IN      UINT32                    OrData
156   );
157 
158 
159 #endif
160