Checked in the Protocols introduced in UEFI/PI.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2674 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
311
MdePkg/Include/Protocol/SmbusHc.h
Normal file
311
MdePkg/Include/Protocol/SmbusHc.h
Normal file
@@ -0,0 +1,311 @@
|
||||
/** @file
|
||||
The file provides basic SMBus host controller management
|
||||
and basic data transactions over the SMBus.
|
||||
|
||||
Copyright (c) 2006 - 2007, Intel Corporation
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
Module Name: SmbusHc.h
|
||||
|
||||
@par Revision Reference: PI
|
||||
Version 1.00.
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __SMBUS_HC_H__
|
||||
#define __SMBUS_HC_H__
|
||||
|
||||
#include <Ppi/Smbus2.h>
|
||||
|
||||
#define EFI_SMBUS_HC_PROTOCOL_GUID \
|
||||
{0xe49d33ed, 0x513d, 0x4634, { 0xb6, 0x98, 0x6f, 0x55, 0xaa, 0x75, 0x1c, 0x1b} }
|
||||
|
||||
typedef struct _EFI_SMBUS_HC_PROTOCOL EFI_SMBUS_HC_PROTOCOL;
|
||||
|
||||
/**
|
||||
|
||||
The Execute() function provides a standard way to execute an
|
||||
operation as defined in the System Management Bus (SMBus)
|
||||
Specification. The resulting transaction will be either that
|
||||
the SMBus slave devices accept this transaction or that this
|
||||
function returns with error. Status Codes Returned
|
||||
|
||||
@param This A pointer to the EFI_SMBUS_HC_PROTOCOL instance.
|
||||
SlaveAddress The SMBus slave address of the device
|
||||
with which to communicate. Type
|
||||
EFI_SMBUS_DEVICE_ADDRESS is defined in
|
||||
EFI_PEI_SMBUS_PPI.Execute() in the Platform
|
||||
Initialization SMBus PPI Specification.
|
||||
|
||||
@param Command This command is transmitted by the SMBus host
|
||||
controller to the SMBus slave device and the
|
||||
interpretation is SMBus slave device specific.
|
||||
It can mean the offset to a list of functions
|
||||
inside an SMBus slave device. Not all
|
||||
operations or slave devices support this
|
||||
command's registers. Type
|
||||
EFI_SMBUS_DEVICE_COMMAND is defined in
|
||||
EFI_PEI_SMBUS_PPI.Execute() in the Platform
|
||||
Initialization SMBus PPI Specification.
|
||||
Operation Signifies which particular SMBus
|
||||
hardware protocol instance that it will use to
|
||||
execute the SMBus transactions. This SMBus
|
||||
hardware protocol is defined by the SMBus
|
||||
Specification and is not related to PI
|
||||
Architecture. Type EFI_SMBUS_OPERATION is
|
||||
defined in EFI_PEI_SMBUS_PPI.Execute() in the
|
||||
Platform Initialization SMBus PPI
|
||||
Specification.
|
||||
|
||||
@param PecCheck Defines if Packet Error Code (PEC) checking
|
||||
is required for this operation. SMBus Host
|
||||
Controller Code Definitions Version 1.0
|
||||
August 21, 2006 13 Length Signifies the
|
||||
number of bytes that this operation will do.
|
||||
The maximum number of bytes can be revision
|
||||
specific and operation specific. This field
|
||||
will contain the actual number of bytes that
|
||||
are executed for this operation. Not all
|
||||
operations require this argument.
|
||||
|
||||
@param Buffer Contains the value of data to execute to the
|
||||
SMBus slave device. Not all operations require
|
||||
this argument. The length of this buffer is
|
||||
identified by Length.
|
||||
|
||||
|
||||
@retval EFI_SUCCESS The last data that was returned from the
|
||||
access matched the poll exit criteria.
|
||||
|
||||
@retval EFI_CRC_ERROR Checksum is not correct (PEC is
|
||||
incorrect).
|
||||
|
||||
@retval EFI_TIMEOUT Timeout expired before the operation was
|
||||
completed. Timeout is determined by the
|
||||
SMBus host controller device.
|
||||
|
||||
@retval EFI_OUT_OF_RESOURCES The request could not be
|
||||
completed due to a lack of
|
||||
resources.
|
||||
|
||||
@retval EFI_DEVICE_ERROR The request was not completed
|
||||
because a failure that was reflected
|
||||
in the Host Status Register bit.
|
||||
Device errors are a result of a
|
||||
transaction collision, illegal
|
||||
command field, unclaimed cycle (host
|
||||
initiated), or bus errors
|
||||
(collisions).
|
||||
|
||||
@retval EFI_INVALID_PARAMETER Operation is not defined in
|
||||
EFI_SMBUS_OPERATION.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER Length/Buffer is NULL for
|
||||
operations except for
|
||||
EfiSmbusQuickRead and
|
||||
EfiSmbusQuickWrite. Length is
|
||||
outside the range of valid
|
||||
values.
|
||||
|
||||
@retval EFI_UNSUPPORTED The SMBus operation or PEC is not
|
||||
supported.
|
||||
|
||||
@retval EFI_BUFFER_TOO_SMALL Buffer is not sufficient for
|
||||
this operation.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_SMBUS_HC_EXECUTE_OPERATION) (
|
||||
IN CONST EFI_SMBUS_HC_PROTOCOL *This,
|
||||
IN CONST EFI_SMBUS_DEVICE_ADDRESS SlaveAddress,
|
||||
IN CONST EFI_SMBUS_DEVICE_COMMAND Command,
|
||||
IN CONST EFI_SMBUS_OPERATION Operation,
|
||||
IN CONST BOOLEAN PecCheck,
|
||||
IN OUT UINTN *Length,
|
||||
IN OUT VOID *Buffer
|
||||
);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
||||
The ArpDevice() function provides a standard way for a device driver to enumerate the entire
|
||||
SMBus or specific devices on the bus.
|
||||
|
||||
|
||||
@param This A pointer to the EFI_SMBUS_HC_PROTOCOL instance.
|
||||
|
||||
@param ArpAll A Boolean expression that indicates if the
|
||||
host drivers need to enumerate all the devices
|
||||
or enumerate only the device that is
|
||||
identified by SmbusUdid. If ArpAll is TRUE,
|
||||
SmbusUdid and SlaveAddress are optional. If
|
||||
ArpAll is FALSE, ArpDevice will enumerate
|
||||
SmbusUdid and the address will be at
|
||||
SlaveAddress.
|
||||
|
||||
@param SmbusUdid The Unique Device Identifier (UDID) that is
|
||||
associated with this device. Type
|
||||
EFI_SMBUS_UDID is defined in
|
||||
EFI_PEI_SMBUS_PPI.ArpDevice() in the
|
||||
Platform Initialization SMBus PPI
|
||||
Specification.
|
||||
|
||||
@param SlaveAddress The SMBus slave address that is
|
||||
associated with an SMBus UDID.
|
||||
|
||||
|
||||
|
||||
@retval EFI_SUCCESS The last data that was returned from the
|
||||
access matched the poll exit criteria.
|
||||
|
||||
@retval EFI_CRC_ERROR Checksum is not correct (PEC is
|
||||
incorrect).
|
||||
|
||||
@retval EFI_TIMEOUT Timeout expired before the operation was
|
||||
completed. Timeout is determined by the
|
||||
SMBus host controller device.
|
||||
|
||||
@retval EFI_OUT_OF_RESOURCES The request could not be
|
||||
completed due to a lack of
|
||||
resources.
|
||||
|
||||
@retval EFI_DEVICE_ERROR The request was not completed
|
||||
because a failure was reflected in
|
||||
the Host Status Register bit. Device
|
||||
Errors are a result of a transaction
|
||||
collision, illegal command field,
|
||||
unclaimed cycle (host initiated), or
|
||||
bus errors (collisions).
|
||||
|
||||
@retval EFI_UNSUPPORTED ArpDevice, GetArpMap, and Notify are
|
||||
not implemented by this driver.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_SMBUS_HC_PROTOCOL_ARP_DEVICE) (
|
||||
IN CONST EFI_SMBUS_HC_PROTOCOL *This,
|
||||
IN CONST BOOLEAN ArpAll,
|
||||
IN CONST EFI_SMBUS_UDID *SmbusUdid, OPTIONAL
|
||||
IN OUT EFI_SMBUS_DEVICE_ADDRESS *SlaveAddress OPTIONAL
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
The GetArpMap() function returns the mapping of all the SMBus devices that were enumerated
|
||||
by the SMBus host driver.
|
||||
|
||||
@param This A pointer to the EFI_SMBUS_HC_PROTOCOL instance.
|
||||
|
||||
@param Length Size of the buffer that contains the SMBus
|
||||
device map.
|
||||
|
||||
@param SmbusDeviceMap The pointer to the device map as
|
||||
enumerated by the SMBus controller
|
||||
driver.
|
||||
|
||||
@retval EFI_SUCCESS The SMBus returned the current device
|
||||
map.
|
||||
|
||||
@retval EFI_UNSUPPORTED ArpDevice, GetArpMap, and Notify are
|
||||
not implemented by this driver.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_SMBUS_HC_PROTOCOL_GET_ARP_MAP) (
|
||||
IN CONST EFI_SMBUS_HC_PROTOCOL *This,
|
||||
IN OUT UINTN *Length,
|
||||
IN OUT EFI_SMBUS_DEVICE_MAP **SmbusDeviceMap
|
||||
);
|
||||
|
||||
|
||||
|
||||
//
|
||||
// EFI_SMBUS_NOTIFY_FUNCTION
|
||||
//
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_SMBUS_NOTIFY_FUNCTION) (
|
||||
IN CONST EFI_SMBUS_DEVICE_ADDRESS SlaveAddress,
|
||||
IN CONST UINTN Data
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
|
||||
The Notify() function registers all the callback functions to
|
||||
allow the bus driver to call these functions when the
|
||||
SlaveAddress/Data pair happens.
|
||||
|
||||
@param This A pointer to the EFI_SMBUS_HC_PROTOCOL instance.
|
||||
|
||||
@param SlaveAddress Address that the host controller detects
|
||||
as sending a message and calls all the registered function.
|
||||
|
||||
@param Data Data that the host controller detects as sending
|
||||
message and calls all the registered function.
|
||||
|
||||
|
||||
@param NotifyFunction The function to call when the bus
|
||||
driver detects the SlaveAddress and
|
||||
Data pair.
|
||||
|
||||
@retval EFI_SUCCESS NotifyFunction was registered.
|
||||
|
||||
@retval EFI_UNSUPPORTED ArpDevice, GetArpMap, and Notify are
|
||||
not implemented by this driver.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_SMBUS_HC_PROTOCOL_NOTIFY) (
|
||||
IN CONST EFI_SMBUS_HC_PROTOCOL *This,
|
||||
IN CONST EFI_SMBUS_DEVICE_ADDRESS SlaveAddress,
|
||||
IN CONST UINTN Data,
|
||||
IN CONST EFI_SMBUS_NOTIFY_FUNCTION NotifyFunction
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
The EFI_SMBUS_HC_PROTOCOL provides SMBus host controller management and basic data
|
||||
transactions over SMBus. There is one EFI_SMBUS_HC_PROTOCOL instance for each SMBus
|
||||
host controller.
|
||||
|
||||
@param Execute Executes the SMBus operation to an SMBus slave
|
||||
device. See the Execute() function description.
|
||||
|
||||
@param ArpDevice Allows an SMBus 2.0 device(s) to be Address
|
||||
Resolution Protocol (ARP).
|
||||
|
||||
@param GetArpMap Allows a driver to retrieve the address that
|
||||
was allocated by the SMBus host controller
|
||||
during enumeration/ARP. See the GetArpMap()
|
||||
function description.
|
||||
|
||||
@param Notify Allows a driver to register for a callback
|
||||
to the SMBus host controller driver when the
|
||||
bus issues a notification to the bus
|
||||
controller driver. See the Notify() function
|
||||
description.
|
||||
**/
|
||||
struct _EFI_SMBUS_HC_PROTOCOL {
|
||||
EFI_SMBUS_HC_EXECUTE_OPERATION Execute;
|
||||
EFI_SMBUS_HC_PROTOCOL_ARP_DEVICE ArpDevice;
|
||||
EFI_SMBUS_HC_PROTOCOL_GET_ARP_MAP GetArpMap;
|
||||
EFI_SMBUS_HC_PROTOCOL_NOTIFY Notify;
|
||||
};
|
||||
|
||||
|
||||
extern EFI_GUID gEfiSmbusHcProtocolGuid;
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user