blob: 43bf6f5950af308fe65a68aea87d0cc33ea4cc65 [file] [log] [blame]
Jonathan Zhang6d277782020-06-09 17:56:53 -07001/** @file
2 This file declares the SMBus definitions defined in SmBus Specification V2.0
3 and defined in PI1.0 specification volume 5.
4
5 Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
6 SPDX-License-Identifier: BSD-2-Clause-Patent
7
8**/
9
10#ifndef _SMBUS_H_
11#define _SMBUS_H_
12
13
14///
15/// UDID of SMBUS device.
16///
17typedef struct {
18 UINT32 VendorSpecificId;
19 UINT16 SubsystemDeviceId;
20 UINT16 SubsystemVendorId;
21 UINT16 Interface;
22 UINT16 DeviceId;
23 UINT16 VendorId;
24 UINT8 VendorRevision;
25 UINT8 DeviceCapabilities;
26} EFI_SMBUS_UDID;
27
28///
29/// Smbus Device Address
30///
31typedef struct {
32 ///
33 /// The SMBUS hardware address to which the SMBUS device is preassigned or allocated.
34 ///
35 UINTN SmbusDeviceAddress : 7;
36} EFI_SMBUS_DEVICE_ADDRESS;
37
38typedef struct {
39 ///
40 /// The SMBUS hardware address to which the SMBUS device is preassigned or
41 /// allocated. Type EFI_SMBUS_DEVICE_ADDRESS is defined in EFI_PEI_SMBUS2_PPI.Execute().
42 ///
43 EFI_SMBUS_DEVICE_ADDRESS SmbusDeviceAddress;
44 ///
45 /// The SMBUS Unique Device Identifier (UDID) as defined in EFI_SMBUS_UDID.
46 /// Type EFI_SMBUS_UDID is defined in EFI_PEI_SMBUS2_PPI.ArpDevice().
47 ///
48 EFI_SMBUS_UDID SmbusDeviceUdid;
49} EFI_SMBUS_DEVICE_MAP;
50
51///
52/// Smbus Operations
53///
54typedef enum _EFI_SMBUS_OPERATION {
55 EfiSmbusQuickRead,
56 EfiSmbusQuickWrite,
57 EfiSmbusReceiveByte,
58 EfiSmbusSendByte,
59 EfiSmbusReadByte,
60 EfiSmbusWriteByte,
61 EfiSmbusReadWord,
62 EfiSmbusWriteWord,
63 EfiSmbusReadBlock,
64 EfiSmbusWriteBlock,
65 EfiSmbusProcessCall,
66 EfiSmbusBWBRProcessCall
67} EFI_SMBUS_OPERATION;
68
69///
70/// EFI_SMBUS_DEVICE_COMMAND
71///
72typedef UINTN EFI_SMBUS_DEVICE_COMMAND;
73
74#endif
75