public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Ma, Maurice" <maurice.ma@intel.com>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>,
	"Rhodes, Sean" <sean@starlabs.systems>
Cc: "Dong, Guo" <guo.dong@intel.com>,
	Patrick Rudolph <patrick.rudolph@9elements.com>,
	"Ni, Ray" <ray.ni@intel.com>,
	"You, Benjamin" <benjamin.you@intel.com>
Subject: Re: [edk2-devel] [PATCH 1/2] UefiPayloadPkg: Add i801 SMBus controller DXE
Date: Thu, 17 Feb 2022 18:24:10 +0000	[thread overview]
Message-ID: <CO1PR11MB49454D86BFBFA8779E877DA089369@CO1PR11MB4945.namprd11.prod.outlook.com> (raw)
In-Reply-To: <c8070771e19c158e3512319a33ae68bf32beab36.1645120287.git.sean@starlabs.systems>

This vendor specific device driver implementation does not seem to fit into UEFI payload package scope well.   

Do you think https://github.com/tianocore/edk2-platforms/tree/master/Silicon could be a better location ?

Thanks
Maurice
> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Sean
> Rhodes
> Sent: Thursday, February 17, 2022 9:51
> To: devel@edk2.groups.io
> Cc: Dong, Guo <guo.dong@intel.com>; Patrick Rudolph
> <patrick.rudolph@9elements.com>; Ni, Ray <ray.ni@intel.com>; Ma,
> Maurice <maurice.ma@intel.com>; You, Benjamin
> <benjamin.you@intel.com>
> Subject: [edk2-devel] [PATCH 1/2] UefiPayloadPkg: Add i801 SMBus
> controller DXE
> 
> From: Patrick Rudolph <patrick.rudolph@9elements.com>
> 
> Implement a subset of the gEfiSmbusHcProtocolGuid using a generic PCI i801
> SMBus controller.
> 
> Cc: Guo Dong <guo.dong@intel.com>
> Cc: Ray Ni <ray.ni@intel.com>
> Cc: Maurice Ma <maurice.ma@intel.com>
> Cc: Benjamin You <benjamin.you@intel.com>
> Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
> ---
>  .../Library/BrotliCustomDecompressLib/brotli  |   2 +-
>  UefiPayloadPkg/SmbusDxe/SMBusi801Dxe.c        | 556
> ++++++++++++++++++
>  UefiPayloadPkg/SmbusDxe/SMBusi801Dxe.h        |  17 +
>  UefiPayloadPkg/SmbusDxe/SMBusi801Dxe.inf      |  45 ++
>  UefiPayloadPkg/UefiPayloadPkg.dsc             |   7 +
>  UefiPayloadPkg/UefiPayloadPkg.fdf             |   5 +
>  6 files changed, 631 insertions(+), 1 deletion(-)  create mode 100644
> UefiPayloadPkg/SmbusDxe/SMBusi801Dxe.c
>  create mode 100644 UefiPayloadPkg/SmbusDxe/SMBusi801Dxe.h
>  create mode 100644 UefiPayloadPkg/SmbusDxe/SMBusi801Dxe.inf
> 
> diff --git a/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
> b/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
> index f4153a09f8..666c3280cc 160000
> --- a/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
> +++ b/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
> @@ -1 +1 @@
> -Subproject commit f4153a09f87cbb9c826d8fc12c74642bb2d879ea
> +Subproject commit 666c3280cc11dc433c303d79a83d4ffbdd12cc8d
> diff --git a/UefiPayloadPkg/SmbusDxe/SMBusi801Dxe.c
> b/UefiPayloadPkg/SmbusDxe/SMBusi801Dxe.c
> new file mode 100644
> index 0000000000..7bf7b893ad
> --- /dev/null
> +++ b/UefiPayloadPkg/SmbusDxe/SMBusi801Dxe.c
> @@ -0,0 +1,556 @@
> +/** @file+  Implementation for a generic i801 SMBus driver.++Copyright (c)
> 2016, Intel Corporation. All rights reserved.<BR>+SPDX-License-Identifier:
> BSD-2-Clause-Patent+++**/++#include "SMBusi801Dxe.h"+#include
> <Library/TimerLib.h>+#include <Library/PciLib.h>+#include
> <Library/IoLib.h>+#include <Library/DebugLib.h>+#include
> <Library/BaseMemoryLib.h>+#include
> <Library/UefiBootServicesTableLib.h>++EFI_HANDLE  mDriverHandle =
> NULL;+UINT32      PciDevice     = 0;++/* SMBus register offsets. */+#define
> SMBHSTSTAT      0x0+#define SMBHSTCTL       0x2+#define SMBHSTCMD
> 0x3+#define SMBXMITADD      0x4+#define SMBHSTDAT0      0x5+#define
> SMBHSTDAT1      0x6+#define SMBBLKDAT       0x7+#define SMBTRNSADD
> 0x9+#define SMBSLVDATA      0xa+#define SMLINK_PIN_CTL  0xe+#define
> SMBUS_PIN_CTL   0xf+#define SMBSLVCMD       0x11++/* I801 command
> constants */+#define I801_QUICK           (0 << 2)+#define I801_BYTE            (1
> << 2)+#define I801_BYTE_DATA       (2 << 2)+#define I801_WORD_DATA       (3
> << 2)+#define I801_PROCESS_CALL    (4 << 2)+#define I801_BLOCK_DATA
> (5 << 2)+#define I801_I2C_BLOCK_DATA  (6 << 2)     /* ICH5 and later */++/*
> I801 Host Control register bits */+#define SMBHSTCNT_INTREN     (1 <<
> 0)+#define SMBHSTCNT_KILL       (1 << 1)+#define SMBHSTCNT_LAST_BYTE
> (1 << 5)+#define SMBHSTCNT_START      (1 << 6)+#define
> SMBHSTCNT_PEC_EN     (1 << 7)    /* ICH3 and later */++/* I801 Hosts Status
> register bits */+#define SMBHSTSTS_BYTE_DONE     (1 << 7)+#define
> SMBHSTSTS_INUSE_STS     (1 << 6)+#define SMBHSTSTS_SMBALERT_STS  (1
> << 5)+#define SMBHSTSTS_FAILED        (1 << 4)+#define
> SMBHSTSTS_BUS_ERR       (1 << 3)+#define SMBHSTSTS_DEV_ERR       (1 <<
> 2)+#define SMBHSTSTS_INTR          (1 << 1)+#define SMBHSTSTS_HOST_BUSY
> (1 << 0)++/* For SMBXMITADD register. */+#define XMIT_WRITE(dev)
> (((dev) << 1) | 0)+#define XMIT_READ(dev)   (((dev) << 1) |
> 1)++STATIC+UINT16+EFIAPI+SmbusGetSMBaseAddress (+  IN VOID+  )+{+
> UINT16  Cmd;+  UINT32  Reg32;+  UINT16  IoBase;++  IoBase = 0;+  //+  // Test
> if I/O decoding is enabled+  //+  Cmd = PciRead16 (PciDevice + 0x4);+  if
> (!(Cmd & 1)) {+    goto CloseAndReturn;+  }++  //+  // Test if BAR0 is I/O bar
> and enabled+  //+  Reg32 = PciRead16 (PciDevice + 0x20);+  if (!(Reg32 & 1)
> || !(Reg32 & 0xfffc) || ((Reg32 & 0xfffc) == 0xfffc)) {+    goto
> CloseAndReturn;+  }++  IoBase = Reg32 & 0xfffc;++CloseAndReturn:+  return
> IoBase;+}++STATIC+EFI_STATUS+SmbusSetupCommand (+  IN UINT16
> IoBase,+  IN UINT8   Ctrl,+  IN UINT8   Xmitadd+  )+{+  UINTN  Loops = 10000;+
> UINT8  host_busy;++  do {+    MicroSecondDelay (100);+    host_busy =
> IoRead8 (IoBase + SMBHSTSTAT) & SMBHSTSTS_HOST_BUSY;+  } while (--
> Loops && host_busy);++  if (Loops == 0) {+    return EFI_TIMEOUT;+  }++  /*
> Clear any lingering errors, so the transaction will run. */+  IoWrite8 (IoBase +
> SMBHSTSTAT, IoRead8 (IoBase + SMBHSTSTAT));++  /* Set up transaction */+
> /* Disable interrupts */+  IoWrite8 (IoBase + SMBHSTCTL, Ctrl);++  /* Set the
> device I'm talking to. */+  IoWrite8 (IoBase + SMBXMITADD, Xmitadd);++
> return EFI_SUCCESS;+}++STATIC+EFI_STATUS+SmbusExecuteCommand (+
> IN UINT16  IoBase+  )+{+  UINTN  Loops = 10000;+  UINT8  Status;++  /* Start
> the command. */+  IoWrite8 (IoBase + SMBHSTCTL, IoRead8 (IoBase +
> SMBHSTCTL) | SMBHSTCNT_START);+  Status = IoRead8 (IoBase +
> SMBHSTSTAT);++  /* Poll for it to start. */+  do {+    MicroSecondDelay
> (100);++    /* If we poll too slow, we could miss HOST_BUSY flag+     * set and
> detect INTR or x_ERR flags instead here.+     */+    Status = IoRead8 (IoBase +
> SMBHSTSTAT);++    Status &= ~(SMBHSTSTS_SMBALERT_STS |
> SMBHSTSTS_INUSE_STS);+  } while (--Loops && Status == 0);++  if (Loops == 0)
> {+    return EFI_TIMEOUT;+  }++  return
> EFI_SUCCESS;+}++STATIC+BOOLEAN+SmbusHostCompleted (+  IN UINT8
> Status+  )+{+  if (Status & SMBHSTSTS_HOST_BUSY) {+    return FALSE;+  }++
> /* These status bits do not imply completion of transaction. */+  Status &=
> ~(SMBHSTSTS_BYTE_DONE | SMBHSTSTS_INUSE_STS |
> SMBHSTSTS_SMBALERT_STS);+  return Status !=
> 0;+}++STATIC+EFI_STATUS+SmbusCompleteCommand (+  IN UINT16
> IoBase+  )+{+  UINTN  Loops = 10000;+  UINT8  Status;++  do {+
> MicroSecondDelay (100);+    Status = IoRead8 (IoBase + SMBHSTSTAT);+  }
> while (--Loops && !SmbusHostCompleted (Status));++  if (Loops == 0) {+
> return EFI_TIMEOUT;+  }++  /* These status bits do not imply errors. */+
> Status &= ~(SMBHSTSTS_BYTE_DONE | SMBHSTSTS_INUSE_STS |
> SMBHSTSTS_SMBALERT_STS);++  if (Status == SMBHSTSTS_INTR) {+    return
> EFI_SUCCESS;+  }++  return
> EFI_NO_RESPONSE;+}++STATIC+EFI_STATUS+EFIAPI+SmbusProcessCallOper
> ation (+  IN CONST  UINT16                    IoBase,+  IN CONST
> EFI_SMBUS_HC_PROTOCOL     *This,+  IN        EFI_SMBUS_DEVICE_ADDRESS
> SlaveAddress,+  IN        EFI_SMBUS_DEVICE_COMMAND  Command,+  IN
> BOOLEAN                   PecCheck,+  IN OUT    UINTN                     *Length,+  IN OUT
> VOID                      *Buffer+  )+{+  EFI_STATUS  Status;+  UINT16
> ResultBuffer;+  UINT16      AddrBuffer;++  if (!Buffer || !Length) {+    return
> RETURN_INVALID_PARAMETER;+  }++  if (*Length != 2) {+    return
> RETURN_INVALID_PARAMETER;+  }++  CopyMem (&AddrBuffer, Buffer,
> sizeof (AddrBuffer));++  /* Set up for process call */+  Status =
> SmbusSetupCommand (IoBase, I801_PROCESS_CALL, XMIT_WRITE
> (SlaveAddress.SmbusDeviceAddress));+  if (EFI_ERROR (Status)) {+    return
> Status;+  }++  /* cmd will only be send if I2C_EN is zero */+  IoWrite8 (IoBase
> + SMBHSTCMD, Command);++  IoWrite8 (IoBase + SMBHSTDAT0, AddrBuffer
> & 0x00ff);+  IoWrite8 (IoBase + SMBHSTDAT1, (AddrBuffer & 0xff00) >> 8);++
> /* Start the command */+  Status = SmbusExecuteCommand (IoBase);+  if
> (EFI_ERROR (Status)) {+    return Status;+  }++  /* Poll for transaction
> completion */+  Status = SmbusCompleteCommand (IoBase);+  if
> (EFI_ERROR (Status)) {+    return Status;+  }++  /* Read results of transaction
> */+  ResultBuffer  = IoRead8 (IoBase + SMBHSTDAT0);+  ResultBuffer |=
> (IoRead8 (IoBase + SMBHSTDAT1) << 8);++  CopyMem (Buffer,
> &ResultBuffer, sizeof (ResultBuffer));+  *Length = sizeof (ResultBuffer);++
> return EFI_SUCCESS;+}++STATIC+EFI_STATUS+EFIAPI+SmbusReadOperation
> (+  IN CONST  UINT16                    IoBase,+  IN CONST
> EFI_SMBUS_HC_PROTOCOL     *This,+  IN        EFI_SMBUS_DEVICE_ADDRESS
> SlaveAddress,+  IN        EFI_SMBUS_DEVICE_COMMAND  Command,+  IN
> BOOLEAN                   PecCheck,+  IN OUT    UINTN                     *Length,+  IN OUT
> VOID                      *Buffer+  )+{+  EFI_STATUS  Status;+  UINT8
> ResultBuffer;++  if (!Buffer || !Length) {+    return
> RETURN_INVALID_PARAMETER;+  }++  /* Set up for a byte data read. */+
> Status = SmbusSetupCommand (IoBase, I801_BYTE_DATA, XMIT_READ
> (SlaveAddress.SmbusDeviceAddress));+  if (EFI_ERROR (Status)) {+    return
> Status;+  }++  IoWrite8 (IoBase + SMBHSTCMD, Command);++  IoWrite8
> (IoBase + SMBHSTDAT0, 0);+  IoWrite8 (IoBase + SMBHSTDAT1, 0);++  /* Start
> the command */+  Status = SmbusExecuteCommand (IoBase);+  if
> (EFI_ERROR (Status)) {+    return Status;+  }++  /* Poll for transaction
> completion */+  Status = SmbusCompleteCommand (IoBase);+  if
> (EFI_ERROR (Status)) {+    return Status;+  }++  /* Read results of transaction
> */+  ResultBuffer = IoRead8 (IoBase + SMBHSTDAT0);++  CopyMem (Buffer,
> &ResultBuffer, sizeof (ResultBuffer));+  *Length = sizeof (ResultBuffer);++
> return EFI_SUCCESS;+}++STATIC+EFI_STATUS+EFIAPI+SmbusWriteOperation
> (+  IN CONST  UINT16                    IoBase,+  IN CONST
> EFI_SMBUS_HC_PROTOCOL     *This,+  IN        EFI_SMBUS_DEVICE_ADDRESS
> SlaveAddress,+  IN        EFI_SMBUS_DEVICE_COMMAND  Command,+  IN
> BOOLEAN                   PecCheck,+  IN OUT    UINTN                     *Length,+  IN OUT
> VOID                      *Buffer+  )+{+  EFI_STATUS  Status;+  UINT8
> InputBuffer;++  if (!Buffer || !Length) {+    return
> RETURN_INVALID_PARAMETER;+  }++  if (*Length != 1) {+    return
> RETURN_INVALID_PARAMETER;+  }++  CopyMem (&InputBuffer, Buffer,
> sizeof (InputBuffer));++  /* Set up for a byte data read. */+  Status =
> SmbusSetupCommand (IoBase, I801_BYTE_DATA, XMIT_WRITE
> (SlaveAddress.SmbusDeviceAddress));+  if (EFI_ERROR (Status)) {+    return
> Status;+  }++  IoWrite8 (IoBase + SMBHSTCMD, Command);++  IoWrite8
> (IoBase + SMBHSTDAT0, InputBuffer);++  /* Start the command */+  Status =
> SmbusExecuteCommand (IoBase);+  if (EFI_ERROR (Status)) {+    return
> Status;+  }++  /* Poll for transaction completion */+  Status =
> SmbusCompleteCommand (IoBase);+  if (EFI_ERROR (Status)) {+    return
> Status;+  }++  return
> EFI_SUCCESS;+}++STATIC+EFI_STATUS+EFIAPI+SmbusExecuteOperation (+
> IN CONST  EFI_SMBUS_HC_PROTOCOL     *This,+  IN
> EFI_SMBUS_DEVICE_ADDRESS  SlaveAddress,+  IN
> EFI_SMBUS_DEVICE_COMMAND  Command,+  IN
> EFI_SMBUS_OPERATION       Operation,+  IN        BOOLEAN
> PecCheck,+  IN OUT    UINTN                     *Length,+  IN OUT    VOID
> *Buffer+  )+{+  UINT16  IoBase;++  IoBase = SmbusGetSMBaseAddress ();+  if
> (!IoBase) {+    return EFI_UNSUPPORTED;+  }++  if (Operation ==
> EfiSmbusProcessCall) {+    return SmbusProcessCallOperation (+
> IoBase,+             This,+             SlaveAddress,+             Command,+
> PecCheck,+             Length,+             Buffer+             );+  } else if (Operation ==
> EfiSmbusReadByte) {+    return SmbusReadOperation (+             IoBase,+
> This,+             SlaveAddress,+             Command,+             PecCheck,+
> Length,+             Buffer+             );+  } else if (Operation == EfiSmbusWriteByte)
> {+    return SmbusWriteOperation (+             IoBase,+             This,+
> SlaveAddress,+             Command,+             PecCheck,+             Length,+
> Buffer+             );+  }++  return
> EFI_UNSUPPORTED;+}++STATIC+EFI_STATUS+EFIAPI+SmbusHcProtocolArpD
> evice (+  IN CONST  EFI_SMBUS_HC_PROTOCOL *This,+  IN        BOOLEAN
> ArpAll,+  IN        EFI_SMBUS_UDID *SmbusUdid, OPTIONAL+  IN OUT
> EFI_SMBUS_DEVICE_ADDRESS  *SlaveAddress OPTIONAL+  )+{+  return
> EFI_UNSUPPORTED;+}++STATIC+EFI_STATUS+EFIAPI+SmbusHcProtocolGetA
> rpMap (+  IN CONST  EFI_SMBUS_HC_PROTOCOL  *This,+  IN OUT    UINTN
> *Length,+  IN OUT    EFI_SMBUS_DEVICE_MAP   **SmbusDeviceMap+  )+{+
> return
> EFI_UNSUPPORTED;+}++STATIC+EFI_STATUS+EFIAPI+SmbusHcProtocolNotif
> y (+  IN CONST  EFI_SMBUS_HC_PROTOCOL      *This,+  IN
> EFI_SMBUS_DEVICE_ADDRESS   SlaveAddress,+  IN        UINTN
> Data,+  IN        EFI_SMBUS_NOTIFY_FUNCTION  NotifyFunction+  )+{+  return
> EFI_UNSUPPORTED;+}++EFI_SMBUS_HC_PROTOCOL  mSmbusProtocol = {+
> SmbusExecuteOperation,+  SmbusHcProtocolArpDevice,+
> SmbusHcProtocolGetArpMap,+  SmbusHcProtocolNotify+};++/**+  The Entry
> Point for SMBUS driver.++  It installs DriverBinding.++  @retval EFI_SUCCESS
> The entry point is executed successfully.+  @retval other             Some error
> occurs when executing this entry
> point.++**/+EFI_STATUS+EFIAPI+InstallSmbusProtocol (+  IN EFI_HANDLE
> ImageHandle,+  IN EFI_SYSTEM_TABLE  *SystemTable+  )+{+  EFI_STATUS
> Status;+  UINT16      IoBase;+  UINT8       Device;+  UINT8       Function;+
> BOOLEAN     BreakLoop;+  UINT8       BaseClass;+  UINT8       SubClass;++
> BreakLoop = FALSE;+  Status    = EFI_SUCCESS;++  //+  // Search for SMBus
> Controller within PCI Devices on root bus+  //+  for (Device = 0; Device <=
> PCI_MAX_DEVICE; Device++) {+    for (Function = 0; Function <=
> PCI_MAX_FUNC; Function++) {+      if (PciRead16 (PCI_LIB_ADDRESS (0,
> Device, Function, 0x00)) != 0x8086) {+        continue;+      }++      BaseClass =
> PciRead8 (PCI_LIB_ADDRESS (0, Device, Function, 0x0B));++      if (BaseClass
> == PCI_CLASS_SERIAL) {+        SubClass = PciRead8 (PCI_LIB_ADDRESS (0,
> Device, Function, 0xA));++        if (SubClass == PCI_CLASS_SERIAL_SMB) {+
> BreakLoop = TRUE;+          PciDevice = PCI_LIB_ADDRESS (0, Device, Function,
> 0x00);+          break;+        }+      }+    }++    if (BreakLoop) {+      break;+    }+  }++  if
> (!BreakLoop) {+    DEBUG ((EFI_D_INFO, "No PCI SMBUS controller
> found.\n"));+    return EFI_UNSUPPORTED;+  }++  DEBUG ((EFI_D_INFO, "PCI
> Device found on 0-%x-%x\n", Device, Function));++  IoBase =
> SmbusGetSMBaseAddress ();+  if (!IoBase) {+    return
> EFI_UNSUPPORTED;+  }++  DEBUG ((+    EFI_D_INFO,+    "%a: Detected i801
> SMBus controller with SMBASE 0x%x\n",+    __FUNCTION__,+
> IoBase+    ));++  Status = gBS->InstallProtocolInterface (+
> &mDriverHandle,+                  &gEfiSmbusHcProtocolGuid,+
> EFI_NATIVE_INTERFACE,+                  &mSmbusProtocol+                  );++  if
> (EFI_ERROR (Status)) {+    return Status;+  }++  return EFI_SUCCESS;+}diff --git
> a/UefiPayloadPkg/SmbusDxe/SMBusi801Dxe.h
> b/UefiPayloadPkg/SmbusDxe/SMBusi801Dxe.h
> new file mode 100644
> index 0000000000..e88823da31
> --- /dev/null
> +++ b/UefiPayloadPkg/SmbusDxe/SMBusi801Dxe.h
> @@ -0,0 +1,17 @@
> +/** @file+  Header file for a generic i801 SMBUS driver.++Copyright (c)
> +2016, Intel Corporation. All rights
> +reserved.<BR>+SPDX-License-Identifier:
> +BSD-2-Clause-Patent+++**/+#ifndef _PCI_PLATFORM_DXE_H_+#define
> +_PCI_PLATFORM_DXE_H_+#include <PiDxe.h>++#include
> +<IndustryStandard/Pci.h>+#include <IndustryStandard/Pci22.h>+#include
> +<Protocol/SmbusHc.h>++#endifdiff --git
> +a/UefiPayloadPkg/SmbusDxe/SMBusi801Dxe.inf
> +b/UefiPayloadPkg/SmbusDxe/SMBusi801Dxe.inf
> new file mode 100644
> index 0000000000..7d13c446ef
> --- /dev/null
> +++ b/UefiPayloadPkg/SmbusDxe/SMBusi801Dxe.inf
> @@ -0,0 +1,45 @@
> +## @file+# This driver produces gEfiSmbusHcProtocolGuid protocol to load
> access SMBUS devices+#+# Copyright (c) 2020, 9elements Agency
> GmbH+#+#  SPDX-License-Identifier: BSD-2-Clause-
> Patent+#+#+##++[Defines]+  INF_VERSION                    = 0x00010005+
> BASE_NAME                      = SMBusi801Dxe+  FILE_GUID                      = 390208DA-
> 8E6F-4957-90D6-421737FEA9BF+  MODULE_TYPE                    = DXE_DRIVER+
> VERSION_STRING                 = 1.0+  ENTRY_POINT                    =
> InstallSmbusProtocol++#+# The following information is for reference only
> and not required by the build tools.+#+#  VALID_ARCHITECTURES           = IA32
> X64+#++[Sources.common]+  SMBusi801Dxe.h+
> SMBusi801Dxe.c++[Packages]+  MdePkg/MdePkg.dec+
> MdeModulePkg/MdeModulePkg.dec++[LibraryClasses]+
> UefiDriverEntryPoint+  DebugLib+  IoLib+  UefiLib+  TimerLib+
> PciLib++[Protocols]+  gEfiSmbusHcProtocolGuid                       ##
> PRODUCES++[Depex]+  TRUEdiff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc
> b/UefiPayloadPkg/UefiPayloadPkg.dsc
> index 1ce96a51c1..54543b7623 100644
> --- a/UefiPayloadPkg/UefiPayloadPkg.dsc
> +++ b/UefiPayloadPkg/UefiPayloadPkg.dsc
> @@ -290,6 +290,7 @@
>  !if $(PERFORMANCE_MEASUREMENT_ENABLE)
> PerformanceLib|MdeModulePkg/Library/DxeCorePerformanceLib/DxeCore
> PerformanceLib.inf !endif+
> SmbusLib|MdePkg/Library/DxeSmbusLib/DxeSmbusLib.inf
> [LibraryClasses.common.DXE_DRIVER]
> PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf@@ -304,6 +305,7 @@
>  !if $(PERFORMANCE_MEASUREMENT_ENABLE)
> PerformanceLib|MdeModulePkg/Library/DxePerformanceLib/DxePerforma
> nceLib.inf !endif+
> SmbusLib|MdePkg/Library/DxeSmbusLib/DxeSmbusLib.inf
> [LibraryClasses.common.DXE_RUNTIME_DRIVER]
> PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf@@ -657,6 +659,11 @@
>  !endif   MdeModulePkg/Bus/Isa/Ps2MouseDxe/Ps2MouseDxe.inf +  #+  #
> SMBUS Support+  #+  UefiPayloadPkg/SmbusDxe/SMBusi801Dxe.inf+   #   #
> Console Support   #diff --git a/UefiPayloadPkg/UefiPayloadPkg.fdf
> b/UefiPayloadPkg/UefiPayloadPkg.fdf
> index c7b04978ad..8861d29162 100644
> --- a/UefiPayloadPkg/UefiPayloadPkg.fdf
> +++ b/UefiPayloadPkg/UefiPayloadPkg.fdf
> @@ -178,6 +178,11 @@ INF
> MdeModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe.inf
>  !endif INF MdeModulePkg/Bus/Isa/Ps2MouseDxe/Ps2MouseDxe.inf +#+#
> SMBUS Support+#+INF UefiPayloadPkg/SmbusDxe/SMBusi801Dxe.inf+ # #
> Console Support #--
> 2.32.0
> 
> 
> 
> -=-=-=-=-=-=
> Groups.io Links: You receive all messages sent to this group.
> View/Reply Online (#86730): https://edk2.groups.io/g/devel/message/86730
> Mute This Topic: https://groups.io/mt/89214991/1773972
> Group Owner: devel+owner@edk2.groups.io
> Unsubscribe: https://edk2.groups.io/g/devel/unsub [maurice.ma@intel.com]
> -=-=-=-=-=-=
> 


  parent reply	other threads:[~2022-02-17 18:24 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-17 17:51 [PATCH 1/2] UefiPayloadPkg: Add i801 SMBus controller DXE Sean Rhodes
2022-02-17 17:51 ` [PATCH 2/2] UefipayloadPkg: Add SmbusConfigLoaderDxe Sean Rhodes
2022-02-17 18:24 ` Ma, Maurice [this message]
2022-02-24 10:46   ` [edk2-devel] [PATCH 1/2] UefiPayloadPkg: Add i801 SMBus controller DXE Patrick Rudolph
2022-02-24 15:53     ` Guo Dong
2022-02-25  1:25       ` Guo Dong

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=CO1PR11MB49454D86BFBFA8779E877DA089369@CO1PR11MB4945.namprd11.prod.outlook.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