text: /** @file
  
    @copyright
    Copyright 2013 - 2021 Intel Corporation. <BR>
  
    SPDX-License-Identifier: BSD-2-Clause-Patent
  **/
  
  #include "PeiCommonBoardInitLib.h"
  #include <GpioPinsSklH.h>
  #include <Library/GpioLib.h>
  #include <Library/UbaGpioPlatformConfig.h>
  #include <Library/PchInfoLib.h>
  #include <Ppi/DynamicSiLibraryPpi.h>
  
  STATIC PLATFORM_GPIO_CONFIG_TABLE mGpioPlatformConfig = {
  
    PLATFORM_GPIO_CONFIG_SIGNATURE,
    PLATFORM_GPIO_CONFIG_VERSION,
  
    //MFG pad
    {
      GPIO_SKL_H_GPP_C9, //To be verified with the Board schematics
      {GpioPadModeGpio, GpioHostOwnGpio, GpioDirIn, GpioOutDefault, GpioIntDis, GpioPlatformReset, GpioTermNone}
    },
  
    GPIO_SKL_H_GPP_A18,
  
    //Recovery jumper pad
    GPIO_SKL_H_GPP_B14,
  
    //FM ADR Trigger
    GPIO_SKL_H_GPP_E3,
  
    //ADR enable GPIO output
    GPIO_SKL_H_GPP_D4,
  
    // Force to S1 config mode pad
    GPIO_SKL_H_GPP_A17,
  
    //
    // Used by PC Platforms
    //
    GPIO_SKL_H_GPP_B3,
    //
    // Used by PC platforms. This is the first GPIO pad of the pad series to indicate Board ID
    //
    GPIO_SKL_H_GPP_G12,
  
    //
    // WHEA SCI generation pad
    //
    GPIO_SKL_H_GPP_A12,
  
    //
    // Used to generate CPU HP SMI
    //
    GPIO_SKL_H_GPP_E6,
  
    //
    // FPGA error indicator
    //
    GPIO_SKL_H_GPP_E4,
  
    //
    // FPGA error indicator
    //
    GPIO_SKL_H_GPP_E5,
  
    // Flash Security
    UNUSED_GPIO,
  };
  
  STATIC PLATFORM_GPIO_CONFIG_TABLE mGpioMiniPchPlatformConfig = {
  
    PLATFORM_GPIO_CONFIG_SIGNATURE,
    PLATFORM_GPIO_CONFIG_VERSION,
  
    //MFG pad
    {
      UNUSED_GPIO, //To be verified with the Board schematics
      {0, 0, 0, 0, 0, 0, 0}
    },
  
    UNUSED_GPIO,
  
    //Recovery jumper pad
    UNUSED_GPIO,
  
    //FM ADR Trigger
    UNUSED_GPIO,
  
    //ADR enable GPIO output
    UNUSED_GPIO,
  
    // Force to S1 config mode pad
    UNUSED_GPIO,
  
    //
    // Used by PC Platforms
    //
    UNUSED_GPIO,
    //
    // Used by PC platforms. This is the first GPIO pad of the pad series to indicate Board ID
    //
    UNUSED_GPIO,
  
    //
    // WHEA SCI generation pad
    //
    UNUSED_GPIO,
  
    //
    // Used to generate CPU HP SMI
    //
    UNUSED_GPIO,
  
    //
    // FPGA error indicator
    //
    UNUSED_GPIO,
  
    //
    // FPGA error indicator
    //
    UNUSED_GPIO,
  
  };
  
  
  EFI_STATUS
  InstallGpioPlatformData (
    IN UBA_CONFIG_DATABASE_PPI    *UbaConfigPpi
  )
  {
    EFI_STATUS                  Status;
    DYNAMIC_SI_LIBARY_PPI       *DynamicSiLibraryPpi = NULL;
  
  
    Status = PeiServicesLocatePpi (&gDynamicSiLibraryPpiGuid, 0, NULL, &DynamicSiLibraryPpi);
    if (EFI_ERROR (Status)) {
      ASSERT_EFI_ERROR (Status);
      return Status;
    }
  
    if (DynamicSiLibraryPpi->GetPchSeries () == PchMini) {
      return UbaConfigPpi->AddData (
                                   UbaConfigPpi,
                                   &gPlatformGpioPlatformConfigDataGuid,
                                   &mGpioMiniPchPlatformConfig,
                                   sizeof(mGpioMiniPchPlatformConfig)
                                   );
    }
  
    Status = UbaConfigPpi->AddData (
                                   UbaConfigPpi,
                                   &gPlatformGpioPlatformConfigDataGuid,
                                   &mGpioPlatformConfig,
                                   sizeof(mGpioPlatformConfig)
                                   );
    ASSERT_EFI_ERROR (Status);
  
    return Status;
  }
  
  
  