EFI_STATUS PlatformBdsConnectConsole ( IN BDS_CONSOLE_CONNECT_ENTRY *PlatformConsole ) /*++ Routine Description: Connect the predefined platform default console device. Always try to find and enable the vga device if have. Arguments: PlatformConsole - Predfined platform default console device array. Returns: EFI_SUCCESS - Success connect at least one ConIn and ConOut device, there must have one ConOut device is active vga device. EFI_STATUS - Return the status of BdsLibConnectAllDefaultConsoles () --*/ { EFI_STATUS Status; UINTN Index; EFI_DEVICE_PATH_PROTOCOL *VarConout; EFI_DEVICE_PATH_PROTOCOL *VarConin; UINTN DevicePathSize; // // Connect RootBridge // VarConout = BdsLibGetVariableAndSize ( VarConsoleOut, &gEfiGlobalVariableGuid, &DevicePathSize ); VarConin = BdsLibGetVariableAndSize ( VarConsoleInp, &gEfiGlobalVariableGuid, &DevicePathSize ); if (VarConout == NULL || VarConin == NULL) { // // Do platform specific PCI Device check and add them to ConOut, ConIn, ErrOut // DetectAndPreparePlatformPciDevicePaths (FALSE); // // Have chance to connect the platform default console, // the platform default console is the minimue device group // the platform should support // for (Index = 0; PlatformConsole[Index].DevicePath != NULL; ++Index) { // // Update the console variable with the connect type // if ((PlatformConsole[Index].ConnectType & CONSOLE_IN) == CONSOLE_IN) { BdsLibUpdateConsoleVariable (VarConsoleInp, PlatformConsole[Index].DevicePath, NULL); } if ((PlatformConsole[Index].ConnectType & CONSOLE_OUT) == CONSOLE_OUT) { BdsLibUpdateConsoleVariable (VarConsoleOut, PlatformConsole[Index].DevicePath, NULL); } if ((PlatformConsole[Index].ConnectType & STD_ERROR) == STD_ERROR) { BdsLibUpdateConsoleVariable (VarErrorOut, PlatformConsole[Index].DevicePath, NULL); } } } else { // // Only detect VGA device and add them to ConOut // DetectAndPreparePlatformPciDevicePaths (TRUE); } // // Connect the all the default console with current cosole variable // Status = BdsLibConnectAllDefaultConsoles (); if (EFI_ERROR (Status)) { return Status; } return EFI_SUCCESS; }
/** Connect the predefined platform default console device. Always try to find and enable the vga device if have. @param PlatformConsole Predefined platform default console device array. @retval EFI_SUCCESS Success connect at least one ConIn and ConOut device, there must have one ConOut device is active vga device. @return Return the status of BdsLibConnectAllDefaultConsoles () **/ EFI_STATUS PlatformBdsConnectConsole ( IN BDS_CONSOLE_CONNECT_ENTRY *PlatformConsole ) { EFI_STATUS Status; UINTN Index; EFI_DEVICE_PATH_PROTOCOL *VarConout; EFI_DEVICE_PATH_PROTOCOL *VarConin; UINTN DevicePathSize; // // Connect RootBridge // VarConout = BdsLibGetVariableAndSize ( VarConsoleOut, &gEfiGlobalVariableGuid, &DevicePathSize ); VarConin = BdsLibGetVariableAndSize ( VarConsoleInp, &gEfiGlobalVariableGuid, &DevicePathSize ); if (VarConout == NULL || VarConin == NULL) { // // Do platform specific PCI Device check and add them to ConOut, ConIn, ErrOut // DetectAndPreparePlatformPciDevicePaths (FALSE); // // Have chance to connect the platform default console, // the platform default console is the minimue device group // the platform should support // for (Index = 0; PlatformConsole[Index].DevicePath != NULL; ++Index) { // // Update the console variable with the connect type // if ((PlatformConsole[Index].ConnectType & CONSOLE_IN) == CONSOLE_IN) { BdsLibUpdateConsoleVariable (VarConsoleInp, PlatformConsole[Index].DevicePath, NULL); } if ((PlatformConsole[Index].ConnectType & CONSOLE_OUT) == CONSOLE_OUT) { BdsLibUpdateConsoleVariable (VarConsoleOut, PlatformConsole[Index].DevicePath, NULL); } if ((PlatformConsole[Index].ConnectType & STD_ERROR) == STD_ERROR) { BdsLibUpdateConsoleVariable (VarErrorOut, PlatformConsole[Index].DevicePath, NULL); } } } else { // // Only detect VGA device and add them to ConOut // DetectAndPreparePlatformPciDevicePaths (TRUE); } // // Connect the all the default console with current cosole variable // Status = BdsLibConnectAllDefaultConsoles (); if (EFI_ERROR (Status)) { return Status; } return EFI_SUCCESS; }