~ubuntu-branches/ubuntu/wily/edk2/wily

« back to all changes in this revision

Viewing changes to IntelFrameworkPkg/Include/Ppi/PciCfg.h

  • Committer: Package Import Robot
  • Author(s): Steve Langasek
  • Date: 2013-02-10 13:11:25 UTC
  • Revision ID: package-import@ubuntu.com-20130210131125-0zwkb8f8m4ecia4m
Tags: upstream-0~20121205.edae8d2d
ImportĀ upstreamĀ versionĀ 0~20121205.edae8d2d

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/** @file
 
2
  This file declares the PciCfg PPI used to access the PCI configuration space in PEI
 
3
 
 
4
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
 
5
This program and the accompanying materials are licensed and made available under 
 
6
the terms and conditions of the BSD License that accompanies this distribution.  
 
7
The full text of the license may be found at
 
8
http://opensource.org/licenses/bsd-license.php.                                          
 
9
    
 
10
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     
 
11
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             
 
12
 
 
13
  @par Revision Reference:
 
14
  This PPI is defined in PEI CIS
 
15
  Version 0.91.
 
16
 
 
17
**/
 
18
 
 
19
#ifndef __PEI_PCI_CFG_H__
 
20
#define __PEI_PCI_CFG_H__
 
21
 
 
22
#include <Ppi/PciCfg2.h>
 
23
//
 
24
// Get the common definitions for EFI_PEI_PCI_CFG_PPI_WIDTH.
 
25
//
 
26
 
 
27
#define EFI_PEI_PCI_CFG_PPI_INSTALLED_GUID \
 
28
  { \
 
29
    0xe1f2eba0, 0xf7b9, 0x4a26, {0x86, 0x20, 0x13, 0x12, 0x21, 0x64, 0x2a, 0x90 } \
 
30
  }
 
31
 
 
32
typedef struct _EFI_PEI_PCI_CFG_PPI   EFI_PEI_PCI_CFG_PPI;
 
33
 
 
34
#define PEI_PCI_CFG_ADDRESS(bus, dev, func, reg)  ( \
 
35
      (UINT64) ((((UINTN) bus) << 24) + (((UINTN) dev) << 16) + (((UINTN) func) << 8) + ((UINTN) reg)) \
 
36
    ) & 0x00000000ffffffff
 
37
 
 
38
/**
 
39
  PCI read and write operation.
 
40
 
 
41
  @param  PeiServices    An indirect pointer to the PEI Services Table
 
42
                         published by the PEI Foundation.
 
43
  @param  This           Pointer to local data for the interface.
 
44
  @param  Width          The width of the access. Enumerated in bytes.
 
45
  @param  Address        The physical address of the access.
 
46
  @param  Buffer         A pointer to the buffer of data.
 
47
 
 
48
  @retval EFI_SUCCESS           The function completed successfully.
 
49
  @retval EFI_NOT_YET_AVAILABLE The service has not been installed.
 
50
 
 
51
**/
 
52
typedef
 
53
EFI_STATUS
 
54
(EFIAPI *EFI_PEI_PCI_CFG_PPI_IO)(
 
55
  IN EFI_PEI_SERVICES             **PeiServices,
 
56
  IN EFI_PEI_PCI_CFG_PPI          *This,
 
57
  IN EFI_PEI_PCI_CFG_PPI_WIDTH    Width,
 
58
  IN UINT64                       Address,
 
59
  IN OUT VOID                     *Buffer
 
60
  );
 
61
 
 
62
/**
 
63
  PCI read-modify-write operation.
 
64
 
 
65
  @param  PeiServices    An indirect pointer to the PEI Services Table
 
66
                         published by the PEI Foundation.
 
67
  @param  This           The pointer to local data for the interface.
 
68
  @param  Width          The width of the access. Enumerated in bytes.
 
69
  @param  Address        The physical address of the access.
 
70
  @param  SetBits        Value of the bits to set.
 
71
  @param  ClearBits      Value of the bits to clear.
 
72
 
 
73
  @retval EFI_SUCCESS           The function completed successfully.
 
74
 
 
75
**/
 
76
typedef
 
77
EFI_STATUS
 
78
(EFIAPI *EFI_PEI_PCI_CFG_PPI_RW)(
 
79
  IN EFI_PEI_SERVICES             **PeiServices,
 
80
  IN EFI_PEI_PCI_CFG_PPI          *This,
 
81
  IN EFI_PEI_PCI_CFG_PPI_WIDTH    Width,
 
82
  IN UINT64                       Address,
 
83
  IN UINTN                        SetBits,
 
84
  IN UINTN                        ClearBits
 
85
  );
 
86
 
 
87
/**
 
88
  The EFI_PEI_PCI_CFG_PPI interfaces are used to abstract accesses to PCI 
 
89
  controllers behind a PCI root bridge controller.
 
90
**/
 
91
struct _EFI_PEI_PCI_CFG_PPI {
 
92
  ///
 
93
  /// PCI read services.  See the Read() function description.
 
94
  ///
 
95
  EFI_PEI_PCI_CFG_PPI_IO  Read;
 
96
  
 
97
  ///
 
98
  /// PCI write services.  See the Write() function description.
 
99
  ///
 
100
  EFI_PEI_PCI_CFG_PPI_IO  Write;
 
101
  
 
102
  ///
 
103
  /// PCI read-modify-write services.  See the Modify() function description.
 
104
  ///
 
105
  EFI_PEI_PCI_CFG_PPI_RW  Modify;
 
106
};
 
107
 
 
108
extern EFI_GUID gEfiPciCfgPpiInServiceTableGuid;
 
109
 
 
110
#endif