Reviewed-by: Guo Dong <guo.d...@intel.com>

-----Original Message-----
From: Liu, Zhiguang <zhiguang....@intel.com> 
Sent: Thursday, May 12, 2022 3:55 AM
To: devel@edk2.groups.io
Cc: Dong, Guo <guo.d...@intel.com>; Ni, Ray <ray...@intel.com>; Maurice Ma 
<maurice...@intel.com>; You, Benjamin <benjamin....@intel.com>; Rhodes, Sean 
<sean@starlabs.systems>
Subject: [PATCH v2 1/3] UefiPayloadPkg: Simplify code logic

A little overdesign about VisitAllPciInstances function, since there are two 
call back functions. Simplify the code logic by combining the two call back 
functions, and unused parameters.
Change the PROTOCOL_INSTANCE_CALLBACK to SIMPLE_PROTOCOL_INSTANCE_CALLBACK 
because the former is also defined in OvmfPkg. Rename it to avoid confusion.

Cc: Guo Dong <guo.d...@intel.com>
Cc: Ray Ni <ray...@intel.com>
Cc: Maurice Ma <maurice...@intel.com>
Cc: Benjamin You <benjamin....@intel.com>
Cc: Sean Rhodes <sean@starlabs.systems>
Signed-off-by: Zhiguang Liu <zhiguang....@intel.com>
---
 .../PlatformBootManagerLib/PlatformConsole.c  | 93 +++++--------------  
.../PlatformBootManagerLib/PlatformConsole.h  |  5 +-
 2 files changed, 25 insertions(+), 73 deletions(-)

diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformConsole.c 
b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformConsole.c
index bfaf89e74c..75aafebccd 100644
--- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformConsole.c
+++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformConsole.c
@@ -333,7 +333,6 @@ PreparePciSerialDevicePath (
    @param[in]  Id                 - The protocol GUID for callback   
@param[in]  CallBackFunction   - The callback function-  @param[in]  Context    
- The context of the callback    @retval EFI_STATUS - Callback function failed. 
@@ -341,9 +340,8 @@ PreparePciSerialDevicePath (
 EFI_STATUS EFIAPI VisitAllInstancesOfProtocol (-  IN EFI_GUID                  
  *Id,-  IN PROTOCOL_INSTANCE_CALLBACK  CallBackFunction,-  IN VOID             
           *Context+  IN EFI_GUID                           *Id,+  IN 
SIMPLE_PROTOCOL_INSTANCE_CALLBACK  CallBackFunction   ) {   EFI_STATUS  
Status;@@ -376,8 +374,7 @@ VisitAllInstancesOfProtocol (
      Status = (*CallBackFunction)(   HandleBuffer[Index],-  Instance,-  
Context+  Instance   );   } @@ -387,21 +384,21 @@ VisitAllInstancesOfProtocol (
 }  /**-  For every PCI instance execute a callback function.+  Do platform 
specific PCI Device check and add them to+  ConOut, ConIn, ErrOut. -  
@param[in]  Handle     - The PCI device handle-  @param[in]  Instance   - The 
instance of the PciIo protocol-  @param[in]  Context    - The context of the 
callback+  @param[in]  Handle    - Handle of PCI device instance+  @param[in]  
Instance  - The instance of PCI device -  @retval EFI_STATUS - Callback 
function failed.+  @retval EFI_SUCCESS - PCI Device check and Console variable 
update successfully.+  @retval EFI_STATUS - PCI Device check or Console 
variable update fail.  **/ EFI_STATUS EFIAPI-VisitingAPciInstance 
(+DetectAndPreparePlatformPciDevicePath (   IN EFI_HANDLE  Handle,-  IN VOID    
    *Instance,-  IN VOID        *Context+  IN VOID        *Instance   ) {   
EFI_STATUS           Status;@@ -424,56 +421,6 @@ VisitingAPciInstance (
     return Status;   } -  return 
(*(VISIT_PCI_INSTANCE_CALLBACK)(UINTN)Context)(-  Handle,-  PciIo,-  &Pci-  
);-}--/**-  For every PCI instance execute a callback function.--  @param[in]  
CallBackFunction - Callback function pointer--  @retval EFI_STATUS - Callback 
function failed.--**/-EFI_STATUS-EFIAPI-VisitAllPciInstances (-  IN 
VISIT_PCI_INSTANCE_CALLBACK  CallBackFunction-  )-{-  return 
VisitAllInstancesOfProtocol (-           &gEfiPciIoProtocolGuid,-           
VisitingAPciInstance,-           (VOID *)(UINTN)CallBackFunction-           
);-}--/**-  Do platform specific PCI Device check and add them to-  ConOut, 
ConIn, ErrOut.--  @param[in]  Handle - Handle of PCI device instance-  
@param[in]  PciIo - PCI IO protocol instance-  @param[in]  Pci - PCI Header 
register block--  @retval EFI_SUCCESS - PCI Device check and Console variable 
update successfully.-  @retval EFI_STATUS - PCI Device check or Console 
variable update 
fail.--**/-EFI_STATUS-EFIAPI-DetectAndPreparePlatformPciDevicePath (-  IN 
EFI_HANDLE           Handle,-  IN EFI_PCI_IO_PROTOCOL  *PciIo,-  IN PCI_TYPE00  
         *Pci-  )-{-  EFI_STATUS  Status;-   Status = PciIo->Attributes (       
              PciIo,                     EfiPciIoAttributeOperationEnable,@@ 
-486,9 +433,9 @@ DetectAndPreparePlatformPciDevicePath (
     //     // Here we decide whether it is LPC Bridge     //-    if 
((IS_PCI_LPC (Pci)) ||-        ((IS_PCI_ISA_PDECODE (Pci)) &&-         
(Pci->Hdr.VendorId == 0x8086)+    if ((IS_PCI_LPC (&Pci)) ||+        
((IS_PCI_ISA_PDECODE (&Pci)) &&+         (Pci.Hdr.VendorId == 0x8086)         ) 
        )     {@@ -504,7 +451,7 @@ DetectAndPreparePlatformPciDevicePath (
     //     // Here we decide which Serial device to enable in PCI bus     //-  
  if (IS_PCI_16550SERIAL (Pci)) {+    if (IS_PCI_16550SERIAL (&Pci)) {       // 
      // Add them to ConOut, ConIn, ErrOut.       //@@ -517,7 +464,7 @@ 
DetectAndPreparePlatformPciDevicePath (
   //   // Enable all display devices   //-  if (IS_PCI_DISPLAY (Pci)) {+  if 
(IS_PCI_DISPLAY (&Pci)) {     //     // Add them to ConOut.     //@@ -543,6 
+490,8 @@ DetectAndPreparePlatformPciDevicePaths (
   BOOLEAN  DetectDisplayOnly   ) {+  EFI_STATUS  Status;+   mDetectDisplayOnly 
= DetectDisplayOnly;    EfiBootManagerUpdateConsoleVariable (@@ -551,7 +500,11 
@@ DetectAndPreparePlatformPciDevicePaths (
     NULL     ); -  return VisitAllPciInstances 
(DetectAndPreparePlatformPciDevicePath);+  Status = VisitAllInstancesOfProtocol 
(+             &gEfiPciIoProtocolGuid,+             
DetectAndPreparePlatformPciDevicePath+             );+  return Status; }  
/**diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformConsole.h 
b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformConsole.h
index a13f4b8b59..3713c21c45 100644
--- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformConsole.h
+++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformConsole.h
@@ -37,10 +37,9 @@ typedef struct {
  typedef EFI_STATUS-(EFIAPI *PROTOCOL_INSTANCE_CALLBACK)(+(EFIAPI 
*SIMPLE_PROTOCOL_INSTANCE_CALLBACK)(   IN EFI_HANDLE            Handle,-  IN 
VOID                 *Instance,-  IN VOID                 *Context+  IN VOID    
             *Instance   );  /**-- 
2.32.0.windows.2



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#89708): https://edk2.groups.io/g/devel/message/89708
Mute This Topic: https://groups.io/mt/91055222/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to