| /** @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> | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| @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__ |