summaryrefslogtreecommitdiffstats
path: root/MdePkg/Include/Library/PciSegmentInfoLib.h
blob: 6124e36e9b191d6a9e328e782e417ac8dfa658b9 (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
36
/** @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 - 2020, 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 *
EFIAPI
GetPciSegmentInfo (
  UINTN  *Count
  );

#endif