mirror of https://github.com/acidanthera/audk.git
87 lines
4.0 KiB
C
87 lines
4.0 KiB
C
/** @file
|
|
This file declares EFI Incompatible PCI Device Support Protocol
|
|
This protocol allows the PCI bus driver to support resource allocation for some PCI devices that do not comply
|
|
with the PCI Specification.
|
|
The EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_PROTOCOL is used by the PCI bus driver
|
|
to support resource allocation for some PCI devices that do not comply with the PCI Specification.
|
|
This protocol can find some incompatible PCI devices and report their special resource
|
|
requirements to the PCI bus driver. The generic PCI bus driver does not have prior knowledge of
|
|
any incompatible PCI devices. It interfaces with the
|
|
EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_PROTOCOL to find out if a device is
|
|
incompatible and to obtain the special configuration requirements for a specific incompatible PCI
|
|
device.
|
|
This protocol is optional, and only one instance of this protocol can be present in the system. If a
|
|
platform supports this protocol, this protocol is produced by a Driver Execution Environment
|
|
(DXE) driver and must be made available before the Boot Device Selection (BDS) phase. The PCI
|
|
bus driver will look for the presence of this protocol before it begins PCI enumeration.
|
|
|
|
Copyright (c) 2007 - 2009, Intel Corporation
|
|
All rights reserved. This program and the accompanying materials
|
|
are licensed and made available under the terms and conditions of the BSD License
|
|
which accompanies this distribution. The full text of the license may be found at
|
|
http://opensource.org/licenses/bsd-license.php
|
|
|
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
|
|
@par Revision Reference:
|
|
This protocol is defined in Framework of EFI PCI Platform Support Specification.
|
|
Version 0.9.
|
|
|
|
**/
|
|
|
|
#ifndef _INCOMPATIBLE_PCI_DEVICE_SUPPORT_H_
|
|
#define _INCOMPATIBLE_PCI_DEVICE_SUPPORT_H_
|
|
|
|
#include <PiDxe.h>
|
|
|
|
#define EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_PROTOCOL_GUID \
|
|
{0xeb23f55a, 0x7863, 0x4ac2, {0x8d, 0x3d, 0x95, 0x65, 0x35, 0xde, 0x03, 0x75} }
|
|
|
|
typedef struct _EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_PROTOCOL EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_PROTOCOL;
|
|
|
|
/**
|
|
Returns a list of ACPI resource descriptors that detail the special
|
|
resource configuration requirements for an incompatible PCI device.
|
|
|
|
@param This Pointer to the EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_PROTOCOL instance.
|
|
@param VendorID A unique ID to identify the manufacturer of the PCI device.
|
|
@param DeviceID A unique ID to identify the particular PCI device.
|
|
@param RevisionID A PCI device-specific revision identifier.
|
|
@param SubsystemVendorId Specifies the subsystem vendor ID.
|
|
@param SubsystemDeviceId Specifies the subsystem device ID.
|
|
@param Configuration A list of ACPI resource descriptors that detail
|
|
the configuration requirement.
|
|
|
|
@retval EFI_SUCCESS The function always returns EFI_SUCCESS.
|
|
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_CHECK_DEVICE)(
|
|
IN EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_PROTOCOL *This,
|
|
IN UINTN VendorId,
|
|
IN UINTN DeviceId,
|
|
IN UINTN Revision,
|
|
IN UINTN SubVendorId,
|
|
IN UINTN SubDeviceId,
|
|
OUT VOID **Configuration
|
|
);
|
|
|
|
|
|
///
|
|
/// Interface structure for the Incompatible PCI Device Support Protocol
|
|
///
|
|
struct _EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_PROTOCOL {
|
|
///
|
|
/// Returns a list of ACPI resource descriptors that detail any special
|
|
/// resource configuration requirements if the specified device is a recognized
|
|
/// incompatible PCI device.
|
|
///
|
|
EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_CHECK_DEVICE CheckDevice;
|
|
};
|
|
|
|
extern EFI_GUID gEfiIncompatiblePciDeviceSupportProtocolGuid;
|
|
|
|
#endif
|