#ifndef __INTERNAL_SMBUS_LIB_H\r
#define __INTERNAL_SMBUS_LIB_H\r
\r
-#define SMBUS_LIB_PEC(SmBusAddress) ((BOOLEAN) ((SmBusAddress) & 0x01))\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) & 0x1f)\r
-#define SMBUS_LIB_RESEARVED(SmBusAddress) (((SmBusAddress) >> 21))\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) & 0x1f)\r
+#define SMBUS_LIB_PEC(SmBusAddress) ((BOOLEAN) (((SmBusAddress) & SMBUS_LIB_PEC_BIT) != 0))\r
+#define SMBUS_LIB_RESEARVED(SmBusAddress) ((SmBusAddress) & ~(((1 << 21) - 2) | SMBUS_LIB_PEC_BIT))\r
\r
//\r
// Declaration for internal functions\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
+ @return The actual number of bytes that are executed for this operation.\r
\r
**/\r
UINTN\r
IN EFI_SMBUS_OPERATION SmbusOperation,\r
IN UINTN SmBusAddress,\r
IN UINTN Length,\r
- IN VOID *Buffer,\r
+ IN OUT VOID *Buffer,\r
OUT RETURN_STATUS *Status OPTIONAL\r
);\r
\r
-/**\r
- Assigns an SMBUS slave addresses.\r
-\r
- Assigns the SMBUS device specified by Uuid the slave address specified by SmBusAddress.\r
- The status of the executed command is returned.\r
- If Command in SmBusAddress is not zero, then ASSERT().\r
- If Length in SmBusAddress is not zero, then ASSERT().\r
- If PEC in SmBusAddress is set, then ASSERT().\r
- If any reserved bits of SmBusAddress are set, then ASSERT().\r
-\r
- @param SmBusAddress Address that encodes the SMBUS Slave Address,\r
- SMBUS Command, SMBUS Data Length, and PEC.\r
- @param Uuid Pointer to the UUID of the device to assign a slave address.\r
- It will assign to all SMBUS slave devices if it is NULL.\r
-\r
- @retval RETURN_SUCCESS The SMBUS command was executed.\r
- @retval RETURN_TIMEOUT A timeout occurred while executing the SMBUS command.\r
- @retval RETURN_DEVICE_ERROR The request was not completed because a failure reflected\r
- in the Host Status Register bit.\r
- Device errors are a result of a transaction collision, illegal command field,\r
- unclaimed cycle (host initiated), or bus errors (collisions).\r
-\r
-**/\r
-RETURN_STATUS\r
-InternalSmBusArpDevice (\r
- IN UINTN SmBusAddress,\r
- IN CONST GUID *Uuid OPTIONAL \r
- );\r
-\r
-/**\r
- Retrieves the mapping of all the SMBus devices.\r
-\r
- The GetArpMap() function returns the mapping of all the SMBus devices \r
- that are enumerated by the SMBus host driver. \r
- \r
- @param Length Size of the buffer that contains the SMBus device map.\r
- @param SmbusDeviceMap The pointer to the device map as enumerated by the SMBus controller driver.\r
-\r
- @retval RETURN_SUCCESS The SMBUS command was executed.\r
- @retval RETURN_TIMEOUT A timeout occurred while executing the SMBUS command.\r
- @retval RETURN_DEVICE_ERROR The request was not completed because a failure reflected\r
- in the Host Status Register bit.\r
- Device errors are a result of a transaction collision, illegal command field,\r
- unclaimed cycle (host initiated), or bus errors (collisions).\r
-\r
-**/\r
-RETURN_STATUS\r
-InternalGetArpMap (\r
- OUT UINTN *Length,\r
- OUT EFI_SMBUS_DEVICE_MAP **SmbusDeviceMap\r
- );\r
-\r
#endif\r