xref: /illumos-gate/usr/src/boot/efi/include/Protocol/DriverFamilyOverride.h (revision 9164a50bf932130cbb5097a16f6986873ce0e6e5)
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
62