/** @file\r
Main file for connect shell Driver1 function.\r
\r
- Copyright (c) 2015, Hewlett-Packard Development Company, L.P.<BR>\r
- Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>\r
+ (C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>\r
+ Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>\r
This program and the accompanying materials\r
are 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
EFI_STATUS Status;\r
EFI_HANDLE Handle;\r
EFI_HANDLE PreviousHandle;\r
- \r
+\r
if (DevicePathToConnect == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
PreviousHandle = NULL;\r
- do{ \r
+ do{\r
RemainingDevicePath = DevicePathToConnect;\r
Status = gBS->LocateDevicePath (&gEfiDevicePathProtocolGuid, &RemainingDevicePath, &Handle);\r
- \r
+\r
if (!EFI_ERROR (Status) && (Handle != NULL)) {\r
if (PreviousHandle == Handle) {\r
Status = EFI_NOT_FOUND;\r
Status = gBS->ConnectController (Handle, NULL, RemainingDevicePath, FALSE);\r
}\r
}\r
- \r
+\r
} while (!EFI_ERROR (Status) && !IsDevicePathEnd (RemainingDevicePath) );\r
- \r
+\r
return Status;\r
- \r
+\r
}\r
\r
/**\r
Connect drivers for PCI root bridge.\r
- \r
+\r
@retval EFI_SUCCESS Connect drivers successfully.\r
@retval EFI_NOT_FOUND Cannot find PCI root bridge device.\r
\r
ShellConnectPciRootBridge (\r
VOID\r
)\r
-{ \r
+{\r
UINTN RootBridgeHandleCount;\r
EFI_HANDLE *RootBridgeHandleBuffer;\r
UINTN RootBridgeIndex;\r
EFI_STATUS Status;\r
- \r
+\r
RootBridgeHandleCount = 0;\r
- \r
- Status = gBS->LocateHandleBuffer ( \r
- ByProtocol, \r
- &gEfiPciRootBridgeIoProtocolGuid, \r
- NULL, \r
- &RootBridgeHandleCount, \r
- &RootBridgeHandleBuffer \r
+\r
+ Status = gBS->LocateHandleBuffer (\r
+ ByProtocol,\r
+ &gEfiPciRootBridgeIoProtocolGuid,\r
+ NULL,\r
+ &RootBridgeHandleCount,\r
+ &RootBridgeHandleBuffer\r
);\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
- \r
- for (RootBridgeIndex = 0; RootBridgeIndex < RootBridgeHandleCount; RootBridgeIndex++) { \r
- gBS->ConnectController (RootBridgeHandleBuffer[RootBridgeIndex], NULL, NULL, FALSE); \r
- } \r
+\r
+ for (RootBridgeIndex = 0; RootBridgeIndex < RootBridgeHandleCount; RootBridgeIndex++) {\r
+ gBS->ConnectController (RootBridgeHandleBuffer[RootBridgeIndex], NULL, NULL, FALSE);\r
+ }\r
\r
FreePool (RootBridgeHandleBuffer);\r
- \r
+\r
return EFI_SUCCESS;\r
}\r
\r
@retval EFI_SUCCESS The operation was successful.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
ConnectControllers (\r
IN CONST EFI_HANDLE ControllerHandle OPTIONAL,\r
IN CONST EFI_HANDLE DriverHandle OPTIONAL,\r
@retval EFI_SUCCESS The operation was successful.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
ShellConnectFromDevPaths (\r
IN CONST CHAR16 *Key\r
)\r
{\r
EFI_DEVICE_PATH_PROTOCOL *DevPath;\r
EFI_DEVICE_PATH_PROTOCOL *CopyOfDevPath;\r
- EFI_DEVICE_PATH_PROTOCOL *Instance; \r
+ EFI_DEVICE_PATH_PROTOCOL *Instance;\r
EFI_DEVICE_PATH_PROTOCOL *Next;\r
UINTN Length;\r
UINTN Index;\r
BOOLEAN AtLeastOneConnected;\r
EFI_PCI_IO_PROTOCOL *PciIo;\r
UINT8 Class[3];\r
- \r
+\r
DevPath = NULL;\r
Length = 0;\r
AtLeastOneConnected = FALSE;\r
((DevicePathSubType (Instance) == MSG_USB_CLASS_DP)\r
|| (DevicePathSubType (Instance) == MSG_USB_WWID_DP)\r
)) {\r
- \r
+\r
Status = ShellConnectPciRootBridge ();\r
if (EFI_ERROR(Status)) {\r
FreePool(Instance);\r
FreePool(DevPath);\r
return Status;\r
}\r
- \r
+\r
Status = gBS->LocateHandleBuffer (\r
ByProtocol,\r
&gEfiPciIoProtocolGuid,\r
&HandleArrayCount,\r
&HandleArray\r
);\r
- \r
+\r
if (!EFI_ERROR (Status)) {\r
for (Index = 0; Index < HandleArrayCount; Index++) {\r
Status = gBS->HandleProtocol (\r
&gEfiPciIoProtocolGuid,\r
(VOID **)&PciIo\r
);\r
- \r
+\r
if (!EFI_ERROR (Status)) {\r
Status = PciIo->Pci.Read (PciIo, EfiPciIoWidthUint8, 0x09, 3, &Class);\r
if (!EFI_ERROR (Status)) {\r
if (HandleArray != NULL) {\r
FreePool (HandleArray);\r
}\r
- } else { \r
+ } else {\r
//\r
// connect the entire device path\r
//\r
}\r
}\r
FreePool (Instance);\r
- \r
+\r
} while (CopyOfDevPath != NULL);\r
- \r
+\r
if (DevPath != NULL) {\r
FreePool(DevPath);\r
}\r
} else {\r
return EFI_NOT_FOUND;\r
}\r
- \r
+\r
}\r
\r
/**\r
@retval EFI_SUCCESS The operation was successful.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
ConvertAndConnectControllers (\r
IN EFI_HANDLE *Handle1 OPTIONAL,\r
IN EFI_HANDLE *Handle2 OPTIONAL,\r
Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);\r
if (EFI_ERROR(Status)) {\r
if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDriver1HiiHandle, L"connect", ProblemParam); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDriver1HiiHandle, L"connect", ProblemParam);\r
FreePool(ProblemParam);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
//\r
Count = (gInReconnect?0x4:0x3);\r
if ((ShellCommandLineGetCount(Package) > Count)\r
- ||((ShellCommandLineGetFlag(Package, L"-r") || ShellCommandLineGetFlag(Package, L"-c")) && ShellCommandLineGetCount(Package)>1)\r
+ ||(ShellCommandLineGetFlag(Package, L"-c") && ShellCommandLineGetCount(Package)>1)\r
+ ||(ShellCommandLineGetFlag(Package, L"-r") && ShellCommandLineGetCount(Package)>2)\r
||(ShellCommandLineGetFlag(Package, L"-r") && ShellCommandLineGetFlag(Package, L"-c") )\r
- ){\r
+ ){\r
//\r
// error for too many parameters\r
//\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDriver1HiiHandle, L"connect"); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDriver1HiiHandle, L"connect");\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else if (ShellCommandLineGetFlag(Package, L"-c")) {\r
//\r
Status = ShellConvertStringToUint64(Param1, &Intermediate, TRUE, FALSE);\r
Handle1 = ConvertHandleIndexToHandle((UINTN)Intermediate);\r
if (EFI_ERROR(Status)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, L"connect", Param1); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, L"connect", Param1);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
}\r
} else {\r
Status = ShellConvertStringToUint64(Param2, &Intermediate, TRUE, FALSE);\r
Handle2 = ConvertHandleIndexToHandle((UINTN)Intermediate);\r
if (EFI_ERROR(Status)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, L"connect", Param2); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, L"connect", Param2);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
}\r
} else {\r
Handle2 = NULL;\r
}\r
- \r
+\r
if (ShellStatus == SHELL_SUCCESS) {\r
if (Param1 != NULL && Handle1 == NULL){\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, L"connect", Param1); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, L"connect", Param1);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else if (Param2 != NULL && Handle2 == NULL) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, L"connect", Param2); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, L"connect", Param2);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else if (Handle2 != NULL && Handle1 != NULL && EFI_ERROR(gBS->OpenProtocol(Handle2, &gEfiDriverBindingProtocolGuid, NULL, gImageHandle, NULL, EFI_OPEN_PROTOCOL_TEST_PROTOCOL))) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, L"connect", Param2); \r
+ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, L"connect", Param2);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
Status = ConvertAndConnectControllers(Handle1, Handle2, ShellCommandLineGetFlag(Package, L"-r"), (BOOLEAN)(Count!=0));\r