public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Nate DeSimone" <nathaniel.l.desimone@intel.com>
To: devel@edk2.groups.io
Cc: Chasel Chiu <chasel.chiu@intel.com>,
	Sai Chaganty <rangasai.v.chaganty@intel.com>,
	Isaac Oram <isaac.w.oram@intel.com>,
	Benjamin Doron <benjamin.doron00@gmail.com>,
	Michael Kubacki <michael.kubacki@microsoft.com>,
	Jeremy Soller <jeremy@system76.com>
Subject: [edk2-platforms] [PATCH V1 3/5] KabylakeOpenBoardPkg: Add SecBoardInitLib
Date: Fri, 17 Jun 2022 21:05:48 -0700	[thread overview]
Message-ID: <20220618040550.8467-4-nathaniel.l.desimone@intel.com> (raw)
In-Reply-To: <20220618040550.8467-1-nathaniel.l.desimone@intel.com>

Adds a board-specific implementation of SecBoardInitLib.
This implementation will invoke the GPIO initialization
routine for the HDMI DDC Bus if the HDMI DDC Bus is being
used for debug log output. Adds PCDs for enable/disable
of using HDMI DDC I2C Bus as a Serial Port.

Cc: Chasel Chiu <chasel.chiu@intel.com>
Cc: Sai Chaganty <rangasai.v.chaganty@intel.com>
Cc: Isaac Oram <isaac.w.oram@intel.com>
Cc: Benjamin Doron <benjamin.doron00@gmail.com>
Cc: Michael Kubacki <michael.kubacki@microsoft.com>
Cc: Jeremy Soller <jeremy@system76.com>
Signed-off-by: Nate DeSimone <nathaniel.l.desimone@intel.com>
---
 .../PeiAspireVn7Dash572GInitPreMemLib.c       |  3 +-
 .../AspireVn7Dash572G/OpenBoardPkg.dsc        |  8 +++-
 .../BoardInitLib/PeiGalagoPro3InitPreMemLib.c | 13 ++-----
 .../GalagoPro3/OpenBoardPkg.dsc               |  7 +++-
 .../PeiKabylakeRvp3InitPreMemLib.c            | 13 ++-----
 .../KabylakeRvp3/OpenBoardPkg.dsc             |  8 +++-
 .../SecBoardInitLib/Ia32/SecBoardInit.nasm    | 18 +++++++++
 .../Library/SecBoardInitLib/SecBoardInitLib.c | 35 +++++++++++++++++
 .../SecBoardInitLib/SecBoardInitLib.inf       | 39 +++++++++++++++++++
 .../KabylakeOpenBoardPkg/OpenBoardPkg.dec     | 18 +++++++++
 10 files changed, 137 insertions(+), 25 deletions(-)
 create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/SecBoardInitLib/Ia32/SecBoardInit.nasm
 create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/SecBoardInitLib/SecBoardInitLib.c
 create mode 100644 Platform/Intel/KabylakeOpenBoardPkg/Library/SecBoardInitLib/SecBoardInitLib.inf

diff --git a/Platform/Intel/KabylakeOpenBoardPkg/AspireVn7Dash572G/Library/BoardInitLib/PeiAspireVn7Dash572GInitPreMemLib.c b/Platform/Intel/KabylakeOpenBoardPkg/AspireVn7Dash572G/Library/BoardInitLib/PeiAspireVn7Dash572GInitPreMemLib.c
index d17685be82..1c9a65399b 100644
--- a/Platform/Intel/KabylakeOpenBoardPkg/AspireVn7Dash572G/Library/BoardInitLib/PeiAspireVn7Dash572GInitPreMemLib.c
+++ b/Platform/Intel/KabylakeOpenBoardPkg/AspireVn7Dash572G/Library/BoardInitLib/PeiAspireVn7Dash572GInitPreMemLib.c
@@ -1,6 +1,6 @@
 /** @file
 
-Copyright (c) 2017 - 2021, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2017 - 2022, Intel Corporation. All rights reserved.<BR>
 SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
@@ -251,7 +251,6 @@ AspireVn7Dash572GBoardDebugInit (
   ///
   /// Do Early PCH init
   ///
-  EarlySiliconInit ();
   LpcInit ();
 
   // NB: MinPlatform specification defines platform initialisation flow.
diff --git a/Platform/Intel/KabylakeOpenBoardPkg/AspireVn7Dash572G/OpenBoardPkg.dsc b/Platform/Intel/KabylakeOpenBoardPkg/AspireVn7Dash572G/OpenBoardPkg.dsc
index ec5591e00f..261f141056 100644
--- a/Platform/Intel/KabylakeOpenBoardPkg/AspireVn7Dash572G/OpenBoardPkg.dsc
+++ b/Platform/Intel/KabylakeOpenBoardPkg/AspireVn7Dash572G/OpenBoardPkg.dsc
@@ -209,8 +209,12 @@
   # Platform Package
   #######################################
   TestPointCheckLib|$(PLATFORM_PACKAGE)/Test/Library/TestPointCheckLib/SecTestPointCheckLib.inf
-  SecBoardInitLib|$(PLATFORM_PACKAGE)/PlatformInit/Library/SecBoardInitLibNull/SecBoardInitLibNull.inf
-  SiliconPolicyUpdateLib|MinPlatformPkg/PlatformInit/Library/SiliconPolicyUpdateLibNull/SiliconPolicyUpdateLibNull.inf
+  SiliconPolicyUpdateLib|$(PLATFORM_PACKAGE)/PlatformInit/Library/SiliconPolicyUpdateLibNull/SiliconPolicyUpdateLibNull.inf
+
+  #######################################
+  # Board-specific
+  #######################################
+  SecBoardInitLib|$(PLATFORM_BOARD_PACKAGE)/Library/SecBoardInitLib/SecBoardInitLib.inf
 
 [LibraryClasses.common.PEI_CORE]
   #######################################
diff --git a/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/Library/BoardInitLib/PeiGalagoPro3InitPreMemLib.c b/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/Library/BoardInitLib/PeiGalagoPro3InitPreMemLib.c
index f4833149f3..051dac0b20 100644
--- a/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/Library/BoardInitLib/PeiGalagoPro3InitPreMemLib.c
+++ b/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/Library/BoardInitLib/PeiGalagoPro3InitPreMemLib.c
@@ -1,7 +1,7 @@
 /** @file
   System 76 GalagoPro3 board pre-memory initialization.
 
-Copyright (c) 2019 - 2021, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2019 - 2022, Intel Corporation. All rights reserved.<BR>
 SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
@@ -167,9 +167,9 @@ SioInit (
 }
 
 /**
-  Configues the IC2 Controller on which GPIO Expander Communicates.
-  This Function is to enable the I2CGPIOExapanderLib to programm the Gpios
-  Complete intilization will be done in later Stage
+  Configures the IC2 Controller on which GPIO Expander Communicates.
+  This Function is to enable the I2CGPIOExapanderLib to program the Gpios
+  Complete initialization will be done in later Stage
 
 **/
 VOID
@@ -227,10 +227,6 @@ GalagoPro3BoardDebugInit (
   VOID
   )
 {
-  ///
-  /// Do Early PCH init
-  ///
-  EarlySiliconInit ();
   return EFI_SUCCESS;
 }
 
@@ -242,4 +238,3 @@ GalagoPro3BoardBootModeDetect (
 {
   return BOOT_WITH_FULL_CONFIGURATION;
 }
-
diff --git a/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.dsc b/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.dsc
index 1df3cf13a3..5cf2d424ff 100644
--- a/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.dsc
+++ b/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.dsc
@@ -152,8 +152,13 @@
   #######################################
   # Platform Package
   #######################################
-  SecBoardInitLib|$(PLATFORM_PACKAGE)/PlatformInit/Library/SecBoardInitLibNull/SecBoardInitLibNull.inf
   TestPointCheckLib|$(PLATFORM_PACKAGE)/Test/Library/TestPointCheckLib/SecTestPointCheckLib.inf
+  SiliconPolicyUpdateLib|$(PLATFORM_PACKAGE)/PlatformInit/Library/SiliconPolicyUpdateLibNull/SiliconPolicyUpdateLibNull.inf
+
+  #######################################
+  # Board-specific
+  #######################################
+  SecBoardInitLib|$(PLATFORM_BOARD_PACKAGE)/Library/SecBoardInitLib/SecBoardInitLib.inf
 
 [LibraryClasses.common.PEIM]
   #######################################
diff --git a/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/Library/BoardInitLib/PeiKabylakeRvp3InitPreMemLib.c b/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/Library/BoardInitLib/PeiKabylakeRvp3InitPreMemLib.c
index d34b0be3c7..87ae3b531e 100644
--- a/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/Library/BoardInitLib/PeiKabylakeRvp3InitPreMemLib.c
+++ b/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/Library/BoardInitLib/PeiKabylakeRvp3InitPreMemLib.c
@@ -1,6 +1,6 @@
 /** @file
 
-Copyright (c) 2017 - 2021, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2017 - 2022, Intel Corporation. All rights reserved.<BR>
 SPDX-License-Identifier: BSD-2-Clause-Patent
 
 **/
@@ -257,9 +257,9 @@ SioInit (
 }
 
 /**
-  Configues the IC2 Controller on which GPIO Expander Communicates.
-  This Function is to enable the I2CGPIOExapanderLib to programm the Gpios
-  Complete intilization will be done in later Stage
+  Configures the IC2 Controller on which GPIO Expander Communicates.
+  This Function is to enable the I2CGPIOExapanderLib to program the Gpios
+  Complete initialization will be done in later Stage
 
 **/
 VOID
@@ -321,10 +321,6 @@ KabylakeRvp3BoardDebugInit (
   VOID
   )
 {
-  ///
-  /// Do Early PCH init
-  ///
-  EarlySiliconInit ();
   return EFI_SUCCESS;
 }
 
@@ -336,4 +332,3 @@ KabylakeRvp3BoardBootModeDetect (
 {
   return BOOT_WITH_FULL_CONFIGURATION;
 }
-
diff --git a/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.dsc b/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.dsc
index 1f2950be72..26a54b0dc7 100644
--- a/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.dsc
+++ b/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.dsc
@@ -189,8 +189,12 @@
   # Platform Package
   #######################################
   TestPointCheckLib|$(PLATFORM_PACKAGE)/Test/Library/TestPointCheckLib/SecTestPointCheckLib.inf
-  SecBoardInitLib|$(PLATFORM_PACKAGE)/PlatformInit/Library/SecBoardInitLibNull/SecBoardInitLibNull.inf
-  SiliconPolicyUpdateLib|MinPlatformPkg/PlatformInit/Library/SiliconPolicyUpdateLibNull/SiliconPolicyUpdateLibNull.inf
+  SiliconPolicyUpdateLib|$(PLATFORM_PACKAGE)/PlatformInit/Library/SiliconPolicyUpdateLibNull/SiliconPolicyUpdateLibNull.inf
+
+  #######################################
+  # Board-specific
+  #######################################
+  SecBoardInitLib|$(PLATFORM_BOARD_PACKAGE)/Library/SecBoardInitLib/SecBoardInitLib.inf
 
 [LibraryClasses.common.PEIM]
   #######################################
diff --git a/Platform/Intel/KabylakeOpenBoardPkg/Library/SecBoardInitLib/Ia32/SecBoardInit.nasm b/Platform/Intel/KabylakeOpenBoardPkg/Library/SecBoardInitLib/Ia32/SecBoardInit.nasm
new file mode 100644
index 0000000000..c9cfa236ea
--- /dev/null
+++ b/Platform/Intel/KabylakeOpenBoardPkg/Library/SecBoardInitLib/Ia32/SecBoardInit.nasm
@@ -0,0 +1,18 @@
+;; @file
+; Kaby Lake board SEC initialization.
+;
+; Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
+; SPDX-License-Identifier: BSD-2-Clause-Patent
+;
+;;
+
+SECTION .text
+
+global  ASM_PFX(BoardBeforeTempRamInit)
+ASM_PFX(BoardBeforeTempRamInit):
+        ;
+        ; This hook is called before FSP TempRamInit API call
+        ; ESI, EDI need to be preserved
+        ; ESP contains return address
+        ;
+        jmp     esp
diff --git a/Platform/Intel/KabylakeOpenBoardPkg/Library/SecBoardInitLib/SecBoardInitLib.c b/Platform/Intel/KabylakeOpenBoardPkg/Library/SecBoardInitLib/SecBoardInitLib.c
new file mode 100644
index 0000000000..22712d12db
--- /dev/null
+++ b/Platform/Intel/KabylakeOpenBoardPkg/Library/SecBoardInitLib/SecBoardInitLib.c
@@ -0,0 +1,35 @@
+/** @file
+  Kaby Lake board SEC initialization.
+
+Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include <PiDxe.h>
+#include <Library/BoardInitLib.h>
+#include <Library/PcdLib.h>
+#include <Library/SiliconInitLib.h>
+#include <Library/HdmiDebugGpioInitLib.h>
+
+EFI_STATUS
+EFIAPI
+BoardAfterTempRamInit (
+  VOID
+  )
+{
+  ///
+  /// Do Early PCH init
+  ///
+  EarlySiliconInit ();
+
+  ///
+  /// Initialize HDMI DDC GPIOs if HDMI I2C Debug Port is Enabled
+  ///
+  if (PcdGetBool (PcdI2cHdmiDebugPortEnable) ||
+      PcdGetBool (PcdI2cHdmiDebugPortSerialTerminalEnable)) {
+    HdmiDebugGpioInit ();
+  }
+
+  return EFI_SUCCESS;
+}
diff --git a/Platform/Intel/KabylakeOpenBoardPkg/Library/SecBoardInitLib/SecBoardInitLib.inf b/Platform/Intel/KabylakeOpenBoardPkg/Library/SecBoardInitLib/SecBoardInitLib.inf
new file mode 100644
index 0000000000..192a78865f
--- /dev/null
+++ b/Platform/Intel/KabylakeOpenBoardPkg/Library/SecBoardInitLib/SecBoardInitLib.inf
@@ -0,0 +1,39 @@
+## @file
+# Component information file for Kaby Lake SEC Board Init Library
+#
+# Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+[Defines]
+  INF_VERSION                    = 0x00010005
+  BASE_NAME                      = SecKabyLakeBoardInitLib
+  FILE_GUID                      = B9DC6910-67E0-4FCE-A1A4-675115E71455
+  MODULE_TYPE                    = SEC
+  VERSION_STRING                 = 1.0
+  LIBRARY_CLASS                  = SecBoardInitLib
+
+[Sources.IA32]
+  Ia32/SecBoardInit.nasm
+
+[Sources]
+  SecBoardInitLib.c
+
+[Packages]
+  MinPlatformPkg/MinPlatformPkg.dec
+  MdePkg/MdePkg.dec
+  KabylakeSiliconPkg/SiPkg.dec
+  KabylakeOpenBoardPkg/OpenBoardPkg.dec
+
+[LibraryClasses]
+  BaseLib
+  SiliconInitLib
+  HdmiDebugGpioInitLib
+
+[Guids]
+
+[Pcd]
+  gKabylakeOpenBoardPkgTokenSpaceGuid.PcdI2cHdmiDebugPortEnable               ## CONSUMES
+  gKabylakeOpenBoardPkgTokenSpaceGuid.PcdI2cHdmiDebugPortSerialTerminalEnable ## CONSUMES
diff --git a/Platform/Intel/KabylakeOpenBoardPkg/OpenBoardPkg.dec b/Platform/Intel/KabylakeOpenBoardPkg/OpenBoardPkg.dec
index c89715766b..448eafacbf 100644
--- a/Platform/Intel/KabylakeOpenBoardPkg/OpenBoardPkg.dec
+++ b/Platform/Intel/KabylakeOpenBoardPkg/OpenBoardPkg.dec
@@ -76,6 +76,24 @@ gKabylakeOpenBoardPkgTokenSpaceGuid.PcdFlashNvDebugMessageBase|0x00000000|UINT32
 gKabylakeOpenBoardPkgTokenSpaceGuid.PcdFlashNvDebugMessageSize|0x00000000|UINT32|0x90000031
 gKabylakeOpenBoardPkgTokenSpaceGuid.PcdFlashNvDebugMessageOffset|0x00000000|UINT32|0x90000032
 
+## Enable usage the HDMI DDC channel as a debug port - Causes the BIOS debug log
+#  to be written to the HDMI DDC channel.
+#  The value is defined as below.
+#  FALSE: Do NOT use the HDMI DDC channel as a debug port
+#  TRUE:  Use the HDMI DDC channel as a debug port
+# @Prompt Enable usage the HDMI DDC channel as a debug port
+gKabylakeOpenBoardPkgTokenSpaceGuid.PcdI2cHdmiDebugPortEnable|FALSE|BOOLEAN|0x90000033
+
+## Enable usage the HDMI DDC channel as a serial terminal - Enables usage of the
+#  HDMI DDC channel to display BIOS Setup, UEFI Shell, etc. using a terminal
+#  emulator. Useful for cases where video is not operating correctly.
+#
+#  The value is defined as below.
+#  FALSE: Do NOT use the HDMI DDC channel as a debug port
+#  TRUE:  Use the HDMI DDC channel as a debug port
+# @Prompt Enable usage the HDMI DDC channel as a debug port
+gKabylakeOpenBoardPkgTokenSpaceGuid.PcdI2cHdmiDebugPortSerialTerminalEnable|FALSE|BOOLEAN|0x90000034
+
 ## Specifies the DDC I2C channel to claim as the HDMI debug port
 #  The value is defined as below.
 #  2: DDC channel B
-- 
2.27.0.windows.1


  parent reply	other threads:[~2022-06-18  4:05 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-18  4:05 [edk2-platforms] [PATCH V1 0/5] KabylakeOpenBoardPkg: HDMI DDC I2C Bus Debugging Nate DeSimone
2022-06-18  4:05 ` [edk2-platforms] [PATCH V1 1/5] KabylakeOpenBoardPkg: Add I2cHdmiDebugSerialPortLib Nate DeSimone
2022-06-18  4:05 ` [edk2-platforms] [PATCH V1 2/5] KabylakeOpenBoardPkg: Add HdmiDebugGpioInitLib Nate DeSimone
2022-06-18  4:05 ` Nate DeSimone [this message]
2022-06-18  4:05 ` [edk2-platforms] [PATCH V1 4/5] BoardModulePkg: Add BdsSerialPortTerminalLib Nate DeSimone
2022-06-18  4:05 ` [edk2-platforms] [PATCH V1 5/5] KabylakeOpenBoardPkg/GalagoPro3: Enable HDMI DDC Debug Port Nate DeSimone
2022-06-19 20:06   ` [edk2-devel] " Benjamin Doron
2022-06-19 20:13     ` Benjamin Doron
     [not found] ` <16F99B5C34E031D3.5445@groups.io>
2022-06-22 18:57   ` [edk2-devel] [edk2-platforms] [PATCH V1 4/5] BoardModulePkg: Add BdsSerialPortTerminalLib Nate DeSimone

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220618040550.8467-4-nathaniel.l.desimone@intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox