Ronak Kanabar | 1ae366f | 2023-06-07 01:21:56 +0530 | [diff] [blame^] | 1 | /** @file |
| 2 | UEFI Driver Family Protocol |
| 3 | |
| 4 | Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR> |
| 5 | SPDX-License-Identifier: BSD-2-Clause-Patent |
| 6 | |
| 7 | **/ |
| 8 | |
| 9 | #ifndef __EFI_DRIVER_FAMILY_OVERRIDE_H__ |
| 10 | #define __EFI_DRIVER_FAMILY_OVERRIDE_H__ |
| 11 | |
| 12 | #define EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL_GUID \ |
| 13 | { \ |
| 14 | 0xb1ee129e, 0xda36, 0x4181, { 0x91, 0xf8, 0x4, 0xa4, 0x92, 0x37, 0x66, 0xa7 } \ |
| 15 | } |
| 16 | |
| 17 | typedef struct _EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL; |
| 18 | |
| 19 | // |
| 20 | // Prototypes for the Driver Family Override Protocol |
| 21 | // |
| 22 | // |
| 23 | |
| 24 | /** |
| 25 | This function returns the version value associated with the driver specified by This. |
| 26 | |
| 27 | Retrieves the version of the driver that is used by the EFI Boot Service ConnectController() |
| 28 | to sort the set of Driver Binding Protocols in order from highest priority to lowest priority. |
| 29 | For drivers that support the Driver Family Override Protocol, those drivers are sorted so that |
| 30 | the drivers with higher values returned by GetVersion() are higher priority than drivers that |
| 31 | return lower values from GetVersion(). |
| 32 | |
| 33 | @param This A pointer to the EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL instance. |
| 34 | |
| 35 | @return The version value associated with the driver specified by This. |
| 36 | |
| 37 | **/ |
| 38 | typedef |
| 39 | UINT32 |
| 40 | (EFIAPI *EFI_DRIVER_FAMILY_OVERRIDE_GET_VERSION)( |
| 41 | IN EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL *This |
| 42 | ); |
| 43 | |
| 44 | /// |
| 45 | /// When installed, the Driver Family Override Protocol produces a GUID that represents |
| 46 | /// a family of drivers. Drivers with the same GUID are members of the same family |
| 47 | /// When drivers are connected to controllers, drivers with a higher revision value |
| 48 | /// in the same driver family are connected with a higher priority than drivers |
| 49 | /// with a lower revision value in the same driver family. The EFI Boot Service |
| 50 | /// Connect Controller uses five rules to build a prioritized list of drivers when |
| 51 | /// a request is made to connect a driver to a controller. The Driver Family Protocol |
| 52 | /// rule is between the Platform Specific Driver Override Protocol and above the |
| 53 | /// Bus Specific Driver Override Protocol. |
| 54 | /// |
| 55 | struct _EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL { |
| 56 | EFI_DRIVER_FAMILY_OVERRIDE_GET_VERSION GetVersion; |
| 57 | }; |
| 58 | |
| 59 | extern EFI_GUID gEfiDriverFamilyOverrideProtocolGuid; |
| 60 | |
| 61 | #endif |