]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/UefiLib/UefiDriverModel.c
remove unnecessary comments introduced by tools from MdePkg. The regular express...
[mirror_edk2.git] / MdePkg / Library / UefiLib / UefiDriverModel.c
index 0a72d263ad9138862feeb88f5c66d4ecf18e35f5..11e440f95b921c81a4dae2ed947f97a2b100a445 100644 (file)
 \r
 **/ \r
 \r
-//\r
-// Include common header file for this module.\r
-//\r
+\r
 #include "UefiLibInternal.h"\r
 \r
 /**\r
-  Intialize a driver by installing the Driver Binding Protocol onto the\r
-  driver's DriverBindingHandle.  This is typically the same as the driver's\r
-  ImageHandle, but it can be different if the driver produces multiple\r
-  DriverBinding Protocols.  This function also initializes the EFI Driver\r
-  Library that initializes the global variables gST, gBS, gRT.\r
+  Intialize a driver by installing the Driver Binding Protocol onto the driver's\r
+  DriverBindingHandle.  This is typically the same as the driver's ImageHandle, but\r
+  it can be different if the driver produces multiple DriverBinding Protocols. \r
+  If the Drvier Binding Protocol interface is NULL, then ASSERT (). \r
+  If the installation fails, then ASSERT ().\r
 \r
-  @param  ImageHandle          The image handle of the driver\r
-  @param  SystemTable          The EFI System Table that was passed to the driver's entry point\r
-  @param  DriverBinding        A Driver Binding Protocol instance that this driver is producing\r
-  @param  DriverBindingHandle  The handle that DriverBinding is to be installe onto.  If this\r
-                               parameter is NULL, then a new handle is created.\r
+  @param  ImageHandle                 The image handle of the driver.\r
+  @param  SystemTable                 The EFI System Table that was passed to the driver's entry point.\r
+  @param  DriverBinding               A Driver Binding Protocol instance that this driver is producing.\r
+  @param  DriverBindingHandle         The handle that DriverBinding is to be installe onto.  If this\r
+                                      parameter is NULL, then a new handle is created.\r
 \r
-  @retval EFI_SUCCESS          DriverBinding is installed onto DriverBindingHandle\r
-  @retval Other                Status from gBS->InstallProtocolInterface()\r
+  @retval EFI_SUCCESS                 The protocol installation is completed successfully.\r
+  @retval Others                      Status from gBS->InstallMultipleProtocolInterfaces().\r
 \r
 **/\r
 EFI_STATUS\r
 EFIAPI\r
 EfiLibInstallDriverBinding (\r
-  IN const EFI_HANDLE             ImageHandle,\r
-  IN const EFI_SYSTEM_TABLE       *SystemTable,\r
+  IN CONST EFI_HANDLE             ImageHandle,\r
+  IN CONST EFI_SYSTEM_TABLE       *SystemTable,\r
   IN EFI_DRIVER_BINDING_PROTOCOL  *DriverBinding,\r
   IN EFI_HANDLE                   DriverBindingHandle\r
   )\r
@@ -67,36 +65,38 @@ EfiLibInstallDriverBinding (
   return Status;\r
 }\r
 \r
+\r
 /**\r
-  Intialize a driver by installing the Driver Binding Protocol onto the\r
-  driver's DriverBindingHandle.  This is typically the same as the driver's\r
-  ImageHandle, but it can be different if the driver produces multiple\r
-  DriverBinding Protocols.  This function also initializes the EFI Driver\r
-  Library that initializes the global variables gST, gBS, gRT.\r
-\r
-  @ImageHandle                 The image handle of the driver\r
-  @SystemTable                 The EFI System Table that was passed to the driver's entry point\r
-  @DriverBinding               A Driver Binding Protocol instance that this driver is producing\r
-  @DriverBindingHandle         The handle that DriverBinding is to be installe onto.  If this\r
-                               parameter is NULL, then a new handle is created.\r
-  @ComponentName               A Component Name Protocol instance that this driver is producing\r
-  @DriverConfiguration         A Driver Configuration Protocol instance that this driver is producing\r
-  @DriverDiagnostics           A Driver Diagnostics Protocol instance that this driver is producing\r
-\r
-  @retval EFI_SUCCESS          DriverBinding is installed onto DriverBindingHandle\r
-  @retval Other                Status from gBS->InstallProtocolInterface()\r
+  Intialize a driver by installing the Driver Binding Protocol together with the optional Component Name,\r
+  Driver Configure and Driver Diagnostic Protocols onto the driver's DriverBindingHandle.  This is\r
+  typically the same as the driver's ImageHandle, but it can be different if the driver produces multiple\r
+  DriverBinding Protocols. \r
+  If the Drvier Binding Protocol interface is NULL, then ASSERT (). \r
+  If the installation fails, then ASSERT ().\r
+\r
+  @param  ImageHandle                 The image handle of the driver.\r
+  @param  SystemTable                 The EFI System Table that was passed to the driver's entry point.\r
+  @param  DriverBinding               A Driver Binding Protocol instance that this driver is producing.\r
+  @param  DriverBindingHandle         The handle that DriverBinding is to be installe onto.  If this\r
+                                      parameter is NULL, then a new handle is created.\r
+  @param  ComponentName               A Component Name Protocol instance that this driver is producing.\r
+  @param  DriverConfiguration         A Driver Configuration Protocol instance that this driver is producing.\r
+  @param  DriverDiagnostics           A Driver Diagnostics Protocol instance that this driver is producing.\r
+\r
+  @retval EFI_SUCCESS                 The protocol installation is completed successfully.\r
+  @retval Others                      Status from gBS->InstallMultipleProtocolInterfaces().\r
 \r
 **/\r
 EFI_STATUS\r
 EFIAPI\r
 EfiLibInstallAllDriverProtocols (\r
-  IN const EFI_HANDLE                         ImageHandle,\r
-  IN const EFI_SYSTEM_TABLE                   *SystemTable,\r
+  IN CONST EFI_HANDLE                         ImageHandle,\r
+  IN CONST EFI_SYSTEM_TABLE                   *SystemTable,\r
   IN EFI_DRIVER_BINDING_PROTOCOL              *DriverBinding,\r
   IN EFI_HANDLE                               DriverBindingHandle,\r
-  IN const EFI_COMPONENT_NAME_PROTOCOL        *ComponentName,       OPTIONAL\r
-  IN const EFI_DRIVER_CONFIGURATION_PROTOCOL  *DriverConfiguration, OPTIONAL\r
-  IN const EFI_DRIVER_DIAGNOSTICS_PROTOCOL    *DriverDiagnostics    OPTIONAL\r
+  IN CONST EFI_COMPONENT_NAME_PROTOCOL        *ComponentName,       OPTIONAL\r
+  IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL  *DriverConfiguration, OPTIONAL\r
+  IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL    *DriverDiagnostics    OPTIONAL\r
   )\r
 {\r
   EFI_STATUS  Status;\r
@@ -192,38 +192,125 @@ EfiLibInstallAllDriverProtocols (
 }\r
 \r
 \r
+\r
+/**\r
+  Intialize a driver by installing the Driver Binding Protocol together with the optional Component Name,\r
+  Component Name 2 onto the driver's DriverBindingHandle.  This is typically the same as the driver's\r
+  ImageHandle, but it can be different if the driver produces multiple DriverBinding Protocols. \r
+  If the Drvier Binding Protocol interface is NULL, then ASSERT (). \r
+  If the installation fails, then ASSERT ().\r
+\r
+  @param  ImageHandle                 The image handle of the driver.\r
+  @param  SystemTable                 The EFI System Table that was passed to the driver's entry point.\r
+  @param  DriverBinding               A Driver Binding Protocol instance that this driver is producing.\r
+  @param  DriverBindingHandle         The handle that DriverBinding is to be installe onto.  If this\r
+                                      parameter is NULL, then a new handle is created.\r
+  @param  ComponentName               A Component Name Protocol instance that this driver is producing.\r
+  @param  ComponentName2              A Component Name 2 Protocol instance that this driver is producing.\r
+\r
+  @retval EFI_SUCCESS                 The protocol installation is completed successfully.\r
+  @retval Others                      Status from gBS->InstallMultipleProtocolInterfaces().\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+EfiLibInstallDriverBindingComponentName2 (\r
+  IN CONST EFI_HANDLE                         ImageHandle,\r
+  IN CONST EFI_SYSTEM_TABLE                   *SystemTable,\r
+  IN EFI_DRIVER_BINDING_PROTOCOL              *DriverBinding,\r
+  IN EFI_HANDLE                               DriverBindingHandle,\r
+  IN CONST EFI_COMPONENT_NAME_PROTOCOL        *ComponentName,       OPTIONAL\r
+  IN CONST EFI_COMPONENT_NAME2_PROTOCOL       *ComponentName2       OPTIONAL\r
+  )\r
+{\r
+  EFI_STATUS  Status;\r
+\r
+  ASSERT (NULL != DriverBinding);\r
+\r
+  if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
+    if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+      Status = gBS->InstallMultipleProtocolInterfaces (\r
+                      &DriverBindingHandle,\r
+                      &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                      NULL\r
+                      );\r
+      } else {\r
+      Status = gBS->InstallMultipleProtocolInterfaces (\r
+                      &DriverBindingHandle,\r
+                      &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                      &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                      NULL\r
+                      );\r
+     }\r
+  } else {\r
+     if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+       Status = gBS->InstallMultipleProtocolInterfaces (\r
+                       &DriverBindingHandle,\r
+                       &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                       &gEfiComponentNameProtocolGuid, ComponentName,\r
+                       NULL\r
+                       );\r
+     } else {\r
+       Status = gBS->InstallMultipleProtocolInterfaces (\r
+                       &DriverBindingHandle,\r
+                       &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                       &gEfiComponentNameProtocolGuid, ComponentName,\r
+                       &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                       NULL\r
+                       );\r
+    }\r
+  }\r
+  //\r
+  // ASSERT if the call to InstallMultipleProtocolInterfaces() failed\r
+  //\r
+  ASSERT_EFI_ERROR (Status);\r
+\r
+  //\r
+  // Update the ImageHandle and DriverBindingHandle fields of the Driver Binding Protocol\r
+  //\r
+  DriverBinding->ImageHandle         = ImageHandle;\r
+  DriverBinding->DriverBindingHandle = DriverBindingHandle;\r
+\r
+  return Status;\r
+}\r
+\r
+\r
+\r
 /**\r
-  Intialize a driver by installing the Driver Binding Protocol onto the\r
-  driver's DriverBindingHandle.  This is typically the same as the driver's\r
-  ImageHandle, but it can be different if the driver produces multiple\r
-  DriverBinding Protocols.  This function also initializes the EFI Driver\r
-  Library that initializes the global variables gST, gBS, gRT.\r
-\r
-  @ImageHandle                 The image handle of the driver\r
-  @SystemTable                 The EFI System Table that was passed to the driver's entry point\r
-  @DriverBinding               A Driver Binding Protocol instance that this driver is producing\r
-  @DriverBindingHandle         The handle that DriverBinding is to be installe onto.  If this\r
-                               parameter is NULL, then a new handle is created.\r
-  @ComponentName               A Component Name Protocol instance that this driver is producing\r
-  @DriverConfiguration         A Driver Configuration Protocol instance that this driver is producing\r
-  @DriverDiagnostics           A Driver Diagnostics Protocol instance that this driver is producing\r
-\r
-  @retval EFI_SUCCESS          DriverBinding is installed onto DriverBindingHandle\r
-  @retval Other                Status from gBS->InstallProtocolInterface()\r
+  Intialize a driver by installing the Driver Binding Protocol together with the optional Component Name,\r
+  Component Name 2, Driver Configure, Driver Diagnostic and Driver Diagnostic 2 Protocols onto the driver's\r
+  DriverBindingHandle.  This is typically the same as the driver's ImageHandle, but it can be different if\r
+  the driver produces multiple DriverBinding Protocols. \r
+  If the Drvier Binding Protocol interface is NULL, then ASSERT (). \r
+  If the installation fails, then ASSERT ().\r
+\r
+  @param  ImageHandle                 The image handle of the driver.\r
+  @param  SystemTable                 The EFI System Table that was passed to the driver's entry point.\r
+  @param  DriverBinding               A Driver Binding Protocol instance that this driver is producing.\r
+  @param  DriverBindingHandle         The handle that DriverBinding is to be installe onto.  If this\r
+                                      parameter is NULL, then a new handle is created.\r
+  @param  ComponentName               A Component Name Protocol instance that this driver is producing.\r
+  @param  ComponentName2              A Component Name 2 Protocol instance that this driver is producing.\r
+  @param  DriverConfiguration         A Driver Configuration Protocol instance that this driver is producing.\r
+  @param  DriverDiagnostics           A Driver Diagnostics Protocol instance that this driver is producing.\r
+  @param  DriverDiagnostics2          A Driver Diagnostics Protocol 2 instance that this driver is producing.\r
+\r
+  @retval EFI_SUCCESS                 The protocol installation is completed successfully.\r
+  @retval Others                      Status from gBS->InstallMultipleProtocolInterfaces().\r
 \r
 **/\r
 EFI_STATUS\r
 EFIAPI\r
 EfiLibInstallAllDriverProtocols2 (\r
-  IN const EFI_HANDLE                         ImageHandle,\r
-  IN const EFI_SYSTEM_TABLE                   *SystemTable,\r
+  IN CONST EFI_HANDLE                         ImageHandle,\r
+  IN CONST EFI_SYSTEM_TABLE                   *SystemTable,\r
   IN EFI_DRIVER_BINDING_PROTOCOL              *DriverBinding,\r
   IN EFI_HANDLE                               DriverBindingHandle,\r
-  IN const EFI_COMPONENT_NAME_PROTOCOL        *ComponentName,       OPTIONAL\r
-  IN const EFI_COMPONENT_NAME2_PROTOCOL       *ComponentName2,      OPTIONAL\r
-  IN const EFI_DRIVER_CONFIGURATION_PROTOCOL  *DriverConfiguration, OPTIONAL\r
-  IN const EFI_DRIVER_DIAGNOSTICS_PROTOCOL    *DriverDiagnostics,   OPTIONAL\r
-  IN const EFI_DRIVER_DIAGNOSTICS2_PROTOCOL   *DriverDiagnostics2   OPTIONAL\r
+  IN CONST EFI_COMPONENT_NAME_PROTOCOL        *ComponentName,       OPTIONAL\r
+  IN CONST EFI_COMPONENT_NAME2_PROTOCOL       *ComponentName2,      OPTIONAL\r
+  IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL  *DriverConfiguration, OPTIONAL\r
+  IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL    *DriverDiagnostics,   OPTIONAL\r
+  IN CONST EFI_DRIVER_DIAGNOSTICS2_PROTOCOL   *DriverDiagnostics2   OPTIONAL\r
   )\r
 {\r
   EFI_STATUS  Status;\r