From nobody Mon Feb 9 12:27:02 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+90595+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+90595+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1655525160; cv=none; d=zohomail.com; s=zohoarc; b=ThMPzAo4TAcN2Ig/OlDZMuOeFi9X7uoI2Kq1NpS9jkITmVWTDEAsgM6A+rBVFtkeL1UwyUbYsTK+WBtavKQE9n2YgYxyW2kLhdtP0nd0V+rzB92zm8llw6s6JUxuRhulbj7eWHSy9oGfyVnUuRulfkNdxhgw51oP4R8yscXQkp0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1655525160; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=XyLk6usAfsANlkGt/NgQhTiPj/tM32wcZ1lnzr9s9XQ=; b=VqRtL9/kFliFbe85agdun7zs0RJKPizstQXbV++BKQQD3ODOdmwjMSzPLn7PpWQJM+WwFcSoBB653FsPVq3vzAblSahkncvVHvqe8qNsr7PxPkJ4eAMuyFUfvWOehZZ7C5dyPC7c9wZBFr4AKXo1T3zlhpmWXtflpUuL5ew18VQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+90595+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1655525160302245.93519937147994; Fri, 17 Jun 2022 21:06:00 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id DLceYY1788612xnMeTlWsVJH; Fri, 17 Jun 2022 21:05:59 -0700 X-Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mx.groups.io with SMTP id smtpd.web09.6192.1655525155936388213 for ; Fri, 17 Jun 2022 21:05:57 -0700 X-IronPort-AV: E=McAfee;i="6400,9594,10380"; a="305057852" X-IronPort-AV: E=Sophos;i="5.92,306,1650956400"; d="scan'208";a="305057852" X-Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Jun 2022 21:05:55 -0700 X-IronPort-AV: E=Sophos;i="5.92,306,1650956400"; d="scan'208";a="613763927" X-Received: from nldesimo-desk1.amr.corp.intel.com ([10.7.159.54]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Jun 2022 21:05:55 -0700 From: "Nate DeSimone" To: devel@edk2.groups.io Cc: Eric Dong , Isaac Oram , Liming Gao , Sai Chaganty , Benjamin Doron , Michael Kubacki , Jeremy Soller Subject: [edk2-devel] [edk2-platforms] [PATCH V1 4/5] BoardModulePkg: Add BdsSerialPortTerminalLib Date: Fri, 17 Jun 2022 21:05:49 -0700 Message-Id: <20220618040550.8467-5-nathaniel.l.desimone@intel.com> In-Reply-To: <20220618040550.8467-1-nathaniel.l.desimone@intel.com> References: <20220618040550.8467-1-nathaniel.l.desimone@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,nathaniel.l.desimone@intel.com X-Gm-Message-State: Vn8cZWNP2uYZjfWAI3WGa2cxx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1655525159; bh=lTXnuBKyeENw6gAAM4LnPkp53PPzTZpeWajIvYM6aUQ=; h=Cc:Date:From:Reply-To:Subject:To; b=OcrJpbYzTI0K/lK6Vqg+AqQ+AQcBt1ZurCLP5o1x0b3tZpPNWSbTgSGBKeArQo6Y/N4 gKBr0hC47dUvtpD3z+ag2PIe+rCvf1eyFbELrN2gWvqnpwlPy4Ud988Fq9/TEDpFrTk8b 1GHDVkLzzidScj7J8cufsqtxwp//jn3GWDg= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1655525160557100011 Content-Type: text/plain; charset="utf-8" BdsSerialPortTerminalLib add a terminal device to the Serial UART device created by MdeModulePkg/Universal/SerialDxe to the UEFI Console Variables (ConIn, ConOut, ErrOut). This allows BIOS Setup, UEFI Shell, etc. to be used on a headless system via a null modem and terminal emulation software. Cc: Eric Dong Cc: Isaac Oram Cc: Liming Gao Cc: Sai Chaganty Cc: Benjamin Doron Cc: Michael Kubacki Cc: Jeremy Soller Signed-off-by: Nate DeSimone --- .../Intel/BoardModulePkg/BoardModulePkg.dsc | 3 +- .../BdsSerialPortTerminalLib.c | 114 ++++++++++++++++++ .../BdsSerialPortTerminalLib.h | 53 ++++++++ .../BdsSerialPortTerminalLib.inf | 49 ++++++++ 4 files changed, 218 insertions(+), 1 deletion(-) create mode 100644 Platform/Intel/BoardModulePkg/Library/BdsSerialPortTerm= inalLib/BdsSerialPortTerminalLib.c create mode 100644 Platform/Intel/BoardModulePkg/Library/BdsSerialPortTerm= inalLib/BdsSerialPortTerminalLib.h create mode 100644 Platform/Intel/BoardModulePkg/Library/BdsSerialPortTerm= inalLib/BdsSerialPortTerminalLib.inf diff --git a/Platform/Intel/BoardModulePkg/BoardModulePkg.dsc b/Platform/In= tel/BoardModulePkg/BoardModulePkg.dsc index 9f00592a19..c93b536f0d 100644 --- a/Platform/Intel/BoardModulePkg/BoardModulePkg.dsc +++ b/Platform/Intel/BoardModulePkg/BoardModulePkg.dsc @@ -6,7 +6,7 @@ # INF files to generate AutoGen.c and AutoGen.h files # for the build infrastructure. # -# Copyright (c) 2019 - 2021, Intel Corporation. All rights reserved.
+# Copyright (c) 2019 - 2022, Intel Corporation. All rights reserved.
# # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -91,3 +91,4 @@ =20 BoardModulePkg/Library/PeiFirmwareBootMediaInfoLib/PeiFirmwareBootMediaI= nfoLib.inf BoardModulePkg/Library/BdsPs2KbcLib/BdsPs2KbcLib.inf + BoardModulePkg/Library/BdsSerialPortTerminalLib/BdsSerialPortTerminalLib= .inf diff --git a/Platform/Intel/BoardModulePkg/Library/BdsSerialPortTerminalLib= /BdsSerialPortTerminalLib.c b/Platform/Intel/BoardModulePkg/Library/BdsSeri= alPortTerminalLib/BdsSerialPortTerminalLib.c new file mode 100644 index 0000000000..178ca2b3ac --- /dev/null +++ b/Platform/Intel/BoardModulePkg/Library/BdsSerialPortTerminalLib/BdsSer= ialPortTerminalLib.c @@ -0,0 +1,114 @@ +/** @file + Main file for NULL named library that adds a Terminal Device connected + to SerialDxe to the UEFI Console Variables. This allows BIOS Setup, UEFI + Shell, etc. to be used on a headless system via a null modem and terminal + emulator. + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "BdsSerialPortTerminalLib.h" + +GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID *mTerminalType[] =3D { + &gEfiPcAnsiGuid, + &gEfiVT100Guid, + &gEfiVT100PlusGuid, + &gEfiVTUTF8Guid, + &gEfiTtyTermGuid +}; + +GLOBAL_REMOVE_IF_UNREFERENCED SERIAL_DEVICE_PATH mSerialDevicePath =3D { + { + { + HARDWARE_DEVICE_PATH, + HW_VENDOR_DP, + { + (UINT8) sizeof (VENDOR_DEVICE_PATH), + (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) + } + }, + EDKII_SERIAL_PORT_LIB_VENDOR_GUID + }, + { + { + MESSAGING_DEVICE_PATH, + MSG_UART_DP, + { + (UINT8) sizeof (UART_DEVICE_PATH), + (UINT8) ((sizeof (UART_DEVICE_PATH)) >> 8) + } + }, + 0, // Reserved + 115200, // BaudRate + 8, // DataBits + 1, // Parity + 1 // StopBits + }, + { + { + MESSAGING_DEVICE_PATH, + MSG_VENDOR_DP, + { + (UINT8) (sizeof (VENDOR_DEVICE_PATH)), + (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8), + } + }, + DEVICE_PATH_MESSAGING_PC_ANSI + }, + gEndEntire +}; + +/** + Updates the ConOut, ConIn, ErrOut variables with the serial terminal dev= ice path + @param none + @retval none +**/ +VOID +AddSerialTerminal ( + VOID + ) +{ + DEBUG ((DEBUG_INFO, "[AddSerialPortTerminal]\n")); + + // + // Update the Terminal Device Configuration Parameters + // + mSerialDevicePath.Uart.BaudRate =3D PcdGet64 (PcdUartDefaultBaudRate); + mSerialDevicePath.Uart.DataBits =3D PcdGet8 (PcdUartDefaultDataBits); + mSerialDevicePath.Uart.Parity =3D PcdGet8 (PcdUartDefaultParity); + mSerialDevicePath.Uart.StopBits =3D PcdGet8 (PcdUartDefaultStopBits); + CopyMem ( + (VOID *) &(mSerialDevicePath.TerminalType.Guid), + (VOID *) mTerminalType[PcdGet8 (PcdDefaultTerminalType)], + sizeof (EFI_GUID) + ); + + // + // Append Serial Terminal into "ConIn", "ConOut", and "ErrOut" + // + EfiBootManagerUpdateConsoleVariable (ConOut, (EFI_DEVICE_PATH_PROTOCOL *= ) &mSerialDevicePath, NULL); + EfiBootManagerUpdateConsoleVariable (ConIn, (EFI_DEVICE_PATH_PROTOCOL *)= &mSerialDevicePath, NULL); + EfiBootManagerUpdateConsoleVariable (ErrOut, (EFI_DEVICE_PATH_PROTOCOL *= ) &mSerialDevicePath, NULL); +} + +/** + Constructor for the Serial Port Terminal Device library. + + @param ImageHandle The Image Handle of the process + @param SystemTable The EFI System Table pointer + + @retval EFI_SUCCESS The Serial Port Terminal Device was installed succ= essfully +**/ +EFI_STATUS +EFIAPI +SerialPortTerminalLibConstructor ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + AddSerialTerminal (); + + return EFI_SUCCESS; +} diff --git a/Platform/Intel/BoardModulePkg/Library/BdsSerialPortTerminalLib= /BdsSerialPortTerminalLib.h b/Platform/Intel/BoardModulePkg/Library/BdsSeri= alPortTerminalLib/BdsSerialPortTerminalLib.h new file mode 100644 index 0000000000..39d6486712 --- /dev/null +++ b/Platform/Intel/BoardModulePkg/Library/BdsSerialPortTerminalLib/BdsSer= ialPortTerminalLib.h @@ -0,0 +1,53 @@ +/** @file + Header file for NULL named library that adds a Terminal Device + connected to SerialDxe to the UEFI Console Variables. This allows BIOS S= etup, + UEFI Shell, etc. to be used on a headless system via a null modem and te= rminal + emulator. + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef BDS_SERIAL_PORT_TERMINAL_LIB_H_ +#define BDS_SERIAL_PORT_TERMINAL_LIB_H_ + +#include +#include +#include +#include +#include +#include +#include +#include + +// +// Below is the platform console device path +// +typedef struct { + VENDOR_DEVICE_PATH Guid; + UART_DEVICE_PATH Uart; + VENDOR_DEVICE_PATH TerminalType; + EFI_DEVICE_PATH_PROTOCOL End; +} SERIAL_DEVICE_PATH; + +#define gPciRootBridge \ + { \ + { \ + ACPI_DEVICE_PATH, \ + ACPI_DP, \ + { \ + (UINT8) (sizeof (ACPI_HID_DEVICE_PATH)), \ + (UINT8) ((sizeof (ACPI_HID_DEVICE_PATH)) >> 8) \ + }, \ + }, \ + EISA_PNP_ID (0x0A03), \ + 0 \ + } + +#define gEndEntire \ + { \ + END_DEVICE_PATH_TYPE, END_ENTIRE_DEVICE_PATH_SUBTYPE, { END_DEVICE_PAT= H_LENGTH, 0 } \ + } + +#endif diff --git a/Platform/Intel/BoardModulePkg/Library/BdsSerialPortTerminalLib= /BdsSerialPortTerminalLib.inf b/Platform/Intel/BoardModulePkg/Library/BdsSe= rialPortTerminalLib/BdsSerialPortTerminalLib.inf new file mode 100644 index 0000000000..befaeee3e5 --- /dev/null +++ b/Platform/Intel/BoardModulePkg/Library/BdsSerialPortTerminalLib/BdsSer= ialPortTerminalLib.inf @@ -0,0 +1,49 @@ +## @file +# Component information file for NULL named library that adds a Terminal D= evice +# connected to SerialDxe to the UEFI Console Variables. This allows BIOS +# Setup, UEFI Shell, etc. to be used on a headless system via a null modem= and +# terminal emulator. +# +# Copyright (c) 2022, Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## +[Defines] + INF_VERSION =3D 0x00010006 + BASE_NAME =3D SerialPortTerminalLib + FILE_GUID =3D E12BFA46-95F2-4ADC-9774-7E38DE78741E + MODULE_TYPE =3D UEFI_DRIVER + VERSION_STRING =3D 1.2 + LIBRARY_CLASS =3D NULL|UEFI_DRIVER + CONSTRUCTOR =3D SerialPortTerminalLibConstructor + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + +[Sources] + BdsSerialPortTerminalLib.c + BdsSerialPortTerminalLib.h + +[LibraryClasses] + BaseMemoryLib + DevicePathLib + DebugLib + UefiDriverEntryPoint + UefiBootManagerLib + UefiLib + +[Guids] + gEfiPcAnsiGuid + gEfiVT100Guid + gEfiVT100PlusGuid + gEfiVTUTF8Guid + gEfiTtyTermGuid + +[Pcd] + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultDataBits + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits + gEfiMdePkgTokenSpaceGuid.PcdDefaultTerminalType --=20 2.27.0.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#90595): https://edk2.groups.io/g/devel/message/90595 Mute This Topic: https://groups.io/mt/91835976/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-