]> git.proxmox.com Git - mirror_edk2.git/blob - IntelFrameworkPkg/Include/Protocol/IncompatiblePciDeviceSupport.h
6b74a74ab95e2581c6e305dc7dcca5e0fc5a5d9a
[mirror_edk2.git] / IntelFrameworkPkg / Include / Protocol / IncompatiblePciDeviceSupport.h
1 /** @file
2 This file declares EFI Incompatible PCI Device Support Protocol
3 This protocol allows the PCI bus driver to support resource allocation for some PCI devices that do not comply
4 with the PCI Specification.
5 The EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_PROTOCOL is used by the PCI bus driver
6 to support resource allocation for some PCI devices that do not comply with the PCI Specification.
7 This protocol can find some incompatible PCI devices and report their special resource
8 requirements to the PCI bus driver. The generic PCI bus driver does not have prior knowledge of
9 any incompatible PCI devices. It interfaces with the
10 EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_PROTOCOL to find out if a device is
11 incompatible and to obtain the special configuration requirements for a specific incompatible PCI
12 device.
13 This protocol is optional, and only one instance of this protocol can be present in the system. If a
14 platform supports this protocol, this protocol is produced by a Driver Execution Environment
15 (DXE) driver and must be made available before the Boot Device Selection (BDS) phase. The PCI
16 bus driver will look for the presence of this protocol before it begins PCI enumeration.
17
18 Copyright (c) 2007, Intel Corporation
19 All rights reserved. This program and the accompanying materials
20 are licensed and made available under the terms and conditions of the BSD License
21 which accompanies this distribution. The full text of the license may be found at
22 http://opensource.org/licenses/bsd-license.php
23
24 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
25 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
26
27 Module Name: IncompatiblePciDeviceSupport.h
28
29 @par Revision Reference:
30 This protocol is defined in Framework of EFI PCI Platform Support Specification.
31 Version 0.9.
32
33 **/
34
35 #ifndef _INCOMPATIBLE_PCI_DEVICE_SUPPORT_H_
36 #define _INCOMPATIBLE_PCI_DEVICE_SUPPORT_H_
37
38 #include <PiDxe.h>
39
40 #define EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_PROTOCOL_GUID \
41 {0xeb23f55a, 0x7863, 0x4ac2, {0x8d, 0x3d, 0x95, 0x65, 0x35, 0xde, 0x03, 0x75} }
42
43 typedef struct _EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_PROTOCOL EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_PROTOCOL;
44
45 /**
46 Returns a list of ACPI resource descriptors that detail the special
47 resource configuration requirements for an incompatible PCI device.
48
49 @param This Pointer to the EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_PROTOCOL instance.
50 @param VendorID A unique ID to identify the manufacturer of the PCI device.
51 @param DeviceID A unique ID to identify the particular PCI device.
52 @param RevisionID A PCI device-specific revision identifier.
53 @param SubsystemVendorId Specifies the subsystem vendor ID.
54 @param SubsystemDeviceId Specifies the subsystem device ID.
55 @param Configuration A list of ACPI resource descriptors that detail
56 the configuration requirement.
57
58 @retval EFI_SUCCESS The function always returns EFI_SUCCESS.
59
60 **/
61 typedef
62 EFI_STATUS
63 (EFIAPI *EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_CHECK_DEVICE)(
64 IN EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_PROTOCOL *This,
65 IN UINTN VendorId,
66 IN UINTN DeviceId,
67 IN UINTN Revision,
68 IN UINTN SubVendorId,OPTIONAL
69 IN UINTN SubDeviceId,OPTIONAL
70 OUT VOID **Configuration
71 );
72
73
74 //
75 // Interface structure for the Incompatible PCI Device Support Protocol
76 //
77 struct _EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_PROTOCOL {
78 ///
79 /// Returns a list of ACPI resource descriptors that detail any special
80 /// resource configuration requirements if the specified device is a recognized
81 /// incompatible PCI device.
82 ///
83 EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_CHECK_DEVICE CheckDevice;
84 };
85
86 extern EFI_GUID gEfiIncompatiblePciDeviceSupportProtocolGuid;
87
88 #endif