]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Bus/Pci/PciBusDxe/PciDriverOverride.h
MdeModulePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdeModulePkg / Bus / Pci / PciBusDxe / PciDriverOverride.h
CommitLineData
9060e3ec 1/** @file\r
fcdfcdbf 2 Functions declaration for Bus Specific Driver Override protocol.\r
9060e3ec 3\r
fcdfcdbf 4Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>\r
9d510e61 5SPDX-License-Identifier: BSD-2-Clause-Patent\r
9060e3ec 6\r
7**/\r
8\r
9\r
10#ifndef _EFI_PCI_DRIVER_OVERRRIDE_H_\r
11#define _EFI_PCI_DRIVER_OVERRRIDE_H_\r
12\r
13#define DRIVER_OVERRIDE_SIGNATURE SIGNATURE_32 ('d', 'r', 'o', 'v')\r
14\r
15//\r
16// PCI driver override driver image list\r
17//\r
18typedef struct {\r
b5cbef4e
RN
19 UINT32 Signature;\r
20 LIST_ENTRY Link;\r
21 EFI_HANDLE DriverImageHandle;\r
22 EFI_DEVICE_PATH_PROTOCOL *DriverImagePath;\r
9060e3ec 23} PCI_DRIVER_OVERRIDE_LIST;\r
24\r
25\r
26#define DRIVER_OVERRIDE_FROM_LINK(a) \\r
27 CR (a, PCI_DRIVER_OVERRIDE_LIST, Link, DRIVER_OVERRIDE_SIGNATURE)\r
28\r
29/**\r
30 Initializes a PCI Driver Override Instance.\r
31\r
32 @param PciIoDevice PCI Device instance.\r
33\r
34**/\r
35VOID\r
36InitializePciDriverOverrideInstance (\r
37 IN OUT PCI_IO_DEVICE *PciIoDevice\r
38 );\r
39\r
40/**\r
41 Add an overriding driver image.\r
42\r
43 @param PciIoDevice Instance of PciIo device.\r
b5cbef4e
RN
44 @param DriverImageHandle Image handle of newly added driver image.\r
45 @param DriverImagePath Device path of newly added driver image.\r
9060e3ec 46\r
47 @retval EFI_SUCCESS Successfully added driver.\r
48 @retval EFI_OUT_OF_RESOURCES No memory resource for new driver instance.\r
49 @retval other Some error occurred when locating gEfiLoadedImageProtocolGuid.\r
50\r
51**/\r
52EFI_STATUS\r
53AddDriver (\r
b5cbef4e
RN
54 IN PCI_IO_DEVICE *PciIoDevice,\r
55 IN EFI_HANDLE DriverImageHandle,\r
56 IN EFI_DEVICE_PATH_PROTOCOL *DriverImagePath\r
9060e3ec 57 );\r
58\r
59\r
60/**\r
61 Uses a bus specific algorithm to retrieve a driver image handle for a controller.\r
62\r
63 @param This A pointer to the EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL instance.\r
64 @param DriverImageHandle On input, a pointer to the previous driver image handle returned\r
65 by GetDriver(). On output, a pointer to the next driver\r
66 image handle. Passing in a NULL, will return the first driver\r
67 image handle.\r
68\r
69 @retval EFI_SUCCESS A bus specific override driver is returned in DriverImageHandle.\r
70 @retval EFI_NOT_FOUND The end of the list of override drivers was reached.\r
71 A bus specific override driver is not returned in DriverImageHandle.\r
72 @retval EFI_INVALID_PARAMETER DriverImageHandle is not a handle that was returned on a\r
73 previous call to GetDriver().\r
74\r
75**/\r
76EFI_STATUS\r
77EFIAPI\r
78GetDriver (\r
79 IN EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL *This,\r
80 IN OUT EFI_HANDLE *DriverImageHandle\r
81 );\r
82\r
83#endif\r