]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Sync the UefiDriverModule.c with counter part in MdePkg
authorqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 7 Nov 2008 06:24:34 +0000 (06:24 +0000)
committerqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 7 Nov 2008 06:24:34 +0000 (06:24 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6420 6f19259b-4bc3-4df7-8a09-765794883524

IntelFrameworkPkg/Library/FrameworkUefiLib/UefiDriverModel.c

index c26599a37f756444ebe8031f984d17595ba6a19d..19af4965c20830fa674ce5cb4bab4a4197a5d191 100644 (file)
@@ -2,7 +2,7 @@
   Library functions that abstract driver model protocols\r
   installation.\r
 \r
-  Copyright (c) 2006 - 2007, Intel Corporation<BR> All rights\r
+  Copyright (c) 2006 - 2008, Intel Corporation<BR> All rights\r
   reserved. This program and the accompanying materials are\r
   licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at\r
@@ -43,7 +43,7 @@ EfiLibInstallDriverBinding (
 {\r
   EFI_STATUS  Status;\r
 \r
-  ASSERT (NULL != DriverBinding);\r
+  ASSERT (DriverBinding != NULL);\r
 \r
   Status = gBS->InstallMultipleProtocolInterfaces (\r
                   &DriverBindingHandle,\r
@@ -100,7 +100,7 @@ EfiLibInstallAllDriverProtocols (
 {\r
   EFI_STATUS  Status;\r
 \r
-  ASSERT (NULL != DriverBinding);\r
+  ASSERT (DriverBinding != NULL);\r
 \r
   if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {\r
     if (DriverConfiguration == NULL) {\r
@@ -224,7 +224,7 @@ EfiLibInstallDriverBindingComponentName2 (
 {\r
   EFI_STATUS  Status;\r
 \r
-  ASSERT (NULL != DriverBinding);\r
+  ASSERT (DriverBinding != NULL);\r
 \r
   if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
     if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
@@ -291,6 +291,7 @@ EfiLibInstallDriverBindingComponentName2 (
   @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  DriverConfiguration2        A Driver Configuration Protocol 2 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
@@ -305,351 +306,721 @@ EfiLibInstallAllDriverProtocols2 (
   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_CONFIGURATION_PROTOCOL  *DriverConfiguration2, 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
 \r
-  ASSERT (NULL != DriverBinding);\r
-\r
-  if (DriverConfiguration == NULL) {\r
-    if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {\r
-      if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {\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
+  ASSERT (DriverBinding != NULL); \r
+\r
+  if (DriverConfiguration2 == NULL) {\r
+    if (DriverConfiguration == NULL) {\r
+      if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {\r
+        if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {\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
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            NULL\r
-                            );\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
         } else {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            NULL\r
-                            );\r
+          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            }\r
           } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            NULL\r
-                            );\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            }\r
           }\r
         }\r
       } else {\r
-        if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
+        if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {\r
+          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              NULL\r
+                              );\r
+            }\r
           } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              NULL\r
+                              );\r
+            }\r
           }\r
         } else {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
+          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            }\r
           } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            }\r
           }\r
         }\r
       }\r
     } else {\r
-      if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {\r
-        if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            NULL\r
-                            );\r
+      if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {\r
+        if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {\r
+          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              NULL\r
+                              );\r
+            }\r
           } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            NULL\r
-                            );\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              NULL\r
+                              );\r
+            }\r
           }\r
         } else {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            NULL\r
-                            );\r
+          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            }\r
           } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            NULL\r
-                            );\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            }\r
           }\r
         }\r
       } else {\r
-        if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
+        if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {\r
+          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              NULL\r
+                              );\r
+            }\r
           } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              NULL\r
+                              );\r
+            }\r
           }\r
         } else {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
+          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            }\r
           } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            }\r
           }\r
         }\r
       }\r
     }\r
   } else {\r
-    if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {\r
-      if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {\r
-        if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            NULL\r
-                            );\r
+    if (DriverConfiguration == NULL) {\r
+      if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {\r
+        if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {\r
+          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              NULL\r
+                              );\r
+            }\r
           } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            NULL\r
-                            );\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              NULL\r
+                              );\r
+            }\r
           }\r
         } else {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            NULL\r
-                            );\r
+          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            }\r
           } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            NULL\r
-                            );\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            }\r
           }\r
         }\r
       } else {\r
-        if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
+        if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {\r
+          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              NULL\r
+                              );\r
+            }\r
           } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              NULL\r
+                              );\r
+            }\r
           }\r
         } else {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
+          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            }\r
           } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            }\r
           }\r
         }\r
       }\r
     } else {\r
-      if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {\r
-        if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            NULL\r
-                            );\r
+      if (DriverDiagnostics == NULL || FeaturePcdGet(PcdDriverDiagnosticsDisable)) {\r
+        if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {\r
+          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              NULL\r
+                              );\r
+            }\r
           } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            NULL\r
-                            );\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              NULL\r
+                              );\r
+            }\r
           }\r
         } else {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            NULL\r
-                            );\r
+          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            }\r
           } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            NULL\r
-                            );\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            }\r
           }\r
         }\r
       } else {\r
-        if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
+        if (DriverDiagnostics2 == NULL || FeaturePcdGet(PcdDriverDiagnostics2Disable)) {\r
+          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              NULL\r
+                              );\r
+            }\r
           } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              NULL\r
+                              );\r
+            }\r
           }\r
         } else {\r
-          if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
+          if (ComponentName == NULL || FeaturePcdGet(PcdComponentNameDisable)) {\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            }\r
           } else {\r
-            Status = gBS->InstallMultipleProtocolInterfaces (\r
-                            &DriverBindingHandle,\r
-                            &gEfiDriverBindingProtocolGuid, DriverBinding,\r
-                            &gEfiComponentNameProtocolGuid, ComponentName,\r
-                            &gEfiComponentName2ProtocolGuid, ComponentName2,\r
-                            &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
-                            &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
-                            &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
-                            NULL\r
-                            );\r
+            if (ComponentName2 == NULL || FeaturePcdGet(PcdComponentName2Disable)) {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            } else {\r
+              Status = gBS->InstallMultipleProtocolInterfaces (\r
+                              &DriverBindingHandle,\r
+                              &gEfiDriverBindingProtocolGuid, DriverBinding,\r
+                              &gEfiComponentNameProtocolGuid, ComponentName,\r
+                              &gEfiComponentName2ProtocolGuid, ComponentName2,\r
+                              &gEfiDriverConfigurationProtocolGuid, DriverConfiguration,\r
+                              &gEfiDriverConfiguration2ProtocolGuid, DriverConfiguration2,\r
+                              &gEfiDriverDiagnosticsProtocolGuid, DriverDiagnostics,\r
+                              &gEfiDriverDiagnostics2ProtocolGuid, DriverDiagnostics2,\r
+                              NULL\r
+                              );\r
+            }\r
           }\r
         }\r
       }\r
     }\r
   }\r
 \r
+\r
   //\r
   // ASSERT if the call to InstallMultipleProtocolInterfaces() failed\r
   //\r