--- /dev/null
+/** @file\r
+Internal header file for Smbus library.\r
+\r
+Copyright (c) 2006, Intel Corporation<BR>\r
+All rights reserved. This program and the accompanying materials \r
+are licensed and made available under the terms and conditions of the BSD License \r
+which accompanies this distribution. The full text of the license may be found at \r
+http://opensource.org/licenses/bsd-license.php \r
+ \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+\r
+**/\r
+\r
+#ifndef __INTERNAL_SMBUS_LIB_H\r
+#define __INTERNAL_SMBUS_LIB_H\r
+\r
+//\r
+// The package level header files this module uses\r
+//\r
+#include <PiPei.h>\r
+#include <FrameworkPei.h>\r
+//\r
+// The protocols, PPI and GUID defintions for this module\r
+//\r
+#include <Ppi/Smbus.h>\r
+//\r
+// The Library classes this module consumes\r
+//\r
+#include <Library/SmbusLib.h>\r
+#include <Library/DebugLib.h>\r
+#include <Library/PeiServicesTablePointerLib.h>\r
+#include <Library/BaseMemoryLib.h>\r
+\r
+#define SMBUS_LIB_SLAVE_ADDRESS(SmBusAddress) (((SmBusAddress) >> 1) & 0x7f)\r
+#define SMBUS_LIB_COMMAND(SmBusAddress) (((SmBusAddress) >> 8) & 0xff)\r
+#define SMBUS_LIB_LENGTH(SmBusAddress) (((SmBusAddress) >> 16) & 0x3f)\r
+#define SMBUS_LIB_PEC(SmBusAddress) ((BOOLEAN) (((SmBusAddress) & SMBUS_LIB_PEC_BIT) != 0))\r
+#define SMBUS_LIB_RESEARVED(SmBusAddress) ((SmBusAddress) & ~(((1 << 22) - 2) | SMBUS_LIB_PEC_BIT))\r
+\r
+//\r
+// Declaration for internal functions\r
+//\r
+\r
+/**\r
+ Gets Smbus PPIs.\r
+\r
+ This internal function retrieves Smbus PPI from PPI database.\r
+\r
+ @param PeiServices An indirect pointer to the EFI_PEI_SERVICES published by the PEI Foundation.\r
+\r
+ @return The pointer to Smbus PPI.\r
+\r
+**/\r
+EFI_PEI_SMBUS_PPI *\r
+InternalGetSmbusPpi (\r
+ EFI_PEI_SERVICES **PeiServices\r
+ );\r
+\r
+/**\r
+ Executes an SMBus operation to an SMBus controller. \r
+\r
+ This function provides a standard way to execute Smbus script\r
+ as defined in the SmBus Specification. The data can either be of\r
+ the Length byte, word, or a block of data.\r
+\r
+ @param SmbusOperation Signifies which particular SMBus hardware protocol instance that it will use to\r
+ execute the SMBus transactions.\r
+ @param SmBusAddress Address that encodes the SMBUS Slave Address,\r
+ SMBUS Command, SMBUS Data Length, and PEC.\r
+ @param Length Signifies the number of bytes that this operation will do. The maximum number of\r
+ bytes can be revision specific and operation specific.\r
+ @param Buffer Contains the value of data to execute to the SMBus slave device. Not all operations\r
+ require this argument. The length of this buffer is identified by Length.\r
+ @param Status Return status for the executed command.\r
+ This is an optional parameter and may be NULL.\r
+\r
+ @return The actual number of bytes that are executed for this operation.\r
+\r
+**/\r
+UINTN\r
+InternalSmBusExec (\r
+ IN EFI_SMBUS_OPERATION SmbusOperation,\r
+ IN UINTN SmBusAddress,\r
+ IN UINTN Length,\r
+ IN OUT VOID *Buffer,\r
+ OUT RETURN_STATUS *Status OPTIONAL\r
+ );\r
+\r
+#endif\r