Home | History | Annotate | Download | only in PlatformDriOverrideDxe
      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