Implementation of SmBusLib class library for PEI phase.\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
+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
-Module Name: DxeSmbusLib.c\r
\r
**/\r
\r
+\r
#include "InternalSmbusLib.h"\r
\r
+\r
//\r
// Globle varible to cache pointer to Smbus protocol.\r
//\r
-STATIC EFI_SMBUS_HC_PROTOCOL *mSmbus = NULL; \r
+STATIC EFI_SMBUS_HC_PROTOCOL *mSmbus = NULL;\r
\r
/**\r
The constructor function caches the pointer to Smbus protocol.\r
- \r
+\r
The constructor function locates Smbus protocol from protocol database.\r
- It will ASSERT() if that operation fails and it will always return EFI_SUCCESS. \r
+ It will ASSERT() if that operation fails and it will always return EFI_SUCCESS.\r
\r
@param ImageHandle The firmware allocated handle for the EFI image.\r
@param SystemTable A pointer to the EFI System Table.\r
- \r
+\r
@retval EFI_SUCCESS The constructor always returns EFI_SUCCESS.\r
\r
**/\r
)\r
{\r
EFI_STATUS Status;\r
- \r
- Status = gBS->LocateProtocol (\r
- &gEfiCpuIoProtocolGuid,\r
- NULL,\r
- (VOID**) &mSmbus\r
- );\r
+\r
+ Status = gBS->LocateProtocol (&gEfiSmbusHcProtocolGuid, NULL, (VOID**) &mSmbus);\r
ASSERT_EFI_ERROR (Status);\r
ASSERT (mSmbus != NULL);\r
\r
}\r
\r
/**\r
- Executes an SMBus operation to an SMBus controller. \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
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
SmbusDeviceAddress,\r
SMBUS_LIB_COMMAND (SmBusAddress),\r
SmbusOperation,\r
- SMBUS_LIB_PEC (SmBusAddress), \r
+ SMBUS_LIB_PEC (SmBusAddress),\r
&Length,\r
Buffer\r
);\r
\r
return Length;\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
-\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
- EFI_SMBUS_DEVICE_ADDRESS SmbusDeviceAddress;\r
-\r
- SmbusDeviceAddress.SmbusDeviceAddress = SMBUS_LIB_SLAVE_ADDRESS (SmBusAddress);\r
- return (RETURN_STATUS) mSmbus->ArpDevice (\r
- mSmbus,\r
- (BOOLEAN) (Uuid == NULL),\r
- (EFI_SMBUS_UDID *) Uuid,\r
- &SmbusDeviceAddress\r
- );\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
- return (RETURN_STATUS) mSmbus->GetArpMap (mSmbus, Length, SmbusDeviceMap);\r
-}\r