1 /*++
2 
3 Copyright (c) 1999 - 2006, Intel Corporation. All rights reserved.<BR>
4 This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution.  The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
8 
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11 
12 
13 Module Name:
14 
15   Smbus.h
16 
17 Abstract:
18 
19   Smbus PPI as defined in EFI 2.0
20 
21 --*/
22 
23 #ifndef _PEI_SMBUS_PPI_H
24 #define _PEI_SMBUS_PPI_H
25 
26 #include "EfiSmbus.h"
27 
28 #define PEI_SMBUS_PPI_GUID \
29   { \
30     0xabd42895, 0x78cf, 0x4872, {0x84, 0x44, 0x1b, 0x5c, 0x18, 0xb, 0xfb, 0xda} \
31   }
32 
33 EFI_FORWARD_DECLARATION (PEI_SMBUS_PPI);
34 
35 typedef
36 EFI_STATUS
37 (EFIAPI *PEI_SMBUS_PPI_EXECUTE_OPERATION) (
38   IN      EFI_PEI_SERVICES          **PeiServices,
39   IN PEI_SMBUS_PPI                  * This,
40   IN      EFI_SMBUS_DEVICE_ADDRESS  SlaveAddress,
41   IN      EFI_SMBUS_DEVICE_COMMAND  Command,
42   IN      EFI_SMBUS_OPERATION       Operation,
43   IN      BOOLEAN                   PecCheck,
44   IN OUT  UINTN                     *Length,
45   IN OUT  VOID                      *Buffer
46   );
47 
48 
49 typedef
50 EFI_STATUS
51 (EFIAPI *PEI_SMBUS_NOTIFY_FUNCTION) (
52   IN      EFI_PEI_SERVICES              **PeiServices,
53   IN PEI_SMBUS_PPI                      * SmbusPpi,
54   IN      EFI_SMBUS_DEVICE_ADDRESS      SlaveAddress,
55   IN      UINTN                         Data
56   );
57 
58 //
59 // If ArpAll is TRUE, SmbusUdid/SlaveAddress is Optional.
60 // If FALSE, ArpDevice will enum SmbusUdid and the address will be at SlaveAddress
61 //
62 typedef
63 EFI_STATUS
64 (EFIAPI *PEI_SMBUS_PPI_ARP_DEVICE) (
65   IN      EFI_PEI_SERVICES          **PeiServices,
66   IN PEI_SMBUS_PPI                  * This,
67   IN      BOOLEAN                   ArpAll,
68   IN      EFI_SMBUS_UDID            * SmbusUdid, OPTIONAL
69   IN OUT  EFI_SMBUS_DEVICE_ADDRESS  * SlaveAddress OPTIONAL
70   );
71 
72 
73 typedef
74 EFI_STATUS
75 (EFIAPI *PEI_SMBUS_PPI_GET_ARP_MAP) (
76   IN      EFI_PEI_SERVICES          **PeiServices,
77   IN PEI_SMBUS_PPI                  * This,
78   IN OUT  UINTN                     *Length,
79   IN OUT  EFI_SMBUS_DEVICE_MAP      **SmbusDeviceMap
80   );
81 
82 typedef
83 EFI_STATUS
84 (EFIAPI *PEI_SMBUS_PPI_NOTIFY) (
85   IN      EFI_PEI_SERVICES          **PeiServices,
86   IN PEI_SMBUS_PPI                  * This,
87   IN      EFI_SMBUS_DEVICE_ADDRESS  SlaveAddress,
88   IN      UINTN                     Data,
89   IN      PEI_SMBUS_NOTIFY_FUNCTION NotifyFunction
90   );
91 
92 struct _PEI_SMBUS_PPI {
93   PEI_SMBUS_PPI_EXECUTE_OPERATION Execute;
94   PEI_SMBUS_PPI_ARP_DEVICE        ArpDevice;
95   PEI_SMBUS_PPI_GET_ARP_MAP       GetArpMap;
96   PEI_SMBUS_PPI_NOTIFY            Notify;
97 };
98 
99 extern EFI_GUID gPeiSmbusPpiGuid;
100 
101 #endif
102