]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/Protocol/PlatformDriverOverride.h
MdePkg: Clean up source files
[mirror_edk2.git] / MdePkg / Include / Protocol / PlatformDriverOverride.h
CommitLineData
d1f95000 1/** @file\r
8a7d75b0 2 Platform Driver Override protocol as defined in the UEFI 2.1 specification.\r
d1f95000 3\r
9095d37b
LG
4 Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
5 This program and the accompanying materials\r
6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution. The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
d1f95000 9\r
9095d37b
LG
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
d1f95000 12\r
d1f95000 13**/\r
14\r
15#ifndef __EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL_H__\r
16#define __EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL_H__\r
17\r
99e8ed21 18///\r
19/// Global ID for the Platform Driver Override Protocol\r
20///\r
d1f95000 21#define EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL_GUID \\r
22 { \\r
23 0x6b30c738, 0xa391, 0x11d4, {0x9a, 0x3b, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \\r
24 }\r
25\r
26typedef struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL;\r
27\r
28//\r
29// Prototypes for the Platform Driver Override Protocol\r
30//\r
31\r
9095d37b 32/**\r
d1f95000 33 Retrieves the image handle of the platform override driver for a controller in the system.\r
9095d37b 34\r
d1f95000 35 @param This A pointer to the EFI_PLATFORM_DRIVER_OVERRIDE_\r
9095d37b 36 PROTOCOL instance.\r
d1f95000 37 @param ControllerHandle The device handle of the controller to check if a driver override\r
9095d37b 38 exists.\r
d1f95000 39 @param DriverImageHandle On input, a pointer to the previous driver image handle returned\r
9095d37b
LG
40 by GetDriver(). On output, a pointer to the next driver\r
41 image handle.\r
42\r
d1f95000 43 @retval EFI_SUCCESS The driver override for ControllerHandle was returned in\r
9095d37b 44 DriverImageHandle.\r
d1f95000 45 @retval EFI_NOT_FOUND A driver override for ControllerHandle was not found.\r
d9de7921 46 @retval EFI_INVALID_PARAMETER The handle specified by ControllerHandle is NULL.\r
d1f95000 47 @retval EFI_INVALID_PARAMETER DriverImageHandle is not a handle that was returned on a\r
9095d37b
LG
48 previous call to GetDriver().\r
49\r
d1f95000 50**/\r
51typedef\r
52EFI_STATUS\r
8b13229b 53(EFIAPI *EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER)(\r
d1f95000 54 IN EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL *This,\r
55 IN EFI_HANDLE ControllerHandle,\r
56 IN OUT EFI_HANDLE *DriverImageHandle\r
57 );\r
58\r
9095d37b 59/**\r
d1f95000 60 Retrieves the device path of the platform override driver for a controller in the system.\r
9095d37b 61\r
d9de7921 62 @param This A pointer to the EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL instance.\r
d1f95000 63 @param ControllerHandle The device handle of the controller to check if a driver override\r
9095d37b 64 exists.\r
1f25dacf
LG
65 @param DriverImagePath On input, a pointer to the previous driver device path returned by\r
66 GetDriverPath(). On output, a pointer to the next driver\r
630b4187 67 device path. Passing in a pointer to NULL will return the first\r
1f25dacf 68 driver device path for ControllerHandle.\r
9095d37b 69\r
d1f95000 70 @retval EFI_SUCCESS The driver override for ControllerHandle was returned in\r
9095d37b
LG
71 DriverImageHandle.\r
72 @retval EFI_UNSUPPORTED The operation is not supported.\r
d1f95000 73 @retval EFI_NOT_FOUND A driver override for ControllerHandle was not found.\r
d9de7921 74 @retval EFI_INVALID_PARAMETER The handle specified by ControllerHandle is NULL.\r
d1f95000 75 @retval EFI_INVALID_PARAMETER DriverImagePath is not a device path that was returned on a\r
9095d37b
LG
76 previous call to GetDriverPath().\r
77\r
d1f95000 78**/\r
79typedef\r
80EFI_STATUS\r
8b13229b 81(EFIAPI *EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER_PATH)(\r
d1f95000 82 IN EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL *This,\r
83 IN EFI_HANDLE ControllerHandle,\r
84 IN OUT EFI_DEVICE_PATH_PROTOCOL **DriverImagePath\r
85 );\r
86\r
9095d37b 87/**\r
d1f95000 88 Used to associate a driver image handle with a device path that was returned on a prior call to the\r
9095d37b
LG
89 GetDriverPath() service. This driver image handle will then be available through the\r
90 GetDriver() service.\r
91\r
d1f95000 92 @param This A pointer to the EFI_PLATFORM_DRIVER_OVERRIDE_\r
9095d37b
LG
93 PROTOCOL instance.\r
94 @param ControllerHandle The device handle of the controller.\r
d1f95000 95 @param DriverImagePath A pointer to the driver device path that was returned in a prior\r
9095d37b 96 call to GetDriverPath().\r
d1f95000 97 @param DriverImageHandle The driver image handle that was returned by LoadImage()\r
9095d37b
LG
98 when the driver specified by DriverImagePath was loaded\r
99 into memory.\r
100\r
101 @retval EFI_SUCCESS The association between DriverImagePath and\r
d1f95000 102 DriverImageHandle was established for the controller specified\r
9095d37b
LG
103 by ControllerHandle.\r
104 @retval EFI_UNSUPPORTED The operation is not supported.\r
d1f95000 105 @retval EFI_NOT_FOUND DriverImagePath is not a device path that was returned on a prior\r
9095d37b
LG
106 call to GetDriverPath() for the controller specified by\r
107 ControllerHandle.\r
d9de7921 108 @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.\r
d1f95000 109 @retval EFI_INVALID_PARAMETER DriverImagePath is not a valid device path.\r
110 @retval EFI_INVALID_PARAMETER DriverImageHandle is not a valid image handle.\r
9095d37b 111\r
d1f95000 112**/\r
113typedef\r
114EFI_STATUS\r
8b13229b 115(EFIAPI *EFI_PLATFORM_DRIVER_OVERRIDE_DRIVER_LOADED)(\r
d1f95000 116 IN EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL *This,\r
117 IN EFI_HANDLE ControllerHandle,\r
118 IN EFI_DEVICE_PATH_PROTOCOL *DriverImagePath,\r
119 IN EFI_HANDLE DriverImageHandle\r
120 );\r
121\r
44717a39 122///\r
9095d37b
LG
123/// This protocol matches one or more drivers to a controller. A platform driver\r
124/// produces this protocol, and it is installed on a separate handle. This protocol\r
125/// is used by the ConnectController() boot service to select the best driver\r
126/// for a controller. All of the drivers returned by this protocol have a higher\r
127/// precedence than drivers found from an EFI Bus Specific Driver Override Protocol\r
128/// or drivers found from the general UEFI driver Binding search algorithm. If more\r
129/// than one driver is returned by this protocol, then the drivers are returned in\r
44717a39 130/// order from highest precedence to lowest precedence.\r
131///\r
d1f95000 132struct _EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL {\r
133 EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER GetDriver;\r
134 EFI_PLATFORM_DRIVER_OVERRIDE_GET_DRIVER_PATH GetDriverPath;\r
135 EFI_PLATFORM_DRIVER_OVERRIDE_DRIVER_LOADED DriverLoaded;\r
136};\r
137\r
138extern EFI_GUID gEfiPlatformDriverOverrideProtocolGuid;\r
139\r
140#endif\r