1 /*++ 2 3 Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR> 4 5 This program and the accompanying materials are licensed and made available under 7 the terms and conditions of the BSD License that accompanies this distribution. 9 The full text of the license may be found at 11 http://opensource.org/licenses/bsd-license.php. 13 15 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 17 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 19 21 23 24 **/ 25 26 #ifndef __I2C_ACPI_H__ 27 #define __I2C_ACPI_H__ 28 29 #include <Protocol/DevicePath.h> 30 31 // 32 // I2C ACPI protocol 33 // 34 typedef struct _EFI_I2C_ACPI_PROTOCOL EFI_I2C_ACPI_PROTOCOL; 35 36 // 37 // I2C device description 38 // 39 // This structure provides the platform specific information which 40 // describes an I2C device. 41 // 42 typedef struct { 43 // 44 // Hardware revision - ACPI _HRV value 45 // 46 UINT32 HardwareRevision; 47 48 // 49 // Device path node for the I2C device. 50 // 51 CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath; 52 53 // 54 // I2C bus configuration for the I2C device. 55 // 56 UINT32 I2cBusConfiguration; 57 58 // 59 // Number of slave addresses for the I2C device. 60 // 61 UINT32 SlaveAddressCount; 62 63 // 64 // Address of the array of slave addresses for the I2C device. 65 // 66 CONST UINT32 *SlaveAddressArray; 67 }EFI_I2C_DEVICE; 68 69 70 /** 71 Enumerate the I2C devices 72 73 This routine must be called at or below TPL_NOTIFY. 74 75 This function walks the platform specific data to enumerates the 76 I2C devices on an I2C bus. 77 78 @param[in] This Address of an EFI_I2C_ENUM_PROTOCOL 79 structure. 80 @param[in, out] Device Buffer containing the address of an 81 EFI_I2C_DEVICE structure. Enumeration 82 is started by setting the initial 83 EFI_I2C_DEVICE structure address to NULL. 84 The buffer receives an EFI_I2C_DEVICE 85 structure address for the next I2C device. 86 87 @retval EFI_SUCCESS The platform data for the next device 88 on the I2C bus was returned successfully. 89 @retval EFI_INVALID_PARAMETER NextDevice was NULL 90 @retval EFI_NO_MAPPING PreviousDevice does not point to a valid 91 EFI_I2C_DEVICE structure. 92 93 **/ 94 typedef 95 EFI_STATUS 96 (EFIAPI *EFI_I2C_ACPI_ENUMERATE) ( 97 IN CONST EFI_I2C_ACPI_PROTOCOL *This, 98 IN OUT CONST EFI_I2C_DEVICE **Device 99 ); 100 101 // 102 // I2C device description 103 // 104 // This structure provides the platform specific information which 105 // describes an I2C device. 106 // 107 struct _EFI_I2C_ACPI_PROTOCOL { 108 // 109 // Walk the platform's list of I2C devices on the bus. This 110 // routine returns the next I2C device in the platform's list 111 // for this I2C bus. 112 // 113 EFI_I2C_ACPI_ENUMERATE Enumerate; 114 }; 115 116 // 117 // Variable containing the GUID for the I2C device enumeration protocol 118 // 119 extern EFI_GUID gEfiI2cAcpiProtocolGuid; 120 121 #endif // __I2C_ACPI_H__ 122