1 ## @file 2 # This driver produces UEFI PLATFORM_DRIVER_OVERRIDE_PROTOCOL if this protocol doesn't exist. 3 # It doesn't install again if this protocol exists. 4 # It only implements one interface GetDriver of PLATFORM_DRIVER_OVERRIDE_PROTOCOL protocol 5 # and doesn't support other two interfaces GetDriverPath, DriverLoaded. 6 # 7 # This driver also offers an UI interface in device manager to let user configure 8 # platform override protocol to override the default algorithm for matching 9 # drivers to controllers. 10 # 11 # The main flow: 12 # 1. It dynamicly locate all controller device path. 13 # 2. It dynamicly locate all drivers which support binding protocol. 14 # 3. It export and dynamicly update two menu to let user select the 15 # mapping between drivers to controllers. 16 # 4. It save all the mapping info in NV variables for the following boot, 17 # which will be consumed by GetDriver API of the produced the platform override protocol. 18 # 19 # Caution: This module is a sample implementation for the test purpose. 20 # 21 # Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR> 22 # 23 # This program and the accompanying materials 24 # are licensed and made available under the terms and conditions of the BSD License 25 # which accompanies this distribution. The full text of the license may be found at 26 # http://opensource.org/licenses/bsd-license.php 27 # 28 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 29 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 30 # 31 ## 32 33 [Defines] 34 INF_VERSION = 0x00010005 35 BASE_NAME = PlatDriOverrideDxe 36 MODULE_UNI_FILE = PlatDriOverrideDxe.uni 37 FILE_GUID = 35034CE2-A6E5-4fb4-BABE-A0156E9B2549 38 MODULE_TYPE = DXE_DRIVER 39 VERSION_STRING = 1.0 40 ENTRY_POINT = PlatDriOverrideDxeInit 41 UNLOAD_IMAGE = PlatDriOverrideDxeUnload 42 43 # 44 # The following information is for reference only and not required by the build tools. 45 # 46 # VALID_ARCHITECTURES = IA32 X64 IPF EBC 47 # 48 49 [Sources] 50 VfrStrings.uni 51 Vfr.vfr 52 PlatDriOverrideDxe.c 53 PlatOverMngr.h 54 PlatDriOverrideLib.c 55 InternalPlatDriOverrideDxe.h 56 57 [Packages] 58 MdePkg/MdePkg.dec 59 MdeModulePkg/MdeModulePkg.dec 60 61 [LibraryClasses] 62 BaseLib 63 DebugLib 64 UefiLib 65 UefiDriverEntryPoint 66 UefiBootServicesTableLib 67 HiiLib 68 BaseMemoryLib 69 MemoryAllocationLib 70 DevicePathLib 71 DxeServicesTableLib 72 UefiRuntimeServicesTableLib 73 PrintLib 74 75 [Guids] 76 # 77 # This GUID C Name is not required for build since it is from UefiLib and not directly used by this module source. 78 # gEfiGlobalVariableGuid ## SOMETIMES_CONSUMES ## Variable:L"PlatformLang" # this variable specifies the platform supported language string (RFC 4646 format) 79 # gEfiGlobalVariableGuid ## SOMETIMES_CONSUMES ## Variable:L"Lang" # this variable specifies the platform supported language string (ISO 639-2 format) 80 # 81 # There could be more than one variables, from PlatDriOver, PlatDriOver1, PlatDriOver2,... 82 # gEfiCallerIdGuid ## Private ## Variable:L"PlatDriOver" 83 # 84 gEfiIfrTianoGuid ## SOMETIMES_PRODUCES ## UNDEFINED 85 ## SOMETIMES_CONSUMES ## GUID # HiiIsConfigHdrMatch Data 86 ## SOMETIMES_PRODUCES ## GUID # HiiGetBrowserData Data 87 ## SOMETIMES_CONSUMES ## GUID # HiiSetBrowserData Data 88 ## SOMETIMES_PRODUCES ## GUID # HiiConstructConfigHdr Data 89 ## CONSUMES ## HII 90 gPlatformOverridesManagerGuid 91 92 [Protocols] 93 gEfiComponentName2ProtocolGuid ## SOMETIMES_CONSUMES # Get Driver Name if ComponentName2Protocol exists 94 gEfiComponentNameProtocolGuid ## SOMETIMES_CONSUMES # Get Driver Name if ComponentNameProtocol exists and ComponentName2Protocol doesn't exist 95 gEfiFirmwareVolume2ProtocolGuid ## SOMETIMES_CONSUMES # Get Driver Name from EFI UI section if ComponentName2Protocol and ComponentNameProtocol don't exist 96 gEfiPciIoProtocolGuid ## SOMETIMES_CONSUMES # Find the PCI device if PciIo protocol is installed 97 gEfiBusSpecificDriverOverrideProtocolGuid ## SOMETIMES_CONSUMES # Check whether the PCI device contains one or more efi drivers in its option rom by this protocol 98 99 gEfiDriverBindingProtocolGuid ## SOMETIMES_CONSUMES 100 gEfiLoadedImageProtocolGuid ## SOMETIMES_CONSUMES 101 gEfiLoadedImageDevicePathProtocolGuid ## SOMETIMES_CONSUMES # Show the drivers in the second page that support DriverBindingProtocol, LoadedImageProtocol and LoadedImageDevicePathProtocol 102 103 gEfiFormBrowser2ProtocolGuid ## CONSUMES 104 gEfiHiiConfigRoutingProtocolGuid ## CONSUMES 105 gEfiHiiConfigAccessProtocolGuid ## PRODUCES 106 gEfiPlatformDriverOverrideProtocolGuid ## PRODUCES 107 ## PRODUCES 108 ## SOMETIMES_CONSUMES # Show the controller device in the first page that support DevicePathProtocol 109 gEfiDevicePathProtocolGuid 110 111 [Depex] 112 gEfiFormBrowser2ProtocolGuid AND gEfiHiiConfigRoutingProtocolGuid 113 114 [UserExtensions.TianoCore."ExtraFiles"] 115 PlatDriOverrideDxeExtra.uni 116