You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
3.9 KiB
111 lines
3.9 KiB
/** @file
|
|
I2C Device Enumerate Protocol as defined in the PI 1.3 specification.
|
|
|
|
This protocol supports the enumerations of device on the I2C bus.
|
|
|
|
Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
|
|
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.
|
|
|
|
@par Revision Reference:
|
|
This protocol is from PI Version 1.3.
|
|
|
|
**/
|
|
|
|
#ifndef __I2C_ENUMERATE_H__
|
|
#define __I2C_ENUMERATE_H__
|
|
|
|
#include <Pi/PiI2c.h>
|
|
|
|
#define EFI_I2C_ENUMERATE_PROTOCOL_GUID { 0xda8cd7c4, 0x1c00, 0x49e2, { 0x80, 0x3e, 0x52, 0x14, 0xe7, 0x01, 0x89, 0x4c }}
|
|
|
|
typedef struct _EFI_I2C_ENUMERATE_PROTOCOL EFI_I2C_ENUMERATE_PROTOCOL;
|
|
|
|
/**
|
|
Enumerate the I2C devices
|
|
|
|
This function enables the caller to traverse the set of I2C devices
|
|
on an I2C bus.
|
|
|
|
@param[in] This The platform data for the next device on
|
|
the I2C bus was returned successfully.
|
|
@param[in, out] Device Pointer to a buffer containing an
|
|
EFI_I2C_DEVICE structure. Enumeration is
|
|
started by setting the initial EFI_I2C_DEVICE
|
|
structure pointer to NULL. The buffer
|
|
receives an EFI_I2C_DEVICE structure pointer
|
|
to the next I2C device.
|
|
|
|
@retval EFI_SUCCESS The platform data for the next device on
|
|
the I2C bus was returned successfully.
|
|
@retval EFI_INVALID_PARAMETER Device is NULL
|
|
@retval EFI_NO_MAPPING *Device does not point to a valid
|
|
EFI_I2C_DEVICE structure returned in a
|
|
previous call Enumerate().
|
|
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_I2C_ENUMERATE_PROTOCOL_ENUMERATE) (
|
|
IN CONST EFI_I2C_ENUMERATE_PROTOCOL *This,
|
|
IN OUT CONST EFI_I2C_DEVICE **Device
|
|
);
|
|
|
|
/**
|
|
Get the requested I2C bus frequency for a specified bus configuration.
|
|
|
|
This function returns the requested I2C bus clock frequency for the
|
|
I2cBusConfiguration. This routine is provided for diagnostic purposes
|
|
and is meant to be called after calling Enumerate to get the
|
|
I2cBusConfiguration value.
|
|
|
|
@param[in] This Pointer to an EFI_I2C_ENUMERATE_PROTOCOL
|
|
structure.
|
|
@param[in] I2cBusConfiguration I2C bus configuration to access the I2C
|
|
device
|
|
@param[out] *BusClockHertz Pointer to a buffer to receive the I2C
|
|
bus clock frequency in Hertz
|
|
|
|
@retval EFI_SUCCESS The I2C bus frequency was returned
|
|
successfully.
|
|
@retval EFI_INVALID_PARAMETER BusClockHertz was NULL
|
|
@retval EFI_NO_MAPPING Invalid I2cBusConfiguration value
|
|
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_I2C_ENUMERATE_PROTOCOL_GET_BUS_FREQUENCY) (
|
|
IN CONST EFI_I2C_ENUMERATE_PROTOCOL *This,
|
|
IN UINTN I2cBusConfiguration,
|
|
OUT UINTN *BusClockHertz
|
|
);
|
|
|
|
///
|
|
/// I2C Enumerate protocol
|
|
///
|
|
struct _EFI_I2C_ENUMERATE_PROTOCOL {
|
|
///
|
|
/// Traverse the set of I2C devices on an I2C bus. This routine
|
|
/// returns the next I2C device on an I2C bus.
|
|
///
|
|
EFI_I2C_ENUMERATE_PROTOCOL_ENUMERATE Enumerate;
|
|
|
|
///
|
|
/// Get the requested I2C bus frequency for a specified bus
|
|
/// configuration.
|
|
///
|
|
EFI_I2C_ENUMERATE_PROTOCOL_GET_BUS_FREQUENCY GetBusFrequency;
|
|
};
|
|
|
|
///
|
|
/// Reference to variable defined in the .DEC file
|
|
///
|
|
extern EFI_GUID gEfiI2cEnumerateProtocolGuid;
|
|
|
|
#endif // __I2C_ENUMERATE_H__
|