Home | History | Annotate | Download | only in I2CLibPei
      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