1 /*++
2 
3 Copyright (c) 2004 - 2007, 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 Module Name:
13 
14  PciCfg.h
15 
16 Abstract:
17 
18   PciCfg PPI as defined in PEI CIS specification
19 
20   Used to access PCI configuration space in PEI
21 
22 --*/
23 
24 #ifndef _PEI_PCI_CFG_H_
25 #define _PEI_PCI_CFG_H_
26 #include "EfiPciCfg.h"
27 
28 #define PEI_PCI_CFG_PPI_GUID \
29   { \
30     0xe1f2eba0, 0xf7b9, 0x4a26, {0x86, 0x20, 0x13, 0x12, 0x21, 0x64, 0x2a, 0x90} \
31   }
32 
33 EFI_FORWARD_DECLARATION (PEI_PCI_CFG_PPI);
34 
35 
36 typedef
37 EFI_STATUS
38 (EFIAPI *PEI_PCI_CFG_PPI_IO) (
39   IN EFI_PEI_SERVICES         **PeiServices,
40   IN PEI_PCI_CFG_PPI          * This,
41   IN PEI_PCI_CFG_PPI_WIDTH    Width,
42   IN UINT64                   Address,
43   IN OUT VOID                 *Buffer
44   );
45 
46 typedef
47 EFI_STATUS
48 (EFIAPI *PEI_PCI_CFG_PPI_RW) (
49   IN EFI_PEI_SERVICES         **PeiServices,
50   IN PEI_PCI_CFG_PPI          * This,
51   IN PEI_PCI_CFG_PPI_WIDTH    Width,
52   IN UINT64                   Address,
53   IN UINTN                    SetBits,
54   IN UINTN                    ClearBits
55   );
56 
57 struct _PEI_PCI_CFG_PPI {
58   PEI_PCI_CFG_PPI_IO  Read;
59   PEI_PCI_CFG_PPI_IO  Write;
60   PEI_PCI_CFG_PPI_RW  Modify;
61 };
62 
63 extern EFI_GUID gPeiPciCfgPpiInServiceTableGuid;
64 
65 #endif
66