summaryrefslogtreecommitdiffstats
path: root/MdePkg/Include/Library/PciSegmentInfoLib.h
blob: 320a2236286e8f8870576408c52ac8bf8851ea87 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/** @file
  Provides services to return segment information on a platform with multiple PCI segments.

  This library is consumed by PciSegmentLib to support multiple segment PCI configuration access.

  Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
  SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#ifndef __PCI_SEGMENT_INFO_LIB__
#define __PCI_SEGMENT_INFO_LIB__

typedef struct {
  UINT16               SegmentNumber;   ///< Segment number.
  UINT64               BaseAddress;     ///< ECAM Base address.
  UINT8                StartBusNumber;  ///< Start BUS number, for verifying the PCI Segment address.
  UINT8                EndBusNumber;    ///< End BUS number, for verifying the PCI Segment address.
} PCI_SEGMENT_INFO;

/**
  Return an array of PCI_SEGMENT_INFO holding the segment information.

  Note: The returned array/buffer is owned by callee.

  @param  Count  Return the count of segments.

  @retval A callee owned array holding the segment information.
**/
PCI_SEGMENT_INFO *
GetPciSegmentInfo (
  UINTN  *Count
  );

#endif