From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id C296B21967BC4 for ; Fri, 9 Jun 2017 02:28:58 -0700 (PDT) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga105.jf.intel.com with ESMTP; 09 Jun 2017 02:30:07 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.39,317,1493708400"; d="dat'59?scan'59,208,59";a="1158493976" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by fmsmga001.fm.intel.com with ESMTP; 09 Jun 2017 02:30:07 -0700 Received: from fmsmsx126.amr.corp.intel.com (10.18.125.43) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 9 Jun 2017 02:30:06 -0700 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by FMSMSX126.amr.corp.intel.com (10.18.125.43) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 9 Jun 2017 02:30:05 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.116]) by shsmsx102.ccr.corp.intel.com ([169.254.2.146]) with mapi id 14.03.0319.002; Fri, 9 Jun 2017 17:30:02 +0800 From: "Guo, Mang" To: "edk2-devel@lists.01.org" CC: "Wei, David" , "Lu, ShifeiX A" , "Guo, Mang" Thread-Topic: [Patch][edk2-platforms/devel-MinnowBoard3-UDK2017] Add Benson GPIO Code Thread-Index: AdLhAve7NjLttkIkSS2fPX/9OjX5yQ== Date: Fri, 9 Jun 2017 09:30:01 +0000 Message-ID: <22D2C85ED001C54AA20BFE3B0E4751D15251A887@SHSMSX103.ccr.corp.intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: <22D2C85ED001C54AA20BFE3B0E4751D15251A887@SHSMSX103.ccr.corp.intel.com> x-originating-ip: [10.239.127.40] MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.22 Subject: [Patch][edk2-platforms/devel-MinnowBoard3-UDK2017] Add Benson GPIO Code X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jun 2017 09:28:58 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Add GPIO setting for Benson Glacier Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Guo Mang --- .../BensonGlacier/BoardInitDxe/BoardInitDxe.c | 68 ++++ .../BensonGlacier/BoardInitDxe/BoardInitDxe.h | 37 ++ .../BensonGlacier/BoardInitDxe/BoardInitDxe.inf | 52 +++ .../BensonGlacier/BoardInitPostMem/BoardGpios.c | 281 +++++++++++++++ .../BensonGlacier/BoardInitPostMem/BoardGpios.h | 388 +++++++++++++++++= ++++ .../BensonGlacier/BoardInitPostMem/BoardInit.c | 122 +++++++ .../BensonGlacier/BoardInitPostMem/BoardInit.h | 29 ++ .../BoardInitPostMem/BoardInitMiscs.c | 180 ++++++++++ .../BoardInitPostMem/BoardInitMiscs.h | 127 +++++++ .../BoardInitPostMem/BoardInitPostMem.inf | 77 ++++ .../BoardInitPostMem/PlatformInfoHob.c | 58 +++ .../BensonGlacier/BoardInitPreMem/BoardInit.c | 184 ++++++++++ .../BensonGlacier/BoardInitPreMem/BoardInit.h | 29 ++ .../BensonGlacier/BoardInitPreMem/BoardInitMiscs.c | 290 +++++++++++++++ .../BensonGlacier/BoardInitPreMem/BoardInitMiscs.h | 46 +++ .../BoardInitPreMem/BoardInitPreMem.inf | 58 +++ .../BensonGlacier/BoardInitPreMem/PlatformId.c | 227 ++++++++++++ .../BensonGlacier/BoardInitPreMem/PlatformId.h | 81 +++++ .../Board/LeafHill/BoardInitPostMem/BoardGpios.c | 2 + .../MinnowBoard3/BoardInitPostMem/BoardGpios.c | 3 + .../Common/Include/Guid/PlatformInfo.h | 1 + .../Common/Include/Guid/PlatformInfo_Aplk.h | 1 + .../PlatformSetupDxe/PlatformSetupDxe.c | 1 + .../PlatformDsc/Components.IA32.dsc | 2 + .../BroxtonPlatformPkg/PlatformDsc/Components.dsc | 1 + 25 files changed, 2345 insertions(+) create mode 100644 Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardIn= itDxe/BoardInitDxe.c create mode 100644 Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardIn= itDxe/BoardInitDxe.h create mode 100644 Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardIn= itDxe/BoardInitDxe.inf create mode 100644 Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardIn= itPostMem/BoardGpios.c create mode 100644 Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardIn= itPostMem/BoardGpios.h create mode 100644 Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardIn= itPostMem/BoardInit.c create mode 100644 Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardIn= itPostMem/BoardInit.h create mode 100644 Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardIn= itPostMem/BoardInitMiscs.c create mode 100644 Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardIn= itPostMem/BoardInitMiscs.h create mode 100644 Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardIn= itPostMem/BoardInitPostMem.inf create mode 100644 Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardIn= itPostMem/PlatformInfoHob.c create mode 100644 Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardIn= itPreMem/BoardInit.c create mode 100644 Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardIn= itPreMem/BoardInit.h create mode 100644 Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardIn= itPreMem/BoardInitMiscs.c create mode 100644 Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardIn= itPreMem/BoardInitMiscs.h create mode 100644 Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardIn= itPreMem/BoardInitPreMem.inf create mode 100644 Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardIn= itPreMem/PlatformId.c create mode 100644 Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardIn= itPreMem/PlatformId.h diff --git a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitDxe/B= oardInitDxe.c b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitDx= e/BoardInitDxe.c new file mode 100644 index 0000000..c5a001e --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitDxe/BoardIni= tDxe.c @@ -0,0 +1,68 @@ +/** @file + Board specific functions in DXE phase to be set as dynamic PCD and consu= med by + commmon platform code. + + Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php. + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ + +#include "BoardInitDxe.h" + +GET_BOARD_NAME mBgGetBoardNamePtr =3D BgGetBoardName; + +CHAR16* +EFIAPI +BgGetBoardName ( + IN UINT8 BoardId + ) +{ + STATIC CHAR16 BoardName[40]; + + DEBUG ((EFI_D_INFO, "BoardInitDxe: GetBoardName - Benson Glacier\n")); + + UnicodeSPrint (BoardName, sizeof (BoardName), L"Benson Glacier (%02x)", = BoardId); + + if (BoardId !=3D (UINT8) BOARD_ID_BENSON) { + return NULL; + } else { + return BoardName; + } +} + + +/** + Set PCDs for board specific functions. + + @param[in] ImageHandle ImageHandle of the loaded driver. + @param[in] SystemTable Pointer to the EFI System Table. + + @retval EFI_SUCCESS The handlers were registered successfully. + +**/ +EFI_STATUS +EFIAPI +BgBoardInitDxeConstructor ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + UINT8 BoardId; + + BoardId =3D PcdGet8 (PcdBoardId); + if (BoardId !=3D (UINT8) BOARD_ID_BENSON) { + return EFI_SUCCESS; + } + + PcdSet64 (PcdGetBoardNameFunc, (UINT64) mBgGetBoardNamePtr); + + return EFI_SUCCESS; +} + diff --git a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitDxe/B= oardInitDxe.h b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitDx= e/BoardInitDxe.h new file mode 100644 index 0000000..e8f2aa3 --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitDxe/BoardIni= tDxe.h @@ -0,0 +1,37 @@ +/** @file + The internal header file includes the common header files, defines + internal structure and functions used by ImageVerificationLib. + + Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php. + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ + +#ifndef __BOARD_INIT_DXE_H__ +#define __BOARD_INIT_DXE_H__ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +CHAR16* +EFIAPI +BgGetBoardName ( + IN UINT8 BoardId + ); + +#endif diff --git a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitDxe/B= oardInitDxe.inf b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInit= Dxe/BoardInitDxe.inf new file mode 100644 index 0000000..d7e7400 --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitDxe/BoardIni= tDxe.inf @@ -0,0 +1,52 @@ +## @file +# Board specific functions in DXE phase to be set as dynamic PCD and cons= umed by +# commmon platform code. +# +# Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.
+# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the B= SD License +# which accompanies this distribution. The full text of the license may b= e found at +# http://opensource.org/licenses/bsd-license.php. +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IM= PLIED. +# +## + +[Defines] + INF_VERSION =3D 0x00010005 + BASE_NAME =3D BgBoardInitDxe + FILE_GUID =3D 5FFC0339-D9DB-451D-A508-B7998173EF36 + MODULE_TYPE =3D DXE_DRIVER + VERSION_STRING =3D 1.0 + LIBRARY_CLASS =3D NULL|DXE_DRIVER DXE_RUNTIME_DRIVER DX= E_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER + CONSTRUCTOR =3D BgBoardInitDxeConstructor + +[Sources] + BoardInitDxe.c + BoardInitDxe.h + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + BroxtonPlatformPkg/PlatformPkg.dec + BroxtonSiPkg/BroxtonSiPkg.dec + +[LibraryClasses] + BaseLib + UefiLib + UefiBootServicesTableLib + UefiRuntimeServicesTableLib + DebugLib + PcdLib + PrintLib + +[Protocols] + +[Guids] + +[Pcd] + gPlatformModuleTokenSpaceGuid.PcdGetBoardNameFunc + gPlatformModuleTokenSpaceGuid.PcdBoardId + diff --git a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostM= em/BoardGpios.c b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInit= PostMem/BoardGpios.c new file mode 100644 index 0000000..eef62d9 --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/Boar= dGpios.c @@ -0,0 +1,281 @@ +/** @file + Gpio setting for multiplatform. + + Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php. + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ + +#include +#include +#include + + +/** + Returns the Correct GPIO table for Mobile/Desktop respectively. + Before call it, make sure PlatformInfoHob->BoardId&PlatformFlavor is get= correctly. + + @param[in] PeiServices General purpose services available to eve= ry PEIM. + @param[in] PlatformInfoHob PlatformInfoHob pointer with PlatformFlav= or specified. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_DEVICE_ERROR KSC fails to respond. + +**/ +EFI_STATUS +MultiPlatformGpioTableInit ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_PLATFORM_INFO_HOB *PlatformInfoHob + ) +{ + DEBUG ((DEBUG_INFO, "MultiPlatformGpioTableInit()...\n")); + DEBUG ((DEBUG_INFO, "PlatformInfoHob->BoardId: 0x%02X\n", PlatformInfoHo= b->BoardId)); + + // + // Select/modify the GPIO initialization data based on the Board ID. + // + switch (PlatformInfoHob->BoardId) { + case BOARD_ID_LFH_CRB: + case BOARD_ID_MINNOW: + case BOARD_ID_BENSON: + PlatformInfoHob->PlatformGpioSetting_SW =3D &mBXT_GpioInitData_SW[0]= ; + PlatformInfoHob->PlatformGpioSetting_W =3D &mBXT_GpioInitData_W[0]; + PlatformInfoHob->PlatformGpioSetting_NW =3D &mBXT_GpioInitData_NW[0]= ; + PlatformInfoHob->PlatformGpioSetting_N =3D &mBXT_GpioInitData_N[0]; + break; + default: + PlatformInfoHob->PlatformGpioSetting_SW =3D &mBXT_GpioInitData_SW[0]= ; + PlatformInfoHob->PlatformGpioSetting_W =3D &mBXT_GpioInitData_W[0]; + PlatformInfoHob->PlatformGpioSetting_NW =3D &mBXT_GpioInitData_NW[0]= ; + PlatformInfoHob->PlatformGpioSetting_N =3D &mBXT_GpioInitData_N[0]; + break; + } + + return EFI_SUCCESS; +} + + +/** + Set GPIO Lock for security. + +**/ +VOID +SetGpioPadCfgLock ( + VOID + ) +{ + UINT32 Data32; + + Data32 =3D 0; + + // + // JTAG + // + GpioLockPadCfg (N_TCK); + GpioLockPadCfg (N_TRST_B); + GpioLockPadCfg (N_TMS); + GpioLockPadCfg (N_TDI); + GpioLockPadCfg (N_TDO); + + // + // Power + // + GpioLockPadCfg (NW_PMIC_THERMTRIP_B); + GpioLockPadCfg (NW_PROCHOT_B); + + // + // Touch + // + GpioLockPadCfg (NW_GPIO_118); + GpioLockPadCfg (NW_GPIO_119); + GpioLockPadCfg (NW_GPIO_120); + GpioLockPadCfg (NW_GPIO_121); + GpioLockPadCfg (NW_GPIO_122); + GpioLockPadCfg (NW_GPIO_123); + + // + // SPI + // + GpioLockPadCfg (NW_GPIO_97); + GpioLockPadCfg (NW_GPIO_98); + GpioLockPadCfg (NW_GPIO_99); + GpioLockPadCfg (NW_GPIO_100); + GpioLockPadCfg (NW_GPIO_101); + GpioLockPadCfg (NW_GPIO_102); + GpioLockPadCfg (NW_GPIO_103); + GpioLockPadCfg (NW_FST_SPI_CLK_FB); + + // + // SMBus + // Set SMBus GPIO PAD_CFG.PADRSTCFG to Powergood + // + Data32 =3D GpioPadRead (SW_SMB_ALERTB); + Data32 &=3D ~(BIT31 | BIT30); + GpioPadWrite (SW_SMB_ALERTB, Data32); + + Data32 =3D GpioPadRead (SW_SMB_CLK); + Data32 &=3D ~(BIT31 | BIT30); + GpioPadWrite (SW_SMB_CLK, Data32); + + Data32 =3D GpioPadRead (SW_SMB_DATA); + Data32 &=3D ~(BIT31 | BIT30); + GpioPadWrite (SW_SMB_DATA, Data32); + + GpioLockPadCfg (SW_SMB_ALERTB); + GpioLockPadCfg (SW_SMB_CLK); + GpioLockPadCfg (SW_SMB_DATA); +} + + +/** + Returns the Correct GPIO table for Mobile/Desktop respectively. + Before call it, make sure PlatformInfoHob->BoardId&PlatformFlavor is get= correctly. + + @param[in] PeiServices General purpose services available to ev= ery PEIM. + @param[in] PlatformInfoHob PlatformInfoHob pointer with PlatformFla= vor specified. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_DEVICE_ERROR KSC fails to respond. + +**/ +EFI_STATUS +MultiPlatformGpioProgram ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_PLATFORM_INFO_HOB *PlatformInfoHob + ) +{ + UINTN VariableSize; + EFI_PEI_READ_ONLY_VARIABLE2_PPI *VariableServices; + SYSTEM_CONFIGURATION SystemConfiguration; + + VariableSize =3D sizeof (SYSTEM_CONFIGURATION); + ZeroMem (&SystemConfiguration, sizeof (SYSTEM_CONFIGURATION)); + + (*PeiServices)->LocatePpi ( + PeiServices, + &gEfiPeiReadOnlyVariable2PpiGuid, + 0, + NULL, + (VOID **) &VariableServices + ); + + VariableServices->GetVariable ( + VariableServices, + PLATFORM_SETUP_VARIABLE_NAME, + &gEfiSetupVariableGuid, + NULL, + &VariableSize, + &SystemConfiguration + ); + + DEBUG ((DEBUG_INFO, "MultiPlatformGpioProgram()...\n")); + + switch (PlatformInfoHob->BoardId) { + case BOARD_ID_LFH_CRB: + case BOARD_ID_MINNOW: + case BOARD_ID_BENSON: + // + // PAD programming + // + DEBUG ((DEBUG_INFO, "PAD programming, Board ID: 0x%X\n", PlatformInf= oHob->BoardId)); + GpioPadConfigTable (sizeof (mBXT_GpioInitData_N) / sizeof (mBXT_Gpio= InitData_N[0]), PlatformInfoHob->PlatformGpioSetting_N); + GpioPadConfigTable (sizeof (mBXT_GpioInitData_NW) / sizeof (mBXT_Gpi= oInitData_NW[0]), PlatformInfoHob->PlatformGpioSetting_NW); + GpioPadConfigTable (sizeof (mBXT_GpioInitData_W) / sizeof (mBXT_Gpio= InitData_W[0]), PlatformInfoHob->PlatformGpioSetting_W); + GpioPadConfigTable (sizeof (mBXT_GpioInitData_SW) / sizeof (mBXT_Gpi= oInitData_SW[0]), PlatformInfoHob->PlatformGpioSetting_SW); + + if (SystemConfiguration.ScIshEnabled =3D=3D 0) { + DEBUG ((DEBUG_INFO, "Switch ISH_I2C0 & ISH_I2C1 to LPSS_I2C5 and L= PSS I2C6. \n" )); + GpioPadConfigTable (sizeof (mBXT_GpioInitData_LPSS_I2C) / sizeof (= mBXT_GpioInitData_LPSS_I2C[0]), mBXT_GpioInitData_LPSS_I2C); + } + break; + default: + // + // PAD programming + // + GpioPadConfigTable (sizeof (mBXT_GpioInitData_N) / sizeof (mBXT_GpioIn= itData_N[0]), PlatformInfoHob->PlatformGpioSetting_N); + GpioPadConfigTable (sizeof (mBXT_GpioInitData_NW) / sizeof (mBXT_GpioI= nitData_NW[0]), PlatformInfoHob->PlatformGpioSetting_NW); + GpioPadConfigTable (sizeof (mBXT_GpioInitData_W) / sizeof (mBXT_GpioIn= itData_W[0]), PlatformInfoHob->PlatformGpioSetting_W); + GpioPadConfigTable (sizeof (mBXT_GpioInitData_SW) / sizeof (mBXT_GpioI= nitData_SW[0]), PlatformInfoHob->PlatformGpioSetting_SW); + + // + // Note1: This BXT BIOS WA needs to be applied after PAD programming t= o overwrite the GPIO setting to take effect. + // Note2: Enable TDO in BIOS SETUP as default for BXT Power-On only, n= eed to set to AUTO prior to deliver to customer. + // For BXT A0 Stepping only, to disable TDO GPIO to save power. + // + if (PlatformInfoHob->FABID =3D=3D FAB2) { + DEBUG ((DEBUG_INFO, "FAB ID: FAB2\n")); + GpioPadConfigTable(sizeof(mBXT_GpioInitData_FAB2)/sizeof(mBXT_GpioIn= itData_FAB2[0]), mBXT_GpioInitData_FAB2); + } + + if (SystemConfiguration.TDO =3D=3D 2) { //Auto + if (BxtA0 =3D=3D BxtStepping()) { + DEBUG ((DEBUG_INFO, " BxtA0 TDO disable\n" )); + } + } else if (SystemConfiguration.TDO =3D=3D 0) { // Disable + DEBUG ((DEBUG_INFO, " Setup option to disable TDO\n" )); + } + + if (SystemConfiguration.ScHdAudioIoBufferOwnership =3D=3D 3) { + DEBUG ((DEBUG_INFO, "HD Audio IO Buffer Ownership is I2S. Change GPI= O pin settings for it. \n" )); + GpioPadConfigTable (sizeof (mBXT_GpioInitData_Audio_SSP6) / sizeof (= mBXT_GpioInitData_Audio_SSP6[0]), mBXT_GpioInitData_Audio_SSP6); + } + + if (SystemConfiguration.PcieRootPortEn[4] =3D=3D FALSE) { + DEBUG ((DEBUG_INFO, "Onboard LAN disable. \n" )); + GpioPadConfigTable (sizeof (LomDisableGpio) / sizeof (LomDisableGpio= [0]), LomDisableGpio); + } + + if (SystemConfiguration.EPIEnable =3D=3D 1) { + DEBUG ((DEBUG_INFO, "Overriding GPIO 191 for EPI\n")); + GpioPadConfigTable (sizeof (mBXT_GpioInitData_EPI_Override) / sizeof= (mBXT_GpioInitData_EPI_Override[0]), mBXT_GpioInitData_EPI_Override); + } + if (SystemConfiguration.GpioLock =3D=3D TRUE) { + SetGpioPadCfgLock (); + } + DEBUG ((DEBUG_INFO, "No board ID available for this board ....\n")); + break; + } + + // + // Dump Community registers + // + DumpGpioCommunityRegisters (NORTH); + DumpGpioCommunityRegisters (NORTHWEST); + DumpGpioCommunityRegisters (WEST); + DumpGpioCommunityRegisters (SOUTHWEST); + + switch (PlatformInfoHob->BoardId) { + case BOARD_ID_LFH_CRB: + case BOARD_ID_MINNOW: + case BOARD_ID_BENSON: + // + // PAD programming + // + DEBUG ((DEBUG_INFO, "Dump Community pad registers, Board ID: 0x%X\n"= , PlatformInfoHob->BoardId)); + DumpGpioPadTable (sizeof (mBXT_GpioInitData_N) / sizeof (mBXT_GpioIn= itData_N[0]), PlatformInfoHob->PlatformGpioSetting_N); + DumpGpioPadTable (sizeof (mBXT_GpioInitData_NW) / sizeof (mBXT_GpioI= nitData_NW[0]), PlatformInfoHob->PlatformGpioSetting_NW); + DumpGpioPadTable (sizeof (mBXT_GpioInitData_W) / sizeof (mBXT_GpioIn= itData_W[0]), PlatformInfoHob->PlatformGpioSetting_W); + DumpGpioPadTable (sizeof (mBXT_GpioInitData_SW) / sizeof (mBXT_GpioI= nitData_SW[0]), PlatformInfoHob->PlatformGpioSetting_SW); + break; + default: + // + // Dump Community pad registers + // + DumpGpioPadTable (sizeof (mBXT_GpioInitData_N) / sizeof (mBXT_GpioInit= Data_N[0]), PlatformInfoHob->PlatformGpioSetting_N); + DumpGpioPadTable (sizeof (mBXT_GpioInitData_NW) / sizeof (mBXT_GpioIni= tData_NW[0]), PlatformInfoHob->PlatformGpioSetting_NW); + DumpGpioPadTable (sizeof (mBXT_GpioInitData_W) / sizeof (mBXT_GpioInit= Data_W[0]), PlatformInfoHob->PlatformGpioSetting_W); + DumpGpioPadTable (sizeof (mBXT_GpioInitData_SW) / sizeof (mBXT_GpioIni= tData_SW[0]), PlatformInfoHob->PlatformGpioSetting_SW); + + break; + } + + return EFI_SUCCESS; +} + diff --git a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostM= em/BoardGpios.h b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInit= PostMem/BoardGpios.h new file mode 100644 index 0000000..92387e4 --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/Boar= dGpios.h @@ -0,0 +1,388 @@ +/** @file + GPIO setting for Broxton. + + Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php. + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ + +#ifndef _BOARDGPIOS_H_ +#define _BOARDGPIOS_H_ + +#include +#include"ChipsetAccess.h" +#include"PlatformBaseAddresses.h" +#include "BoardInitMiscs.h" +#include +#include +#include +#include + +/** +GPIO input pin interrupt type configuration: + +Interrupt type GPI Route Host SW Enable/S= tatus Comment + GPI None GPIO Driver Mode GPI Int= errupt Status\Enable GPIO driver to handle it. + Direct IRQ GPIROUTIOXAPIC ACPI Mode = IRQ number is fixed to each GPIO pin= in N and NW communities. + SCI/GPE GPIROUTSCI ACPI Mode GPI Gen= eral Purpose Events Status\Enable SCI is not supported in BXT A0. The = reason is because the PMC lacks the ACPI registers and status tunneling. Th= is will be fixed in derivatives. + SMI GPIROUTSMI ACPI Mode SMI Sta= tus\Enable Don't enable SMI for BXT0. It is cur= rently unsupported by the PMC. + NMI GPIROUTNMI ACPI Mode = Not supported on BXT. + +Interrupt trigger type Configuration Comment + Rising edge Edge+No_invert + Falling edge Edge+Invert + Both edge BothEdge+Invert + Level high Level+No_invert Direct = IRQ pin mostly use this config.Wake pin MUST use it. + Level low Level+Invert + +HostSw: + * All GPIO pins which are 'M0' PMode, have to set HostSw to GPIO_D, indic= ating GPIO driver owns it. + * Others, such as Native function(M1,M2,M3..) and SCI/SMI/NMI/Direct IRQ,= need to set it to ACPI_D or NA. + * Default is ACPI_D for NA + +IOSstate: + * For interrupt or wake pin, need to set it to TxDRxE. + +Wake_Enabled: + * It is for direct IRQ only. + +**/ + +// +// North Community +// +BXT_GPIO_PAD_INIT mBXT_GpioInitData_N[] =3D +{ + // + // Group Pin#: pad_name, PMode,GPIO_Config,HostSw,G= PO_STATE,INT_Trigger, Wake_Enabled ,Term_H_L,Inverted, GPI_ROUT, IOSstae, = IOSTerm, MMIO_Offset ,Community + // + BXT_GPIO_PAD_CONF(L"GPIO_0", M0 , GPO , GPIO_D= ,HI , NA , Wake_Disabled, P_5K_L , NA , NA,NA , = NA , GPIO_PADBAR+0x0000, NORTH), + BXT_GPIO_PAD_CONF(L"GPIO_1", M0 , GPO , GPIO_D= ,HI , NA , Wake_Disabled, P_5K_L , NA , NA,NA , = NA , GPIO_PADBAR+0x0008, NORTH), + BXT_GPIO_PAD_CONF(L"GPIO_2", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA, HizRx0I, = SAME, GPIO_PADBAR+0x0010, NORTH), + BXT_GPIO_PAD_CONF(L"GPIO_3", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA, HizRx0I, = SAME, GPIO_PADBAR+0x0018, NORTH), + BXT_GPIO_PAD_CONF(L"GPIO_4", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA, HizRx0I, = SAME, GPIO_PADBAR+0x0020, NORTH), + BXT_GPIO_PAD_CONF(L"GPIO_5", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA, HizRx0I, = SAME, GPIO_PADBAR+0x0028, NORTH),//Mux with CSE_PG based on the SW3 swit= ch + BXT_GPIO_PAD_CONF(L"GPIO_6", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA, HizRx0I, = SAME, GPIO_PADBAR+0x0030, NORTH),//Mux with DISP1_RST_N based on the SW3= switch + BXT_GPIO_PAD_CONF(L"GPIO_7", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA, HizRx0I, = SAME, GPIO_PADBAR+0x0038, NORTH),//Mux with DISP1_TOUCH_INT_N based on t= he SW3 switch + BXT_GPIO_PAD_CONF(L"GPIO_8", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA, HizRx0I, = SAME, GPIO_PADBAR+0x0040, NORTH),//Mux with DISP1_TOUCH_RST_N based on t= he SW3 switch + BXT_GPIO_PAD_CONF(L"GPIO_9", M0 , GPO , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA ,NA , = NA, GPIO_PADBAR+0x0048, NORTH),//Feature: LB + BXT_GPIO_PAD_CONF(L"GPIO_10", M0 , GPO , NA ,= NA , NA , Wake_Enabled , P_20K_L, Inverted,IOAPIC, TxDRxE , = NA, GPIO_PADBAR+0x0050, NORTH),//Feature: LB =20 + BXT_GPIO_PAD_CONF(L"GPIO_11", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA ,NA , = NA, GPIO_PADBAR+0x0058, NORTH),//Feature: LB + BXT_GPIO_PAD_CONF(L"GPIO_12", M1 , NA , NA ,= NA , NA , Wake_Enabled , P_20K_L, NA , NA ,NA , = NA, GPIO_PADBAR+0x0060, NORTH),//Feature: LB + BXT_GPIO_PAD_CONF(L"GPIO_13", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA ,NA , = NA, GPIO_PADBAR+0x0068, NORTH),//Feature: LB + BXT_GPIO_PAD_CONF(L"GPIO_14", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA ,NA , = NA, GPIO_PADBAR+0x0070, NORTH),//Feature: LB + BXT_GPIO_PAD_CONF(L"GPIO_15", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA ,NA , = NA, GPIO_PADBAR+0x0078, NORTH),//Feature: LB + BXT_GPIO_PAD_CONF(L"GPIO_16", M0 , GPI , NA ,= NA , Edge , Wake_Disabled, P_20K_H, Inverted,IOAPIC, HizRx0I ,D= isPuPd, GPIO_PADBAR+0x0080, NORTH),//Feature:SIM Card Detect Net in= Sch: SIM_CON_CD1, falling edge trigger + BXT_GPIO_PAD_CONF(L"GPIO_17", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA, NA , = NA, GPIO_PADBAR+0x0088, NORTH),//Feature: LB + BXT_GPIO_PAD_CONF(L"GPIO_18", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA, NA , = NA, GPIO_PADBAR+0x0090, NORTH),//Feature: LB + BXT_GPIO_PAD_CONF(L"GPIO_19", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA, NA , = NA, GPIO_PADBAR+0x0098, NORTH),//Feature: LB + BXT_GPIO_PAD_CONF(L"GPIO_20", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA, NA , = NA, GPIO_PADBAR+0x00A0, NORTH),//Feature: LB + BXT_GPIO_PAD_CONF(L"GPIO_21", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA, NA , = NA, GPIO_PADBAR+0x00A8, NORTH),//Feature: LB + BXT_GPIO_PAD_CONF(L"GPIO_22", M0 , GPIO ,GPIO_D ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA, NA , = NA, GPIO_PADBAR+0x00B0, NORTH),//Feature: LB + BXT_GPIO_PAD_CONF(L"GPIO_23", M0 , GPIO ,GPIO_D ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA, NA , = NA, GPIO_PADBAR+0x00B8, NORTH),//Feature: LB USB Power in LFH + BXT_GPIO_PAD_CONF(L"GPIO_24", M0 , GPO ,GPIO_D ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA, NA , = NA, GPIO_PADBAR+0x00C0, NORTH),//SATA_DEVSLP0 + BXT_GPIO_PAD_CONF(L"GPIO_25", M0 , GPO ,GPIO_D ,= NA , Level , Wake_Disabled, P_20K_H, Inverted, SCI, NA , = NA, GPIO_PADBAR+0x00C8, NORTH),//Feature:ODD MD/DA SCI Net in= Sch: SATA_ODD_DA_IN + BXT_GPIO_PAD_CONF(L"GPIO_26", M0 , GPIO ,GPIO_D ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA, NA , = NA, GPIO_PADBAR+0x00D0, NORTH),//SATA_LEDN + BXT_GPIO_PAD_CONF(L"GPIO_27", M0 , GPO , GPIO_D,= HI , NA , Wake_Disabled, P_20K_L, NA , NA, NA , = NA, GPIO_PADBAR+0x00D8, NORTH),//Feature:DFU Net in= Sch: NFC_DFU + BXT_GPIO_PAD_CONF(L"GPIO_28", M2 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x00E0, NORTH),// Net in= Sch: ISH_GPIO10 + BXT_GPIO_PAD_CONF(L"GPIO_29", M2 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x00E8, NORTH),// Net in= Sch: ISH_GPIO11 + BXT_GPIO_PAD_CONF(L"GPIO_30", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x00F0, NORTH),// Net in= Sch: ISH_GPIO12 + BXT_GPIO_PAD_CONF(L"GPIO_31", M5 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x00F8, NORTH),//Feature: SUSCLK1 + BXT_GPIO_PAD_CONF(L"GPIO_32", M5 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0100, NORTH),// Net in= Sch: SUSCLK2 + BXT_GPIO_PAD_CONF(L"GPIO_33", M5 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0108, NORTH),//Feature: SUSCLK3 + BXT_GPIO_PAD_CONF(L"GPIO_34 PWM0", M0 , GPIO , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA, NA , = NA, GPIO_PADBAR+0x0110, NORTH), + BXT_GPIO_PAD_CONF(L"GPIO_35 PWM1", M0 , GPIO , NA ,= NA , NA , Wake_Disabled, P_5K_H , NA , NA, NA , = NA, GPIO_PADBAR+0x0118, NORTH), + BXT_GPIO_PAD_CONF(L"GPIO_36 PWM2", M0 , GPIO , NA = , NA , NA , Wake_Disabled, P_20K_L, NA , NA, NA ,= NA, GPIO_PADBAR+0x0120, NORTH),//Feature: PWM + BXT_GPIO_PAD_CONF(L"GPIO_38 LPSS_UART0_RXD", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA, HizRx1I,D= isPuPd, GPIO_PADBAR+0x0130, NORTH), + BXT_GPIO_PAD_CONF(L"GPIO_39 LPSS_UART0_TXD", M0 , GPI , NA = , NA , NA , Wake_Disabled, P_20K_H, NA , NA,Last_Value,= DisPuPd, GPIO_PADBAR+0x0138, NORTH), + BXT_GPIO_PAD_CONF(L"GPIO_40 LPSS_UART0_RTS_B", M0 , GPI , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA,Last_Value,D= isPuPd, GPIO_PADBAR+0x0140, NORTH), + BXT_GPIO_PAD_CONF(L"GPIO_41 LPSS_UART0_CTS_B", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA, HizRx1I,D= isPuPd, GPIO_PADBAR+0x0148, NORTH), + BXT_GPIO_PAD_CONF(L"GPIO_42 LPSS_UART1_RXD", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA, HizRx1I,D= isPuPd, GPIO_PADBAR+0x0150, NORTH), + BXT_GPIO_PAD_CONF(L"GPIO_43 LPSS_UART1_TXD", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA, HizRx0I,D= isPuPd, GPIO_PADBAR+0x0158, NORTH), + BXT_GPIO_PAD_CONF(L"GPIO_44 LPSS_UART1_RTS_B", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA,Last_Value,D= isPuPd, GPIO_PADBAR+0x0160, NORTH), + BXT_GPIO_PAD_CONF(L"GPIO_45 LPSS_UART1_CTS_B", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_NONE , NA , NA, HizRx0I,D= isPuPd, GPIO_PADBAR+0x0168, NORTH), + BXT_GPIO_PAD_CONF(L"GPIO_46 LPSS_UART1_CTS_B", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_NONE , NA , NA, HizRx0I,D= isPuPd, GPIO_PADBAR+0x0170, NORTH), + BXT_GPIO_PAD_CONF(L"GPIO_47 LPSS_UART1_CTS_B", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_NONE , NA , NA, HizRx0I,D= isPuPd, GPIO_PADBAR+0x0178, NORTH), + BXT_GPIO_PAD_CONF(L"GPIO_48 LPSS_UART2_RTS_B", M1 , NA , NA , = NA , NA , Wake_Disabled, P_20K_H, NA , NA, NA , = NA, GPIO_PADBAR+0x0180, NORTH),//Not used on RVP + BXT_GPIO_PAD_CONF(L"GPIO_49 LPSS_UART2_CTS_B", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA, NA , = NA, GPIO_PADBAR+0x0188, NORTH),//Feature: LPSS_UART1 + BXT_GPIO_PAD_CONF(L"GPIO_62 GP_CAMERASB00", M0 , GPO , GPIO_D,= LO , NA , Wake_Disabled, P_20K_L, NA , NA, HizRx0I, = NA, GPIO_PADBAR+0x0190, NORTH),//CAM_FLASH_RST_N + BXT_GPIO_PAD_CONF(L"GPIO_63 GP_CAMERASB01", M0 , GPO , GPIO_D,= LO , NA , Wake_Disabled, P_20K_L, NA , NA, HizRx0I, = NA, GPIO_PADBAR+0x0198, NORTH),//CAM_FLASH_TORCH + BXT_GPIO_PAD_CONF(L"GPIO_64 GP_CAMERASB02", M0 , GPO , GPIO_D,= LO , NA , Wake_Disabled, P_20K_L, NA , NA, HizRx0I, = NA, GPIO_PADBAR+0x01A0, NORTH),//CAM_FLASH_TRIG + BXT_GPIO_PAD_CONF(L"GPIO_65 GP_CAMERASB03", M0 , GPO , GPIO_D,= LO , NA , Wake_Disabled, P_20K_L, NA , NA, HizRx0I, = NA, GPIO_PADBAR+0x01A8, NORTH),//CAM_GRP1_RST_N + BXT_GPIO_PAD_CONF(L"GPIO_66 GP_CAMERASB04", M0 , GPO , GPIO_D,= LO , NA , Wake_Disabled, P_20K_L, NA , NA, HizRx0I, = NA, GPIO_PADBAR+0x01B0, NORTH),//CAM_GRP2_RST_N + BXT_GPIO_PAD_CONF(L"GPIO_67 GP_CAMERASB05", M0 , GPO , GPIO_D,= LO , NA , Wake_Disabled, P_20K_L, NA , NA, HizRx0I, = NA, GPIO_PADBAR+0x01B8, NORTH),//CAM_GRP3_RST_N + BXT_GPIO_PAD_CONF(L"GPIO_68 GP_CAMERASB06", M0 , GPO , GPIO_D,= LO , NA , Wake_Disabled, P_20K_L, NA , NA, HizRx0I, = NA, GPIO_PADBAR+0x01C0, NORTH),//CAM_GRP4_RST_N + BXT_GPIO_PAD_CONF(L"GPIO_69 GP_CAMERASB07", M0 , GPO , GPIO_D,= LO , NA , Wake_Disabled, P_20K_L, NA , NA, HizRx0I, = NA, GPIO_PADBAR+0x01C8, NORTH),//CAM_XENON_CHRG + BXT_GPIO_PAD_CONF(L"GPIO_70 GP_CAMERASB08", M0 , GPO , GPIO_D,= LO , NA , Wake_Disabled, P_20K_L, NA , NA, HizRx0I, = NA, GPIO_PADBAR+0x01D0, NORTH),//CAM_AFLED_TRIG + BXT_GPIO_PAD_CONF(L"GPIO_71 GP_CAMERASB09", M0 , GPO , GPIO_D,= LO , NA , Wake_Disabled, P_20K_L, NA , NA, HizRx0I, = NA, GPIO_PADBAR+0x01D8, NORTH),//CAM_SPARE + BXT_GPIO_PAD_CONF(L"GPIO_72 GP_CAMERASB10", M0 , GPI , GPIO_D,= NA , NA , Wake_Disabled, P_20K_H, NA , NA, HizRx0I, = NA, GPIO_PADBAR+0x01E0, NORTH),//CAM_SPARE + BXT_GPIO_PAD_CONF(L"GPIO_73 GP_CAMERASB11", M0 , GPO , GPIO_D,= LO , NA , Wake_Disabled, P_20K_L, NA , NA, HizRx0I, = NA, GPIO_PADBAR+0x01E8, NORTH),//CAM_SPARE + BXT_GPIO_PAD_CONF(L"TCK", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x01F0, NORTH), + BXT_GPIO_PAD_CONF(L"TRST_B", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x01F8, NORTH), + BXT_GPIO_PAD_CONF(L"TMS", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0200, NORTH), + BXT_GPIO_PAD_CONF(L"TDI", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0208, NORTH), + BXT_GPIO_PAD_CONF(L"CX_PMODE", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_NONE , NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0210, NORTH), + BXT_GPIO_PAD_CONF(L"CX_PREQ_B", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0218, NORTH), + BXT_GPIO_PAD_CONF(L"JTAGX", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0220, NORTH), + BXT_GPIO_PAD_CONF(L"CX_PRDY_B", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0228, NORTH), + BXT_GPIO_PAD_CONF(L"TDO", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0230, NORTH), + BXT_GPIO_PAD_CONF(L"CNV_BRI_DT", M0 , GPI , GPIO_D,= NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0238, NORTH),//Not used on RVP + BXT_GPIO_PAD_CONF(L"GPIO_217 CNV_BRI_RSP", M0 , GPI , GPIO_D,= NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0240, NORTH), + BXT_GPIO_PAD_CONF(L"GPIO_218 CNV_RGI_DT", M0 , GPO , GPIO_D,= HI , NA , Wake_Disabled, P_1K_H , NA , NA,NA , = NA, GPIO_PADBAR+0x0248, NORTH), + BXT_GPIO_PAD_CONF(L"GPIO_219 CNV_RGI_RSP", M1 , NA , NA, = HI , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0250, NORTH),//EMMC Reset + BXT_GPIO_PAD_CONF(L"SVID0_ALERT_B", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_NONE , NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0258, NORTH), + BXT_GPIO_PAD_CONF(L"SVID0_DATA", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0260, NORTH), + BXT_GPIO_PAD_CONF(L"SVID0_CLK", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0268, NORTH), +}; + +// +// North West Community +// +BXT_GPIO_PAD_INIT mBXT_GpioInitData_NW [] =3D +{ + // + // Group Pin#: pad_name, PMode,GPIO_Config,HostSw,G= PO_STATE,INT_Trigger, Wake_Enabled, Term_H_L,Inverted,GPI_ROUT,IOSstae, IO= STerm, MMIO_Offset , Community + // + BXT_GPIO_PAD_CONF(L"GPIO_187 HV_DDI0_DDC_SDA", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,HizRx0I , = SAME, GPIO_PADBAR+0x0000, NORTHWEST),//DDI0_CTRL_DATA + BXT_GPIO_PAD_CONF(L"GPIO_188 HV_DDI0_DDC_SCL", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,HizRx0I , = SAME, GPIO_PADBAR+0x0008, NORTHWEST),//DDI0_CTRL_CLK + BXT_GPIO_PAD_CONF(L"GPIO_189 HV_DDI1_DDC_SDA", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_2K_H, NA , NA ,NA , = NA, GPIO_PADBAR+0x0010, NORTHWEST),//DDI1_CTRL_DATA + BXT_GPIO_PAD_CONF(L"GPIO_190 HV_DDI1_DDC_SCL", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_2K_H, NA , NA ,NA , = NA, GPIO_PADBAR+0x0018, NORTHWEST),//DDI1_CTRL_CLK + BXT_GPIO_PAD_CONF(L"GPIO_191 DBI_SDA", M0 , HI_Z ,GPIO_D, = HI , NA ,Wake_Disabled, P_20K_H, NA , NA ,NA , = NA, GPIO_PADBAR+0x0020, NORTHWEST),//Feature: SD_I2C MUX SEL Net = in Sch: INA_MUX_SEL // Due to Silicon bug, unable to set GPIO to 1 - change= d to HI_Z + BXT_GPIO_PAD_CONF(L"GPIO_192 DBI_SCL", M0 , GPO ,GPIO_D, = LO , NA ,Wake_Disabled, P_20K_L, NA , NA ,NA , = NA, GPIO_PADBAR+0x0028, NORTHWEST),//Feature: Codec Power Down PD Net= in Sch: SOC_CODEC_PD_N + BXT_GPIO_PAD_CONF(L"GPIO_193 PANEL0_VDDEN", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_20K_L, NA , NA ,D0RxDRx0I , = SAME, GPIO_PADBAR+0x0030, NORTHWEST),//DISP0_VDDEN + BXT_GPIO_PAD_CONF(L"GPIO_194 PANEL0_BKLTEN", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_20K_L, NA , NA ,D0RxDRx0I , = SAME, GPIO_PADBAR+0x0038, NORTHWEST),//DISP0_BKLTEN + BXT_GPIO_PAD_CONF(L"GPIO_195 PANEL0_BKLTCTL", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_20K_L, NA , NA ,D0RxDRx0I , = SAME, GPIO_PADBAR+0x0040, NORTHWEST),//DISP0_BLTCTL + BXT_GPIO_PAD_CONF(L"GPIO_196 PANEL1_VDDEN", M0 , GPO ,GPIO_D, = LO , NA ,Wake_Disabled, P_20K_L, NA , NA ,NA , = NA, GPIO_PADBAR+0x0048, NORTHWEST),//DISP1_VDDEN + BXT_GPIO_PAD_CONF(L"GPIO_197 PANEL1_BKLTEN", M0 , GPO ,GPIO_D, = LO , NA ,Wake_Disabled, P_20K_L, NA , NA ,NA , = NA, GPIO_PADBAR+0x0050, NORTHWEST),//DISP1_BKLTEN + BXT_GPIO_PAD_CONF(L"GPIO_198 PANEL1_BKLTCTL", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_20K_L, NA , NA ,Last_Value, = SAME, GPIO_PADBAR+0x0058, NORTHWEST),//DISP1_BLTCTL + BXT_GPIO_PAD_CONF(L"GPIO_199 DBI_CSX", M2 , NA , NA , = NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,NA , = NA, GPIO_PADBAR+0x0060, NORTHWEST),//HDMI_HPD + BXT_GPIO_PAD_CONF(L"GPIO_200 DBI_RESX", M2 , NA , NA , = NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,NA , = NA, GPIO_PADBAR+0x0068, NORTHWEST),//EDP_HPD + BXT_GPIO_PAD_CONF(L"GPIO_201 GP_INTD_DSI_TE1", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_20K_L, NA , NA ,D0RxDRx0I , = SAME, GPIO_PADBAR+0x0070, NORTHWEST),//DISP_INTD_TE1 + BXT_GPIO_PAD_CONF(L"GPIO_202 GP_INTD_DSI_TE2", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_20K_L, NA , NA ,D0RxDRx0I , = SAME, GPIO_PADBAR+0x0078, NORTHWEST),//DISP_INTD_TE2 + BXT_GPIO_PAD_CONF(L"GPIO_203 USB_OC0_B", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,IOS_Masked, = SAME, GPIO_PADBAR+0x0080, NORTHWEST),//HOST_USB_OC_N + BXT_GPIO_PAD_CONF(L"GPIO_204 USB_OC1_B", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,IOS_Masked, = SAME, GPIO_PADBAR+0x0088, NORTHWEST),//OTG_USB_OC_N, PMIC_GPIO0_P0_UIBT + BXT_GPIO_PAD_CONF(L"PMC_SPI_FS0", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,Last_Value, = SAME, GPIO_PADBAR+0x0090, NORTHWEST), + BXT_GPIO_PAD_CONF(L"PMC_SPI_FS1", M2 , NA , NA , = NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,Last_Value, = SAME, GPIO_PADBAR+0x0098, NORTHWEST), + BXT_GPIO_PAD_CONF(L"PMC_SPI_FS2", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,Last_Value, = SAME, GPIO_PADBAR+0x00A0, NORTHWEST), + BXT_GPIO_PAD_CONF(L"PMC_SPI_RXD", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_20K_L, NA , NA ,Last_Value, = SAME, GPIO_PADBAR+0x00A8, NORTHWEST), + BXT_GPIO_PAD_CONF(L"PMC_SPI_TXD", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_20K_L, NA , NA ,Last_Value, = SAME, GPIO_PADBAR+0x00B0, NORTHWEST), + BXT_GPIO_PAD_CONF(L"PMC_SPI_CLK", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_20K_L, NA , NA ,Last_Value, = SAME, GPIO_PADBAR+0x00B8, NORTHWEST), + BXT_GPIO_PAD_CONF(L"PMIC_PWRGOOD", M0 , GPO ,GPIO_D, = HI , NA ,Wake_Disabled, P_1K_H , NA , NA ,NA , = NA, GPIO_PADBAR+0x00C0, NORTHWEST),//Feature: Reset Net i= n Sch: GNSS_RST_N + BXT_GPIO_PAD_CONF(L"PMIC_RESET_B", M0 , GPI ,GPIO_D, = NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,IOS_Masked, = SAME, GPIO_PADBAR+0x00C8, NORTHWEST),//Not used on RVP + BXT_GPIO_PAD_CONF(L"GPIO_213 PMIC_SDWN_B", M0 , GPI ,GPIO_D, = NA , NA ,Wake_Disabled, P_20K_L, NA , NA ,Last_Value, = SAME, GPIO_PADBAR+0x00D0, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_214 PMIC_BCUDISW2", M0 , GPO ,GPIO_D, = HI , NA ,Wake_Disabled, P_20K_L, NA , NA ,NA , = NA, GPIO_PADBAR+0x00D8, NORTHWEST),//Feature: BT WAKE to Device Net i= n Sch: NGFF_BT_DEV_WAKE_N + BXT_GPIO_PAD_CONF(L"GPIO_215 PMIC_BCUDISCRIT", M0 , GPO ,GPIO_D, = HI , NA ,Wake_Disabled, P_20K_L, NA , NA ,NA , = NA, GPIO_PADBAR+0x00E0, NORTHWEST),//Feature: RF_KILL_GPS Net i= n Sch: RF_KILL_GPS_1P8_N + BXT_GPIO_PAD_CONF(L"PMIC_THERMTRIP_B", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,Last_Value, = SAME, GPIO_PADBAR+0x00E8, NORTHWEST), + BXT_GPIO_PAD_CONF(L"PMIC_STDBY", M0 , GPI ,GPIO_D, = NA , NA ,Wake_Disabled, P_20K_L, NA , NA ,NA , = NA, GPIO_PADBAR+0x00F0, NORTHWEST),//Feature: WIFI_Disable Net i= n Sch: WIFI_DISABLE1_1P8_N + BXT_GPIO_PAD_CONF(L"PROCHOT_B", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,HizRx1I , = SAME, GPIO_PADBAR+0x00F8, NORTHWEST), + BXT_GPIO_PAD_CONF(L"PMIC_I2C_SCL", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_1K_H , NA , NA ,IOS_Masked, = SAME, GPIO_PADBAR+0x0100, NORTHWEST), + BXT_GPIO_PAD_CONF(L"PMIC_I2C_SDA", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_1K_H , NA , NA ,IOS_Masked, = SAME, GPIO_PADBAR+0x0108, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_74 AVS_I2S1_MCLK", M1 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA, GPIO_PADBAR+0x0110, NORTHWEST),//Feature:AVS_I2S1_MCLK + BXT_GPIO_PAD_CONF(L"GPIO_75 AVS_I2S1_BCLK", M1 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA, GPIO_PADBAR+0x0118, NORTHWEST),//Feature:AVS_I2S1_BCLK + BXT_GPIO_PAD_CONF(L"GPIO_76 AVS_I2S1_WS_SYNC", M0 , GPO ,GPIO_D, = HI , NA ,Wake_Disabled, P_20K_L, NA , NA ,NA , = NA, GPIO_PADBAR+0x0120, NORTHWEST),//Feature:Wake + BXT_GPIO_PAD_CONF(L"GPIO_77 AVS_I2S1_SDI", M0 , GPI , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA, GPIO_PADBAR+0x0128, NORTHWEST),//Feature:LPE Hdr + BXT_GPIO_PAD_CONF(L"GPIO_78 AVS_I2S1_SDO", M0 , GPI ,GPIO_D = ,NA , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA, GPIO_PADBAR+0x0130, NORTHWEST),//Feature:LPE Hdr + BXT_GPIO_PAD_CONF(L"GPIO_79 AVS_M_CLK_A1", M2 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0138, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_80 AVS_M_CLK_B1", M2 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0140, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_81 AVS_M_DATA_1", M2 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,TxDRxE , = EnPd, GPIO_PADBAR+0x0148, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_82 AVS_M_CLK_AB2", M0 , GPI ,GPIO_D = , NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Maske= d, SAME, GPIO_PADBAR+0x0150, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_83 AVS_M_DATA_2", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_20K_L, NA , NA ,TxDRxE , = EnPd, GPIO_PADBAR+0x0158, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_84 AVS_I2S2_MCLK", M2 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA, GPIO_PADBAR+0x0160, NORTHWEST),//Spare signal, set to GPI. Net i= n Sch:HDA_RSTB + BXT_GPIO_PAD_CONF(L"GPIO_85 AVS_I2S2_BCLK", M1 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0168, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_86 AVS_I2S2_WS_SYNC", M1 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0170, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_87 AVS_I2S2_SDI", M1 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0178, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_88 AVS_I2S2_SDO", M1 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0180, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_89 AVS_I2S3_BCLK", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_20K_L, NA , NA ,IOS_Masked, = SAME, GPIO_PADBAR+0x0188, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_90 AVS_I2S3_WS_SYNC", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_20K_L, NA , NA ,IOS_Masked, = SAME, GPIO_PADBAR+0x0190, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_91 AVS_I2S3_SDI", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_20K_L, NA , NA ,TxDRxE , = EnPd, GPIO_PADBAR+0x0198, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_92 AVS_I2S3_SDO", M0 , GPI ,GPIO_D, = NA , NA ,Wake_Disabled, P_20K_L, NA , NA ,IOS_Masked, = SAME, GPIO_PADBAR+0x01A0, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_97 FST_SPI_CS0_B", M1 , NA , NA , = NA , NA ,Wake_Disabled, Native_control,NA, NA ,IOS_Masked, = SAME, GPIO_PADBAR+0x01A8, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_98 FST_SPI_CS1_B", M1 , NA , NA , = NA , NA ,Wake_Disabled, Native_control,NA, NA ,IOS_Masked, = SAME, GPIO_PADBAR+0x01B0, NORTHWEST),//TPM_SPI_CS1 + BXT_GPIO_PAD_CONF(L"GPIO_99 FST_SPI_MOSI_IO0", M1 , NA , NA , = NA , NA ,Wake_Disabled, Native_control,NA, NA ,IOS_Masked, = SAME, GPIO_PADBAR+0x01B8, NORTHWEST), //Default for BXT is Native + BXT_GPIO_PAD_CONF(L"GPIO_100 FST_SPI_MISO_IO1",M1 , NA , NA , = NA , NA ,Wake_Disabled, Native_control,NA, NA ,IOS_Masked, = SAME, GPIO_PADBAR+0x01C0, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_101 FST_SPI_IO2", M1 , NA , NA , = NA , NA ,Wake_Disabled, Native_control,NA, NA ,IOS_Masked, = SAME, GPIO_PADBAR+0x01C8, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_102 FST_SPI_IO3", M1 , NA , NA , = NA , NA ,Wake_Disabled, Native_control,NA, NA ,IOS_Masked, = SAME, GPIO_PADBAR+0x01D0, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_103 FST_SPI_CLK", M1 , NA , NA , = NA , NA ,Wake_Disabled, Native_control,NA, NA ,IOS_Masked, = SAME, GPIO_PADBAR+0x01D8, NORTHWEST), + BXT_GPIO_PAD_CONF(L"FST_SPI_CLK_FB", M1 , NA , NA , = NA , NA ,Wake_Disabled, P_NONE , NA , NA ,IOS_Masked, = SAME, GPIO_PADBAR+0x01E0, NORTHWEST),//no pin out + BXT_GPIO_PAD_CONF(L"GPIO_104 GP_SSP_0_CLK", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA,HizRx0I , = EnPd, GPIO_PADBAR+0x01E8, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_105 GP_SSP_0_FS0", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA,HizRx0I , = EnPd, GPIO_PADBAR+0x01F0, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_106 GP_SSP_0_FS1", M0 , GPI , GPIO_D = , NA , NA , Wake_Disabled, P_20K_H, NA , NA,HizRx0I ,= EnPd, GPIO_PADBAR+0x01F8, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_109 GP_SSP_0_RXD", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA,HizRx0I , = EnPd, GPIO_PADBAR+0x0200, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_110 GP_SSP_0_TXD", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA,HizRx0I , = EnPd, GPIO_PADBAR+0x0208, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_111 GP_SSP_1_CLK", M0 , GPI ,GPIO_D, = NA , NA ,Wake_Disabled, P_20K_L, NA , NA ,NA , = NA, GPIO_PADBAR+0x0210, NORTHWEST),//Not used on RVP + BXT_GPIO_PAD_CONF(L"GPIO_112 GP_SSP_1_FS0", M1 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA, GPIO_PADBAR+0x0218, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_113 GP_SSP_1_FS1", M1 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA, GPIO_PADBAR+0x0220, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_116 GP_SSP_1_RXD", M2 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA, GPIO_PADBAR+0x0228, NORTHWEST),//Feature: LPSS UART Hdr + BXT_GPIO_PAD_CONF(L"GPIO_117 GP_SSP_1_TXD", M0 , GPIO , GPIO_D = , NA , NA , Wake_Disabled, P_20K_L, NA , NA,NA = , NA, GPIO_PADBAR+0x0230, NORTHWEST),//Feature: LPSS UART Hdr + BXT_GPIO_PAD_CONF(L"GPIO_118 GP_SSP_2_CLK", M0 , GPIO , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA, GPIO_PADBAR+0x0238, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_119 GP_SSP_2_FS0", M0 , GPIO , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA, GPIO_PADBAR+0x0240, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_120 GP_SSP_2_FS1", M0 , GPIO , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA, GPIO_PADBAR+0x0248, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_121 GP_SSP_2_FS2", M0 , GPIO , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA, GPIO_PADBAR+0x0250, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_122 GP_SSP_2_RXD", M0 , GPIO , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA, GPIO_PADBAR+0x0258, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_123 GP_SSP_2_TXD", M1 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA, GPIO_PADBAR+0x0260, NORTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_191 DBI_SDA", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA, GPIO_PADBAR+0x0020, NORTHWEST),//Feature: DBI_SDA + BXT_GPIO_PAD_CONF(L"GPIO_192 DBI_SCL", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA, GPIO_PADBAR+0x0028, NORTHWEST),//Feature: DBI_SCL + BXT_GPIO_PAD_CONF(L"GPIO_196 PANEL1_VDDEN", M0 , GPO ,GPIO_D, = HI , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA, GPIO_PADBAR+0x0048, NORTHWEST),//DISP1_VDDEN + BXT_GPIO_PAD_CONF(L"GPIO_197 PANEL1_BKLTEN", M0 , GPO ,GPIO_D, = HI , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA, GPIO_PADBAR+0x0050, NORTHWEST),//DISP1_BKLTEN + BXT_GPIO_PAD_CONF(L"GPIO_198 PANEL1_BKLTCTL", M0 , GPO ,GPIO_D, = HI , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA, GPIO_PADBAR+0x0058, NORTHWEST),//DISP1_BLTCTL +}; + +// +// West Community +// +BXT_GPIO_PAD_INIT mBXT_GpioInitData_W [] =3D +{ + // + // Group Pin#: pad_name, PMode,GPIO_Config,HostSw,= GPO_STATE,INT_Trigger,Wake_Enabled, Term_H_L, Inverted,GPI_ROUT,IOSstae, IO= STerm, MMIO_Offset , Community + // + BXT_GPIO_PAD_CONF(L"GPIO_124 LPSS_I2C0_SDA", M1 , NA , NA , = NA , NA , Wake_Disabled, P_1K_H , NA , NA, D1RxDRx1I, = EnPu, GPIO_PADBAR+0x0000, WEST), + BXT_GPIO_PAD_CONF(L"GPIO_125 LPSS_I2C0_SCL", M1 , NA , NA , = NA , NA , Wake_Disabled, P_1K_H , NA , NA, D1RxDRx1I, = EnPu, GPIO_PADBAR+0x0008, WEST), + BXT_GPIO_PAD_CONF(L"GPIO_126 LPSS_I2C1_SDA", M1 , NA , NA , = NA , NA , Wake_Disabled, P_1K_H , NA , NA, D1RxDRx1I, = EnPu, GPIO_PADBAR+0x0010, WEST), + BXT_GPIO_PAD_CONF(L"GPIO_127 LPSS_I2C1_SCL", M1 , NA , NA , = NA , NA , Wake_Disabled, P_1K_H , NA , NA, D1RxDRx1I, = EnPu, GPIO_PADBAR+0x0018, WEST), + BXT_GPIO_PAD_CONF(L"GPIO_128 LPSS_I2C2_SDA", M1 , NA , NA , = NA , NA , Wake_Disabled, P_1K_H , NA , NA, D1RxDRx1I, = EnPu, GPIO_PADBAR+0x0020, WEST), + BXT_GPIO_PAD_CONF(L"GPIO_129 LPSS_I2C2_SCL", M1 , NA , NA , = NA , NA , Wake_Disabled, P_1K_H , NA , NA, D1RxDRx1I, = EnPu, GPIO_PADBAR+0x0028, WEST), + BXT_GPIO_PAD_CONF(L"GPIO_130 LPSS_I2C3_SDA", M1 , NA , NA , = NA , NA , Wake_Disabled, P_1K_H , NA , NA, D1RxDRx1I, = EnPu, GPIO_PADBAR+0x0030, WEST), + BXT_GPIO_PAD_CONF(L"GPIO_131 LPSS_I2C3_SCL", M1 , NA , NA , = NA , NA , Wake_Disabled, P_1K_H , NA , NA, D1RxDRx1I, = EnPu, GPIO_PADBAR+0x0038, WEST), + BXT_GPIO_PAD_CONF(L"GPIO_132 LPSS_I2C4_SDA", M1 , NA , NA , = NA , NA , Wake_Disabled, P_1K_H , NA , NA, D1RxDRx1I, = EnPu, GPIO_PADBAR+0x0040, WEST), + BXT_GPIO_PAD_CONF(L"GPIO_133 LPSS_I2C4_SCL", M1 , NA , NA , = NA , NA , Wake_Disabled, P_1K_H , NA , NA, D1RxDRx1I, = EnPu, GPIO_PADBAR+0x0048, WEST), + BXT_GPIO_PAD_CONF(L"GPIO_138 LPSS_I2C7_SDA", M1 , NA , NA , = NA , NA , Wake_Disabled, P_1K_H , NA , NA, D0RxDRx0I, = EnPu, GPIO_PADBAR+0x0070, WEST),// RFKILL_N + BXT_GPIO_PAD_CONF(L"GPIO_139 LPSS_I2C7_SCL", M1 , NA , NA , = NA , NA , Wake_Disabled, P_1K_H , NA , NA, D0RxDRx0I, = EnPu, GPIO_PADBAR+0x0078, WEST),//HALL_STATE + BXT_GPIO_PAD_CONF(L"GPIO_146 ISH_GPIO_0", M0 , GPIO , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0080, WEST), + BXT_GPIO_PAD_CONF(L"GPIO_147 ISH_GPIO_1", M0 , GPIO , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0088, WEST), + BXT_GPIO_PAD_CONF(L"GPIO_148 ISH_GPIO_2", M0 , GPIO , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0090, WEST), + BXT_GPIO_PAD_CONF(L"GPIO_149 ISH_GPIO_3", M3 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0098, WEST), + BXT_GPIO_PAD_CONF(L"GPIO_150 ISH_GPIO_4", M2 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA , GPIO_PADBAR+0x00A0, WEST),//Feature: AVS_I2S5_BCLK + BXT_GPIO_PAD_CONF(L"GPIO_151 ISH_GPIO_5", M0 , GPO ,GPIO_D, = HI , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA , GPIO_PADBAR+0x00A8, WEST),//Feature: RF_KILL_WWAN Net in= Sch: NGFF_WWAN_RF_KILL_1P8_N + BXT_GPIO_PAD_CONF(L"GPIO_152 ISH_GPIO_6", M2 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA , GPIO_PADBAR+0x00B0, WEST),//Feature: AVS_I2S5_SDI + BXT_GPIO_PAD_CONF(L"GPIO_153 ISH_GPIO_7", M1 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x00B8, WEST), + BXT_GPIO_PAD_CONF(L"GPIO_154 ISH_GPIO_8", M0 , GPO ,GPIO_D, = HI , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA , GPIO_PADBAR+0x00C0, WEST),//Feature: BT_Disable Net in= Sch: BT_DISABLE2_1P8_N + BXT_GPIO_PAD_CONF(L"GPIO_155 ISH_GPIO_9", M0 , GPI ,GPIO_D = , NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Maske= d, SAME, GPIO_PADBAR+0x00C8, WEST),//CG2000 PDB: If PDB =3D 0: power-dow= n; If PDB =3D 1: power-up, it is the same in ISH/LPSS mode + BXT_GPIO_PAD_CONF(L"GPIO_209 PCIE_CLKREQ0_B", M1 , NA , NA , = NA , NA , Wake_Disabled, P_NONE, NA , NA, HizRx0I, E= nPd, GPIO_PADBAR+0x00D0, WEST), + BXT_GPIO_PAD_CONF(L"GPIO_210 PCIE_CLKREQ1_B", M1 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA, HizRx0I, E= nPd, GPIO_PADBAR+0x00D8, WEST), + BXT_GPIO_PAD_CONF(L"GPIO_211 PCIE_CLKREQ2_B", M1 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA, HizRx0I, E= nPd, GPIO_PADBAR+0x00E0, WEST), + BXT_GPIO_PAD_CONF(L"GPIO_212 PCIE_CLKREQ3_B", M1 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA, HizRx0I, E= nPd, GPIO_PADBAR+0x00E8, WEST), + BXT_GPIO_PAD_CONF(L"OSC_CLK_OUT_0", M1 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA , GPIO_PADBAR+0x00F0, WEST), + BXT_GPIO_PAD_CONF(L"OSC_CLK_OUT_1", M1 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA , GPIO_PADBAR+0x00F8, WEST), + BXT_GPIO_PAD_CONF(L"OSC_CLK_OUT_2", M1 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA , GPIO_PADBAR+0x0100, WEST), + BXT_GPIO_PAD_CONF(L"OSC_CLK_OUT_3", M1 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA , GPIO_PADBAR+0x0108, WEST), + BXT_GPIO_PAD_CONF(L"OSC_CLK_OUT_4", M0 , GPI ,GPIO_D, = NA , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA , GPIO_PADBAR+0x0110, WEST),//Not used on RVP + BXT_GPIO_PAD_CONF(L"PMU_AC_PRESENT", M1 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0118, WEST),//Check, OBS + BXT_GPIO_PAD_CONF(L"PMU_BATLOW_B", M1 , NA , NA , = NA , NA , Wake_Disabled, P_20K_H, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0120, WEST),//Check, OBS + BXT_GPIO_PAD_CONF(L"PMU_PLTRST_B", M1 , NA , NA , = NA , NA , Wake_Disabled, P_NONE , NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0128, WEST), + BXT_GPIO_PAD_CONF(L"PMU_PWRBTN_B", M1 , NA , NA , = NA , NA , Wake_Disabled, P_20K_H, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0130, WEST), + BXT_GPIO_PAD_CONF(L"PMU_RESETBUTTON_B", M1 , NA , NA , = NA , NA , Wake_Disabled, P_NONE , NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0138, WEST), + BXT_GPIO_PAD_CONF(L"PMU_SLP_S0_B", M1 , NA , NA , = NA , NA , Wake_Disabled, P_NONE , NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0140, WEST),//Check, OBS + BXT_GPIO_PAD_CONF(L"PMU_SLP_S3_B", M1 , NA , NA , = NA , NA , Wake_Disabled, P_NONE , NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0148, WEST),//Check, OBS + BXT_GPIO_PAD_CONF(L"PMU_SLP_S4_B", M1 , NA , NA , = NA , NA , Wake_Disabled, P_NONE , NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0150, WEST), + BXT_GPIO_PAD_CONF(L"PMU_SUSCLK", M1 , NA , NA , = NA , NA , Wake_Disabled, P_NONE , NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0158, WEST), + BXT_GPIO_PAD_CONF(L"PMU_WAKE_B", M0 , GPO ,GPIO_D, = HI , NA , Wake_Disabled, P_20K_H, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0160, WEST),//Power cycling for EMMC/RVP + BXT_GPIO_PAD_CONF(L"SUS_STAT_B", M1 , NA , NA , = NA , NA , Wake_Disabled, P_NONE , NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0168, WEST), + BXT_GPIO_PAD_CONF(L"SUSPWRDNACK", M1 , NA , NA , = NA , NA , Wake_Disabled, P_NONE , NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0170, WEST), +}; + + // + // South West Community + // +BXT_GPIO_PAD_INIT mBXT_GpioInitData_SW[]=3D +{ + // + // Group Pin#: pad_name, PMode,GPIO_Config,HostS= w,GPO_STATE,INT_Trigger,Wake_Enabled, Term_H_L,Inverted,GPI_ROUT,IOSstae, = IOSTerm, MMIO_Offset , Community + // + BXT_GPIO_PAD_CONF(L"GPIO_205 PCIE_WAKE0_B", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,IOS_Maske= d,SAME ,GPIO_PADBAR+0x0000 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_206 PCIE_WAKE1_B", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,IOS_Maske= d,SAME ,GPIO_PADBAR+0x0008 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_207 PCIE_WAKE2_B", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,IOS_Maske= d,SAME ,GPIO_PADBAR+0x0010 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_208 PCIE_WAKE3_B", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,IOS_Maske= d,SAME ,GPIO_PADBAR+0x0018 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_156 EMMC0_CLK", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_L, NA , NA ,D0RxDRx0I= ,SAME ,GPIO_PADBAR+0x0020 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_157 EMMC0_D0", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,HizRx1I = ,SAME ,GPIO_PADBAR+0x0028 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_158 EMMC0_D1", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,HizRx1I = ,SAME ,GPIO_PADBAR+0x0030 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_159 EMMC0_D2", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,HizRx1I = ,SAME ,GPIO_PADBAR+0x0038 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_160 EMMC0_D3", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,HizRx1I = ,SAME ,GPIO_PADBAR+0x0040 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_161 EMMC0_D4", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,HizRx1I = ,SAME ,GPIO_PADBAR+0x0048 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_162 EMMC0_D5", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,HizRx1I = ,SAME ,GPIO_PADBAR+0x0050 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_163 EMMC0_D6", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,HizRx1I = ,SAME ,GPIO_PADBAR+0x0058 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_164 EMMC0_D7", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,HizRx1I = ,SAME ,GPIO_PADBAR+0x0060 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_165 EMMC0_CMD", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,HizRx1I = ,SAME ,GPIO_PADBAR+0x0068 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_166 SDIO_CLK", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_L, NA , NA ,D0RxDRx0I= ,SAME ,GPIO_PADBAR+0x0070 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_167 SDIO_D0", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,HizRx1I = ,SAME ,GPIO_PADBAR+0x0078 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_168 SDIO_D1", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,HizRx1I = ,SAME ,GPIO_PADBAR+0x0080 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_169 SDIO_D2", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,HizRx1I = ,SAME ,GPIO_PADBAR+0x0088 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_170 SDIO_D3", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,HizRx1I = ,SAME ,GPIO_PADBAR+0x0090 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_171 SDIO_CMD", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,HizRx1I = ,SAME ,GPIO_PADBAR+0x0098 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_172 SDCARD_CLK", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_L, NA , NA ,HizRx1I = ,DisPuPd,GPIO_PADBAR+0x00A0 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_179 SDCARD_CLK_FB", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_L, NA , NA ,NA = ,NA ,GPIO_PADBAR+0x00A8 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_173 SDCARD_D0", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,HizRx1I = ,DisPuPd,GPIO_PADBAR+0x00B0 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_174 SDCARD_D1", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,HizRx1I = ,SAME ,GPIO_PADBAR+0x00B8 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_175 SDCARD_D2", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,HizRx1I = ,SAME ,GPIO_PADBAR+0x00C0 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_176 SDCARD_D3", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,HizRx1I = ,SAME ,GPIO_PADBAR+0x00C8 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_177 SDCARD_CD_B", M0, GPI , GPIO_D = , NA , Edge ,Wake_Disabled, P_NONE, NA , NA ,TxDRxE = , NA, GPIO_PADBAR+ 0x00D0 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_178 SDCARD_CMD", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,HizRx1I = ,DisPuPd,GPIO_PADBAR+0x00D8 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_186 SDCARD_LVL_WP", M0, GPI , GPIO_D = , NA , Edge ,Wake_Disabled, P_20K_L,Inverted , NA ,Last_Valu= e, SAME,GPIO_PADBAR+0x00E0 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_182 EMMC0_STROBE", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_L, NA , NA ,HizRx0I = ,SAME ,GPIO_PADBAR+0x00E8 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"GPIO_183 SDIO_PWR_DOWN_B", M0, GPO , GPIO_D = , LO , NA ,Wake_Disabled, P_20K_L, NA , NA ,NA = ,NA ,GPIO_PADBAR+0x00F0 , SOUTHWEST),// Feature:Power Enable Net in = Sch:SD_CARD_PWR_EN_N + BXT_GPIO_PAD_CONF(L"SMB_ALERTB", M1, NA , NA = , NA , NA ,Wake_Disabled, P_20K_H, NA , NA ,IOS_Maske= d, SAME, GPIO_PADBAR+ 0x00F8 , SOUTHWEST),//Feature: SMB_ALERTB + BXT_GPIO_PAD_CONF(L"LPC_AD0", M0, GPO , GPIO_D = , LO , NA ,Wake_Disabled, P_20K_H, NA , NA ,IOS_Maske= d, SAME, GPIO_PADBAR+ 0x0128 , SOUTHWEST), + BXT_GPIO_PAD_CONF(L"LPC_AD1", M0, GPO , GPIO_D = , LO , NA ,Wake_Disabled, P_20K_H, NA , NA ,IOS_Maske= d, SAME, GPIO_PADBAR+ 0x0130 , SOUTHWEST), +}; + +BXT_GPIO_PAD_INIT mBXT_GpioInitData_Audio_SSP6 []=3D +{ + // + // Group Pin#: pad_name, PMode,GPIO_Config,HostS= w,GPO_STATE,INT_Trigger,Wake_Enabled, Term_H_L,Inverted,GPI_ROUT,IOSstae, I= OSTerm,MMIO_Offset, Community + // + BXT_GPIO_PAD_CONF(L"GPIO_146 ISH_GPIO_0", M2 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0080, WEST), + BXT_GPIO_PAD_CONF(L"GPIO_147 ISH_GPIO_1", M2 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0088, WEST), + BXT_GPIO_PAD_CONF(L"GPIO_148 ISH_GPIO_2", M2 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0090, WEST), + BXT_GPIO_PAD_CONF(L"GPIO_149 ISH_GPIO_3", M2 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,IOS_Masked, = SAME, GPIO_PADBAR+0x0098, WEST), + BXT_GPIO_PAD_CONF(L"GPIO_84 AVS_I2S2_MCLK", M1 , NA , NA , = NA , NA , Wake_Disabled, P_20K_L, NA , NA,NA , = NA , GPIO_PADBAR+0x0160, NORTHWEST),//Spare signal, set to GPI. Net in= Sch:HDA_RSTB + BXT_GPIO_PAD_CONF(L"GPIO_116 GP_SSP_1_RXD", M0 , GPI , NA , = NA , Level , Wake_Disabled, P_20K_H, NA ,IOAPIC,TxDRxE , = NA , GPIO_PADBAR+0x0228, NORTHWEST),//Feature: Interrput Net i= n Sch: SOC_CODEC_IRQ + BXT_GPIO_PAD_CONF(L"GPIO_192 DBI_SCL", M0 , HI_Z ,GPIO_D, = HI , NA , Wake_Disabled, P_2K_H, NA , NA,NA , = NA , GPIO_PADBAR+0x0028, NORTHWEST),//Feature: Codec Power Down PD Net = in Sch: SOC_CODEC_PD_N +}; + +BXT_GPIO_PAD_INIT mBXT_GpioInitData_FAB2[] =3D +{ + // + // Group Pin#: pad_name, PMode,GPIO_Config,HostSw,G= PO_STATE,INT_Trigger, Wake_Enabled ,Term_H_L,Inverted, GPI_ROUT, IOSstae, = IOSTerm, MMIO_Offset ,Community + // + BXT_GPIO_PAD_CONF(L"GPIO_76 AVS_I2S1_WS_SYNC", M0 , GPI ,GPIO_D, = NA , Level , Wake_Disabled, P_20K_L, NA ,IOAPIC, TxDRxE, = NA, GPIO_PADBAR+0x0120, NORTHWEST),//Feature:SSIC_WWAN_Wake + BXT_GPIO_PAD_CONF(L"GPIO_6", M0 , GPI ,GPIO_D, = NA , Level , Wake_Disabled, P_20K_L, NA ,IOAPIC, TxDRxE, = NA, GPIO_PADBAR+0x0030, NORTH), //Feature:DGPU Power OK + BXT_GPIO_PAD_CONF(L"GPIO_217 CNV_BRI_RSP", M0 , GPO ,GPIO_D, = LO , NA , Wake_Disabled, P_20K_L, NA , NA, NA, = NA, GPIO_PADBAR+0x0240, NORTH), //Feature:DGPU_SEL +}; + +// +// GPIO 191 is only used if EPI reworks are applied on the board. This GPI= O switches between SD Card data (if set to 1) and EPI data (if set to 0). +// +BXT_GPIO_PAD_INIT mBXT_GpioInitData_EPI_Override[] =3D +{ + // + // Group Pin#: pad_name, PMode,GPIO_Config,HostSw,G= PO_STATE,INT_Trigger, Wake_Enabled ,Term_H_L,Inverted, GPI_ROUT, IOSstae, = IOSTerm, MMIO_Offset ,Community + // + BXT_GPIO_PAD_CONF(L"GPIO_191 DBI_SDA", M0, GPO, GPIO_D,L= O, NA, Wake_Disabled,P_20K_L, NA, NA, NA, = NA, GPIO_PADBAR + 0x0020, NORTHWEST),//Feature: SD_I2C MUX SEL = Net in Sch: INA_MUX_SEL +}; + +BXT_GPIO_PAD_INIT mBXT_GpioInitData_LPSS_I2C[] =3D +{ + BXT_GPIO_PAD_CONF(L"GPIO_134 LPSS_I2C5_SDA", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA, HizRx0I, = EnPd, GPIO_PADBAR+0x0050, WEST), + BXT_GPIO_PAD_CONF(L"GPIO_135 LPSS_I2C5_SCL", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA, HizRx0I, = EnPd, GPIO_PADBAR+0x0058, WEST), + BXT_GPIO_PAD_CONF(L"GPIO_136 LPSS_I2C6_SDA", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA, HizRx0I, = EnPd, GPIO_PADBAR+0x0060, WEST), + BXT_GPIO_PAD_CONF(L"GPIO_137 LPSS_I2C6_SCL", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA, HizRx0I, = EnPd, GPIO_PADBAR+0x0068, WEST), +}; + + +BXT_GPIO_PAD_INIT LomDisableGpio[] =3D +{ + // + // LAN + // + BXT_GPIO_PAD_CONF(L"GPIO_210 PCIE_CLKREQ1_B", M1 , NA , NA ,= NA , NA , Wake_Disabled, P_20K_H, NA , NA, NA , = NA, GPIO_PADBAR+0x00D8, WEST), // CLKREQ# + BXT_GPIO_PAD_CONF(L"GPIO_37 PWM3", M0 , GPO , GPIO_D,= LO , NA , Wake_Disabled, P_20K_L, NA , NA, NA , = NA, GPIO_PADBAR+0x0128, NORTH), // PERST# +}; + +#endif + diff --git a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostM= em/BoardInit.c b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitP= ostMem/BoardInit.c new file mode 100644 index 0000000..e33ce5a --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/Boar= dInit.c @@ -0,0 +1,122 @@ +/** @file + Board Init driver. + + Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php. + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ + +#include +#include +#include +#include +#include +#include +#include +#include "BoardInit.h" +#include "BoardInitMiscs.h" + +EFI_STATUS +EFIAPI +BensonGlacierPostMemInitCallback ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, + IN VOID *Ppi + ); + + +static EFI_PEI_NOTIFY_DESCRIPTOR mBensonGlacierPostMemNotifyList =3D { + (EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINA= TE_LIST), + &gBoardPostMemInitStartGuid, + BensonGlacierPostMemInitCallback +}; + +static EFI_PEI_PPI_DESCRIPTOR mBensonGlacierPostMemDonePpi =3D { + (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), + &gBoardPostMemInitDoneGuid, + NULL +}; + +EFI_STATUS +EFIAPI +BensonGlacierPostMemInitCallback ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, + IN VOID *Ppi + ) +{ + EFI_STATUS Status; + VOID *Instance; + UINT8 BoardId; + UINT8 FabId; + + Status =3D PeiServicesLocatePpi ( + &gBoardPostMemInitDoneGuid, + 0, + NULL, + &Instance + ); + if (!EFI_ERROR (Status)) { + DEBUG ((EFI_D_INFO, "Benson Glacier Post Mem Init callback: Skip\n"))= ; + return EFI_SUCCESS; + } + + BoardId =3D (UINT8) PcdGet8 (PcdBoardId); + FabId =3D (UINT8) PcdGet8 (PcdFabId); + DEBUG ((EFI_D_INFO, "PostMemInit: BoardId =3D=3D 0x%X, FabId =3D=3D 0x%= X\n", BoardId, FabId)); + if (BoardId !=3D (UINT8) BOARD_ID_BENSON) { + DEBUG ((EFI_D_INFO, "Benson Glacier Post Mem Init callback: Skip\n"))= ; + return EFI_SUCCESS; + } + + DEBUG ((EFI_D_INFO, "Benson Glacier Post Mem Init callback\n")); + + // + // Set init function PCD + // + PcdSet64 (PcdBoardPostMemInitFunc, (UINT64) (UINTN) MultiPlatformInfoIni= t); + + // + // Add init steps here + // + // + // Install a flag signalling a board's post mem init is done + // + Status =3D PeiServicesInstallPpi (&mBensonGlacierPostMemDonePpi); + + return EFI_SUCCESS; +} + + +/** + This function performs Board initialization in Pre-Memory. + + @retval EFI_SUCCESS The PPI is installed and initialized. + @retval EFI ERRORS The PPI is not successfully installed. + @retval EFI_OUT_OF_RESOURCES No enough resoruces (such as out of me= mory). + +**/ +EFI_STATUS +EFIAPI +BensonGlacierInitConstructor ( + IN EFI_PEI_FILE_HANDLE FileHandle, + IN CONST EFI_PEI_SERVICES **PeiServices + ) +{ + EFI_STATUS Status; + + DEBUG ((EFI_D_INFO, "BensonGlacier Post Mem Init Constructor \n")); + + DEBUG ((EFI_D_INFO, "Notify on Post Mem Init Start PPI \n")); + Status =3D PeiServicesNotifyPpi (&mBensonGlacierPostMemNotifyList); + + return Status; +} + diff --git a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostM= em/BoardInit.h b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitP= ostMem/BoardInit.h new file mode 100644 index 0000000..fa3919e --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/Boar= dInit.h @@ -0,0 +1,29 @@ +/** @file + GPIO setting for CherryView. + This file includes package header files, library classes. + + Copyright (c) 2013 - 2017, Intel Corporation. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php. + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ + +#ifndef _BOARDINIT_H_ +#define _BOARDINIT_H_ + +#include +#include +#include +#include +#include + +VOID GpioTest (VOID); + +#endif + diff --git a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostM= em/BoardInitMiscs.c b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/Board= InitPostMem/BoardInitMiscs.c new file mode 100644 index 0000000..0d40777 --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/Boar= dInitMiscs.c @@ -0,0 +1,180 @@ +/** @file + This file does Multiplatform initialization. + + Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php. + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ + +#include "BoardInitMiscs.h" + + +/** + Configure GPIO group GPE tier. + + @param[in] PlatformInfo + + @retval none. + +**/ +VOID +GpioGroupTierInit ( + IN EFI_PLATFORM_INFO_HOB *PlatformInfoHob + ) +{ + DEBUG ((DEBUG_INFO, "GpioGroupTierInit Start\n")); + switch (PlatformInfoHob->BoardId) { + default: + GpioSetGroupToGpeDwX (GPIO_BXTP_GROUP_7, // map group 7 to GPE 0 ~ = 31 + GPIO_BXTP_GROUP_0, // map group 0 to GPE 32 ~= 63 // We don't have SCI pin in Group0 as of now, but still need to assign = a unique group to this field. + GPIO_BXTP_GROUP_1); // map group 1 to GPE 64 ~= 95 // We don't have SCI pin in Group1 as of now, but still need to assign = a unique group to this field. + break; + } + + DEBUG ((DEBUG_INFO, "GpioGroupTierInit End\n")); +} + + +EFI_STATUS +EFIAPI +MultiPlatformInfoInit ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN OUT EFI_PLATFORM_INFO_HOB *PlatformInfoHob + ) +{ + EFI_STATUS Status; + +#if (ENBDT_PF_ENABLE =3D=3D 1) + DEBUG ((EFI_D_INFO, "Platform BoardId:%x FabId%x\n", PlatformInfoHob->B= oardId, PlatformInfoHob->FABID)); +#endif + + // + // Device ID + // + PlatformInfoHob->IohSku =3D MmPci16 (0, SA_MC_BUS, SA_MC_DEV, SA_MC_FUN,= PCI_DEVICE_ID_OFFSET); + + PlatformInfoHob->IohRevision =3D MmPci8 (0, SA_MC_BUS, SA_MC_DEV, SA_MC_= FUN, PCI_REVISION_ID_OFFSET); + + // + // Don't support BASE above 4GB currently + // + PlatformInfoHob->PciData.PciExpressSize =3D 0x04000000; + PlatformInfoHob->PciData.PciExpressBase =3D (UINTN) PcdGet64 (PcdPci= ExpressBaseAddress); + + PlatformInfoHob->PciData.PciResourceMem32Base =3D (UINT32) (PlatformInf= oHob->PciData.PciExpressBase - RES_MEM32_MIN_LEN); + PlatformInfoHob->PciData.PciResourceMem32Limit =3D (UINT32) (PlatformInf= oHob->PciData.PciExpressBase -1); + + PlatformInfoHob->PciData.PciResourceMem64Base =3D RES_MEM64_36_BASE; + PlatformInfoHob->PciData.PciResourceMem64Limit =3D RES_MEM64_36_LIMIT; + PlatformInfoHob->CpuData.CpuAddressWidth =3D 36; + + PlatformInfoHob->MemData.MemMir0 =3D PlatformInfoHob->PciData.PciResourc= eMem64Base; + PlatformInfoHob->MemData.MemMir1 =3D PlatformInfoHob->PciData.PciResourc= eMem64Limit + 1; + + PlatformInfoHob->PciData.PciResourceMinSecBus =3D 1; //can be changed = by SystemConfiguration->PciMinSecondaryBus; + + // + // Set MemMaxTolm to the lowest address between PCIe Base and PCI32 Base + // + if (PlatformInfoHob->PciData.PciExpressBase > PlatformInfoHob->PciData.P= ciResourceMem32Base ) { + PlatformInfoHob->MemData.MemMaxTolm =3D (UINT32) PlatformInfoHob->PciD= ata.PciResourceMem32Base; + } else { + PlatformInfoHob->MemData.MemMaxTolm =3D (UINT32) PlatformInfoHob->PciD= ata.PciExpressBase; + } + PlatformInfoHob->MemData.MemTolm =3D PlatformInfoHob->MemData.MemMaxTolm= ; + + // + // Platform PCI MMIO Size in unit of 1MB + // + PlatformInfoHob->MemData.MmioSize =3D 0x1000 - (UINT16) (PlatformInfoHob= ->MemData.MemMaxTolm >> 20); + + // + // Enable ICH IOAPIC + // + PlatformInfoHob->SysData.SysIoApicEnable =3D ICH_IOAPIC; + + DEBUG ((EFI_D_INFO, "PlatformFlavor is %x (%x=3Dtablet,%x=3Dmobile,%x= =3Ddesktop)\n", PlatformInfoHob->PlatformFlavor, FlavorTablet, FlavorMobile= , FlavorDesktop)); + + // + // Get Platform Info and fill the Hob + // + PlatformInfoHob->RevisonId =3D PLATFORM_INFO_HOB_REVISION; + + // + // Get GPIO table + // + Status =3D MultiPlatformGpioTableInit (PeiServices, PlatformInfoHob); + ASSERT_EFI_ERROR (Status); + + // + // Program GPIO + // + Status =3D MultiPlatformGpioProgram (PeiServices, PlatformInfoHob); + + if (GetBxtSeries () =3D=3D BxtP) { + GpioGroupTierInit (PlatformInfoHob); + } + + // + // Update OemId + // + Status =3D InitializeBoardOemId (PeiServices, PlatformInfoHob); + Status =3D InitializeBoardSsidSvid (PeiServices, PlatformInfoHob); + + return EFI_SUCCESS; +} + + +EFI_STATUS +InitializeBoardOemId ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_PLATFORM_INFO_HOB *PlatformInfoHob + ) +{ + UINT64 OemId; + UINT64 OemTableId; + + // + // Set OEM ID according to Board ID. + // + switch (PlatformInfoHob->BoardId) { + default: + OemId =3D EFI_ACPI_OEM_ID_DEFAULT; + OemTableId =3D EFI_ACPI_OEM_TABLE_ID_DEFAULT; + break; + } + + PlatformInfoHob->AcpiOemId =3D OemId; + PlatformInfoHob->AcpiOemTableId =3D OemTableId; + + return EFI_SUCCESS; +} + +EFI_STATUS +InitializeBoardSsidSvid ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_PLATFORM_INFO_HOB *PlatformInfoHob + ) +{ + UINT32 SsidSvidValue =3D 0; + + // + // Set OEM ID according to Board ID. + // + switch (PlatformInfoHob->BoardId) { + default: + SsidSvidValue =3D SUBSYSTEM_SVID_SSID; //SUBSYSTEM_SVID_SSID_DEFAULT= ; + break; + } + PlatformInfoHob->SsidSvid =3D SsidSvidValue; + + return EFI_SUCCESS; +} + diff --git a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostM= em/BoardInitMiscs.h b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/Board= InitPostMem/BoardInitMiscs.h new file mode 100644 index 0000000..8ae5f7c --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/Boar= dInitMiscs.h @@ -0,0 +1,127 @@ +/** @file + Multiplatform initialization header file. + This file includes package header files, library classes. + + Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php. + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ + +#ifndef _MULTIPLATFORM_LIB_H_ +#define _MULTIPLATFORM_LIB_H_ + +#define LEN_64M 0x4000000 +// +// Default PCI32 resource size +// +#define RES_MEM32_MIN_LEN 0x38000000 + +#define RES_IO_BASE 0x0D00 +#define RES_IO_LIMIT 0xFFFF + +#include +#include +#include +#include "PlatformBaseAddresses.h" +#include "ScAccess.h" +#include "SetupMode.h" +#include "PlatformBootMode.h" +#include "CpuRegs.h" +#include "Platform.h" +#include "CMOSMap.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define EFI_ACPI_OEM_ID_DEFAULT SIGNATURE_64('I', 'N', 'T', 'E', 'L', '= ', ' ', ' ') // max 6 chars +#define EFI_ACPI_OEM_ID1 SIGNATURE_64('I', 'N', 'T', 'E', 'L', '= 1', ' ', ' ') // max 6 chars +#define EFI_ACPI_OEM_ID2 SIGNATURE_64('I', 'N', 'T', 'E', 'L', '= 2', ' ', ' ') // max 6 chars + +#define EFI_ACPI_OEM_TABLE_ID_DEFAULT SIGNATURE_64('E', 'D', 'K', '2', '= ', ' ', ' ', ' ') +#define EFI_ACPI_OEM_TABLE_ID1 SIGNATURE_64('E', 'D', 'K', '2', '= _', '1', ' ', ' ') +#define EFI_ACPI_OEM_TABLE_ID2 SIGNATURE_64('E', 'D', 'K', '2', '= _', '2', ' ', ' ') + +// +// Default Vendor ID and Subsystem ID +// +#define SUBSYSTEM_VENDOR_ID1 0x8086 +#define SUBSYSTEM_DEVICE_ID1 0x1999 +#define SUBSYSTEM_SVID_SSID1 (SUBSYSTEM_VENDOR_ID1 + (SUBSYSTEM_DEVICE_I= D1 << 16)) + +#define SUBSYSTEM_VENDOR_ID2 0x8086 +#define SUBSYSTEM_DEVICE_ID2 0x1888 +#define SUBSYSTEM_SVID_SSID2 (SUBSYSTEM_VENDOR_ID2 + (SUBSYSTEM_DEVICE_I= D2 << 16)) + +#define SUBSYSTEM_VENDOR_ID 0x8086 +#define SUBSYSTEM_DEVICE_ID 0x1234 +#define SUBSYSTEM_SVID_SSID (SUBSYSTEM_VENDOR_ID + (SUBSYSTEM_DEVICE_ID = << 16)) + +EFI_STATUS +GetPlatformInfoHob ( + IN CONST EFI_PEI_SERVICES **PeiServices, + OUT EFI_PLATFORM_INFO_HOB **PlatformInfoHob + ); + +EFI_STATUS +MultiPlatformGpioTableInit ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_PLATFORM_INFO_HOB *PlatformInfoHob + ); + +EFI_STATUS +MultiPlatformGpioProgram ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_PLATFORM_INFO_HOB *PlatformInfoHob + ); + +EFI_STATUS +MultiPlatformInfoInit ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN OUT EFI_PLATFORM_INFO_HOB *PlatformInfoHob + ); + +EFI_STATUS +InitializeBoardOemId ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_PLATFORM_INFO_HOB *PlatformInfoHob + ); + +EFI_STATUS +InitializeBoardSsidSvid ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_PLATFORM_INFO_HOB *PlatformInfoHob + ); + +#endif + diff --git a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostM= em/BoardInitPostMem.inf b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/B= oardInitPostMem/BoardInitPostMem.inf new file mode 100644 index 0000000..3b08d2f --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/Boar= dInitPostMem.inf @@ -0,0 +1,77 @@ +## @file +# Board detected module for Intel(R) Atom(TM) x5 Processor Series. +# It will detect the board ID. +# +# Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.
+# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the B= SD License +# which accompanies this distribution. The full text of the license may b= e found at +# http://opensource.org/licenses/bsd-license.php. +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IM= PLIED. +# +## + +[Defines] + INF_VERSION =3D 0x00010017 + BASE_NAME =3D BensonGlacierInitPostMem + FILE_GUID =3D EF883035-D771-438C-9D02-ACF102AA7D13 + VERSION_STRING =3D 1.0 + MODULE_TYPE =3D PEIM + CONSTRUCTOR =3D BensonGlacierInitConstructor + +[Sources] + BoardInit.c + BoardInit.h + BoardInitMiscs.c + BoardInitMiscs.h + PlatformInfoHob.c + BoardGpios.c + BoardGpios.h + +[LibraryClasses] + PeiServicesLib + PcdLib + DebugLib + HeciMsgLib + HobLib + IoLib + SteppingLib + GpioLib + +[Packages] + MdePkg/MdePkg.dec + BroxtonPlatformPkg/PlatformPkg.dec + BroxtonSiPkg/BroxtonSiPkg.dec + MdeModulePkg/MdeModulePkg.dec + IntelFrameworkPkg/IntelFrameworkPkg.dec + SecurityPkg/SecurityPkg.dec + BroxtonSiPkg/BroxtonSiPkg.dec + +[Pcd] + gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress + gEfiSecurityPkgTokenSpaceGuid.PcdTpmInstanceGuid + gEfiBxtTokenSpaceGuid.PcdPmcGcrBaseAddress + gPlatformModuleTokenSpaceGuid.PcdBoardPostMemInitFunc + gPlatformModuleTokenSpaceGuid.PcdBoardId + gPlatformModuleTokenSpaceGuid.PcdFabId + +[Guids] + gEfiPlatformInfoGuid + gEfiAuthenticatedVariableGuid + gEfiVariableGuid + gPeiVariableCacheHobGuid + gEfiTpmDeviceSelectedGuid + gEfiTpmDeviceInstanceNoneGuid + gEfiTpmDeviceInstanceTpm12Guid + gEfiTpmDeviceInstanceTpm20DtpmGuid + gTpmDeviceInstanceTpm20PttPtpGuid + +[Ppis] + gBoardPostMemInitStartGuid + gBoardPostMemInitDoneGuid + gEfiPeiReadOnlyVariable2PpiGuid + gSeCfTPMPolicyPpiGuid + diff --git a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostM= em/PlatformInfoHob.c b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/Boar= dInitPostMem/PlatformInfoHob.c new file mode 100644 index 0000000..8dac0ba --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/Plat= formInfoHob.c @@ -0,0 +1,58 @@ +/** @file + This file does Multiplatform initialization. + + Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php. + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ + +#include "BoardInitMiscs.h" + +/** + Returns the Platform Info of the platform from the HOB. + + @param[in] PeiServices General purpose services available t= o every PEIM. + @param[in] PlatformInfoHob Pointer to the PLATFORM_INFO_HOB Poi= nter + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_NOT_FOUND PlatformInfoHob data doesn't exist, = use default instead. + +**/ +EFI_STATUS +GetPlatformInfoHob ( + IN CONST EFI_PEI_SERVICES **PeiServices, + OUT EFI_PLATFORM_INFO_HOB **PlatformInfoHob + ) +{ + EFI_PEI_HOB_POINTERS GuidHob; + + // + // Find the PlatformInfo HOB + // + GuidHob.Raw =3D GetHobList (); + if (GuidHob.Raw =3D=3D NULL) { + return EFI_NOT_FOUND; + } + + if ((GuidHob.Raw =3D GetNextGuidHob (&gEfiPlatformInfoGuid, GuidHob.Raw)= ) !=3D NULL) { + *PlatformInfoHob =3D GET_GUID_HOB_DATA (GuidHob.Guid); + } + + // + // PlatformInfo PEIM should provide this HOB data, if not ASSERT and ret= urn error. + // + ASSERT_EFI_ERROR (*PlatformInfoHob !=3D NULL); + if (!(*PlatformInfoHob)) { + return EFI_NOT_FOUND; + } + + return EFI_SUCCESS; +} + diff --git a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPreMe= m/BoardInit.c b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPr= eMem/BoardInit.c new file mode 100644 index 0000000..cac4eb6 --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPreMem/Board= Init.c @@ -0,0 +1,184 @@ +/** @file + Board Init driver. + + Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php. + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ + +#include +#include +#include +#include +#include +#include +#include +#include "BoardInit.h" +#include "PlatformId.h" +#include "BoardInitMiscs.h" + +EFI_STATUS +EFIAPI +BensonGlacierPreMemInit ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN PEI_BOARD_PRE_MEM_INIT_PPI *This + ); + +static PEI_BOARD_PRE_MEM_INIT_PPI mPreMemInitPpiInstance =3D { + BensonGlacierPreMemInit +}; + +static EFI_PEI_PPI_DESCRIPTOR mBensonGlacierPreMemInitPpi =3D { + (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), + &gBoardPreMemInitPpiGuid, + &mPreMemInitPpiInstance +}; + +static EFI_PEI_PPI_DESCRIPTOR mBensonGlacierPreMemInitDonePpi =3D { + (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), + &gBoardPreMemInitDoneGuid, + NULL +}; + +EFI_STATUS +EFIAPI +BensonGlacierPreMemInit ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN PEI_BOARD_PRE_MEM_INIT_PPI *This + ) +{ + EFI_STATUS Status; + VOID *Instance; + UINT8 BoardId; + UINT8 FabId; + + BoardId =3D 0; + FabId =3D 0; + Status =3D PeiServicesLocatePpi ( + &gBoardPreMemInitDoneGuid, + 0, + NULL, + &Instance + ); + if (!EFI_ERROR (Status)) { + DEBUG ((EFI_D_INFO, "Benson Glacier Pre Mem Init: Skip\n")); + return EFI_SUCCESS; + } + + DEBUG ((EFI_D_INFO, "Benson Glacier Pre Mem Init\n")); + + // + // Pre Mem Board Init + // + Status =3D GetEmbeddedBoardIdFabId (PeiServices, &BoardId, &FabId); + + if (BoardId !=3D (UINT8) BOARD_ID_BENSON) { + DEBUG ((EFI_D_INFO, "Not a Benson Glacier - skip\n")); + return EFI_SUCCESS; + } + + PcdSet8 (PcdBoardId, BoardId); + PcdSet8 (PcdFabId, FabId); + + // + // Set board specific function as dynamic PCD to be called by common pla= tform code + // + PcdSet64 (PcdUpdateFspmUpdFunc, (UINT64) (UINTN) mBgUpdateFspmUpdPtr); + PcdSet64 (PcdDramCreatePolicyDefaultsFunc, (UINT64) (UINTN) mBgDramCreat= ePolicyDefaultsPtr); + + // + // Install a flag signalling a board is detected and pre-mem init is don= e + // + Status =3D PeiServicesInstallPpi (&mBensonGlacierPreMemInitDonePpi); + + return EFI_SUCCESS; +} + + +/** + This function performs Board initialization in Pre-Memory. + + @retval EFI_SUCCESS The PPI is installed and initialized. + @retval EFI ERRORS The PPI is not successfully installed. + @retval EFI_OUT_OF_RESOURCES No enough resoruces (such as out of me= mory). + +**/ +EFI_STATUS +EFIAPI +BensonGlacierInitConstructor ( + IN EFI_PEI_FILE_HANDLE FileHandle, + IN CONST EFI_PEI_SERVICES **PeiServices + ) +{ + EFI_STATUS Status; + VOID *Ppi; + EFI_PEI_PPI_DESCRIPTOR *PeiPpiDescriptor; + UINTN Instance; + + DEBUG ((EFI_D_INFO, "BensonGlacier Pre Mem Init Constructor \n")); + + Status =3D PeiServicesLocatePpi ( + &gBoardPreMemInitDoneGuid, + 0, + &PeiPpiDescriptor, + &Ppi + ); + if (!EFI_ERROR (Status)) { + // + // Board detection previously done, so this is a re-invocation shadowe= d in memory. + // Reinstall PPIs to eliminate PPI descriptors in torn down temp RAM. + // + // + // Reinstall PreMemInit Done PPI + // + DEBUG ((EFI_D_INFO, "Reinstall Pre Mem Init Done PPI\n")); + Status =3D PeiServicesReInstallPpi ( + PeiPpiDescriptor, + &mBensonGlacierPreMemInitDonePpi + ); + ASSERT_EFI_ERROR (Status); + + // + // Reinstall all instances of Pre Mem Init PPIs. + // These PPIs are no longer used so it doesn't matter which board's in= stance is finally installed. + // According to PeiServicesReInstallPpi behavior: + // The first run of this loop would replace all descrioptors with a si= nge in-RAM descriptor; + // Subsequent runs of this loop will only replace the first (already i= n-RAM) descriptor. + // As long as all descriptors are in ram, we are fine. + // + Instance =3D 0; + do { + Status =3D PeiServicesLocatePpi ( + &gBoardPreMemInitPpiGuid, + Instance, + &PeiPpiDescriptor, + &Ppi + ); + if (Status =3D=3D EFI_NOT_FOUND) { + break; + } + ASSERT_EFI_ERROR (Status); + DEBUG ((EFI_D_INFO, "Reinstall Pre Mem Init PPI\n")); + Status =3D PeiServicesReInstallPpi ( + PeiPpiDescriptor, + &mBensonGlacierPreMemInitPpi + ); + ASSERT_EFI_ERROR (Status); + + Instance++; + } while (TRUE); + return Status; + } + + DEBUG ((EFI_D_INFO, "Install Pre Mem Init PPI \n")); + Status =3D PeiServicesInstallPpi (&mBensonGlacierPreMemInitPpi); + return Status; +} + diff --git a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPreMe= m/BoardInit.h b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPr= eMem/BoardInit.h new file mode 100644 index 0000000..fa3919e --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPreMem/Board= Init.h @@ -0,0 +1,29 @@ +/** @file + GPIO setting for CherryView. + This file includes package header files, library classes. + + Copyright (c) 2013 - 2017, Intel Corporation. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php. + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ + +#ifndef _BOARDINIT_H_ +#define _BOARDINIT_H_ + +#include +#include +#include +#include +#include + +VOID GpioTest (VOID); + +#endif + diff --git a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPreMe= m/BoardInitMiscs.c b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardI= nitPreMem/BoardInitMiscs.c new file mode 100644 index 0000000..bb1c9bf --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPreMem/Board= InitMiscs.c @@ -0,0 +1,290 @@ +/** @file + This file does Multiplatform initialization. + + Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php. + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ + +#include "BoardInitMiscs.h" +#include "MmrcData.h" + +UPDATE_FSPM_UPD_FUNC mBgUpdateFspmUpdPtr =3D BgUpdateFspmUpd; +DRAM_CREATE_POLICY_DEFAULTS_FUNC mBgDramCreatePolicyDefaultsPtr =3D BgDr= amCreatePolicyDefaults; + +EFI_STATUS +EFIAPI +BgUpdateFspmUpd ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN FSPM_UPD *FspUpdRgn + ) +{ + EFI_PEI_HOB_POINTERS Hob; + EFI_PLATFORM_INFO_HOB *PlatformInfo =3D NULL; + DRAM_POLICY_PPI *DramPolicy; + EFI_STATUS Status; + MRC_NV_DATA_FRAME *MrcNvData; + MRC_PARAMS_SAVE_RESTORE *MrcParamsHob; + BOOT_VARIABLE_NV_DATA *BootVariableNvDataHob; + + Status =3D (*PeiServices)->LocatePpi ( + PeiServices, + &gDramPolicyPpiGuid, + 0, + NULL, + (VOID **) &DramPolicy + ); + + if (!EFI_ERROR (Status)) { + FspUpdRgn->FspmConfig.Package =3D DramPolicy= ->Package; + FspUpdRgn->FspmConfig.Profile =3D DramPolicy= ->Profile; + FspUpdRgn->FspmConfig.MemoryDown =3D DramPolicy= ->MemoryDown; + FspUpdRgn->FspmConfig.DDR3LPageSize =3D DramPolicy= ->DDR3LPageSize; + FspUpdRgn->FspmConfig.DDR3LASR =3D DramPolicy= ->DDR3LASR; + FspUpdRgn->FspmConfig.MemorySizeLimit =3D DramPolicy= ->SystemMemorySizeLimit; + FspUpdRgn->FspmConfig.DIMM0SPDAddress =3D DramPolicy= ->SpdAddress[0]; + FspUpdRgn->FspmConfig.DIMM1SPDAddress =3D DramPolicy= ->SpdAddress[1]; + FspUpdRgn->FspmConfig.DDR3LPageSize =3D DramPolicy= ->DDR3LPageSize; + FspUpdRgn->FspmConfig.DDR3LASR =3D DramPolicy= ->DDR3LASR; + FspUpdRgn->FspmConfig.HighMemoryMaxValue =3D DramPolicy= ->HighMemMaxVal; + FspUpdRgn->FspmConfig.LowMemoryMaxValue =3D DramPolicy= ->LowMemMaxVal; + FspUpdRgn->FspmConfig.DisableFastBoot =3D DramPolicy= ->DisableFastBoot; + FspUpdRgn->FspmConfig.RmtMode =3D DramPolicy= ->RmtMode; + FspUpdRgn->FspmConfig.RmtCheckRun =3D DramPolicy= ->RmtCheckRun; + FspUpdRgn->FspmConfig.RmtMarginCheckScaleHighThreshold =3D DramPolicy= ->RmtMarginCheckScaleHighThreshold; + FspUpdRgn->FspmConfig.MsgLevelMask =3D DramPolicy= ->MsgLevelMask; + + FspUpdRgn->FspmConfig.ChannelHashMask =3D DramPolicy= ->ChannelHashMask; + FspUpdRgn->FspmConfig.SliceHashMask =3D DramPolicy= ->SliceHashMask; + FspUpdRgn->FspmConfig.ChannelsSlicesEnable =3D DramPolicy= ->ChannelsSlicesEnabled; + FspUpdRgn->FspmConfig.ScramblerSupport =3D DramPolicy= ->ScramblerSupport; + FspUpdRgn->FspmConfig.InterleavedMode =3D DramPolicy= ->InterleavedMode; + FspUpdRgn->FspmConfig.MinRefRate2xEnable =3D DramPolicy= ->MinRefRate2xEnabled; + FspUpdRgn->FspmConfig.DualRankSupportEnable =3D DramPolicy= ->DualRankSupportEnabled; + + CopyMem (&(FspUpdRgn->FspmConfig.Ch0_RankEnable), &DramPolicy->ChDrp, = sizeof(DramPolicy->ChDrp)); + CopyMem (&(FspUpdRgn->FspmConfig.Ch0_Bit_swizzling), &DramPolicy->ChSw= izzle, sizeof (DramPolicy->ChSwizzle)); + + if (((VOID *)(UINT32)DramPolicy->MrcTrainingDataPtr !=3D 0) && + ((VOID *)(UINT32)DramPolicy->MrcBootDataPtr !=3D 0)) { + MrcNvData =3D (MRC_NV_DATA_FRAME *) AllocateZeroPool (sizeof (MRC_NV= _DATA_FRAME)); + MrcParamsHob =3D (MRC_PARAMS_SAVE_RESTORE*)((UINT32)DramPolicy->MrcT= rainingDataPtr); + BootVariableNvDataHob =3D (BOOT_VARIABLE_NV_DATA*)((UINT32)DramPolic= y->MrcBootDataPtr); + CopyMem(&(MrcNvData->MrcParamsSaveRestore), MrcParamsHob, sizeof (MR= C_PARAMS_SAVE_RESTORE)); + CopyMem(&(MrcNvData->BootVariableNvData), BootVariableNvDataHob, siz= eof (BOOT_VARIABLE_NV_DATA)); + FspUpdRgn->FspmArchUpd.NvsBufferPtr =3D (VOID *)(UINT32)MrcNvData; + } + + } + // + // override RankEnable settings for Benson + // + FspUpdRgn->FspmConfig.Ch0_RankEnable =3D 1; + FspUpdRgn->FspmConfig.Ch1_RankEnable =3D 1; + FspUpdRgn->FspmConfig.Ch2_RankEnable =3D 1; + FspUpdRgn->FspmConfig.Ch3_RankEnable =3D 1; + + DEBUG ((DEBUG_INFO, "UpdateFspmUpd - gEfiPlatformInfoGuid\n")); + Hob.Raw =3D GetFirstGuidHob (&gEfiPlatformInfoGuid); + ASSERT (Hob.Raw !=3D NULL); + PlatformInfo =3D GET_GUID_HOB_DATA (Hob.Raw); + + DEBUG ((DEBUG_INFO, "**** BG - UpdateFspmUpd,BoardId =3D %d\n", Platform= Info->BoardId)); + if (PlatformInfo->BoardId !=3D BOARD_ID_BENSON) { + // + // ASSERT false if BoardId isn't Benson + // + ASSERT (FALSE); + } + + FspUpdRgn->FspmConfig.Ch0_DramDensity =3D 2; + FspUpdRgn->FspmConfig.Ch1_DramDensity =3D 2; + FspUpdRgn->FspmConfig.Ch2_DramDensity =3D 2; + FspUpdRgn->FspmConfig.Ch3_DramDensity =3D 2; + return EFI_SUCCESS; +} + + +/** + DramCreatePolicyDefaults creates the default setting of Dram Policy. + + @param[out] DramPolicyPpi The pointer to get Dram Policy PPI i= nstance + + @retval EFI_SUCCESS The policy default is initialized. + @retval EFI_OUT_OF_RESOURCES Insufficient resources to create buf= fer + +**/ +EFI_STATUS +EFIAPI +BgDramCreatePolicyDefaults ( + IN EFI_PEI_READ_ONLY_VARIABLE2_PPI *VariablePpi, + OUT DRAM_POLICY_PPI **DramPolicyPpi, + IN IAFWDramConfig *DramConfigData, + IN UINTN *MrcTrainingDataAddr, + IN UINTN *MrcBootDataAddr, + IN UINT8 BoardId + ) +{ + DRAM_POLICY_PPI *DramPolicy; + SYSTEM_CONFIGURATION SystemConfiguration; + UINTN VariableSize; + EFI_STATUS Status; + DRP_DRAM_POLICY *DrpPtr; + UINT8 (*ChSwizlePtr)[DRAM_POLICY_NUMBER_CH= ANNELS][DRAM_POLICY_NUMBER_BITS]; + PlatfromDramConf *DramConfig; + BOOLEAN ReadSetupVars; + EFI_PEI_HOB_POINTERS Hob; + + DEBUG ((EFI_D_INFO, "*** Benson Glacier DramCreatePolicyDefaults\n")); + DramPolicy =3D (DRAM_POLICY_PPI *) AllocateZeroPool (sizeof (DRAM_POLICY= _PPI)); + if (DramPolicy =3D=3D NULL) { + ASSERT (FALSE); + return EFI_OUT_OF_RESOURCES; + } + + ReadSetupVars =3D FALSE; + DrpPtr =3D NULL; + ChSwizlePtr =3D NULL; + DramConfig =3D NULL; + + VariableSize =3D sizeof (SYSTEM_CONFIGURATION); + Status =3D VariablePpi->GetVariable ( + VariablePpi, + PLATFORM_SETUP_VARIABLE_NAME, + &gEfiSetupVariableGuid, + NULL, + &VariableSize, + &SystemConfiguration + ); + +#if !(ONLY_USE_SMIP_DRAM_POLICY =3D=3D 1) + Status =3D EFI_UNSUPPORTED; +#endif + + if (!EFI_ERROR (Status)) { + DEBUG ((EFI_D_INFO, "Using setup options data for DRAM policy\n")); + ReadSetupVars =3D TRUE; + DramPolicy->ChannelHashMask =3D SystemConfiguration.ChannelHas= hMask; + DramPolicy->SliceHashMask =3D SystemConfiguration.SliceHashM= ask; + DramPolicy->ChannelsSlicesEnabled =3D SystemConfiguration.ChannelsSl= icesEnabled; + DramPolicy->ScramblerSupport =3D SystemConfiguration.ScramblerS= upport; + DramPolicy->InterleavedMode =3D SystemConfiguration.Interleave= dMode; + DramPolicy->MinRefRate2xEnabled =3D SystemConfiguration.MinRefRate= 2xEnabled; + DramPolicy->DualRankSupportEnabled =3D SystemConfiguration.DualRankSu= pportEnabled; + } + + DramConfig =3D &(DramConfigData->PlatformDram4); + + DEBUG ((EFI_D_INFO, "Using smip platform override: %d\n", DramConfigData= ->Platform_override)); + switch (DramConfigData->Platform_override) { + case 0: + DramConfig =3D &(DramConfigData->PlatformDram0); + break; + case 1: + DramConfig =3D &(DramConfigData->PlatformDram1); + break; + case 2: + DramConfig =3D &(DramConfigData->PlatformDram2); + break; + case 3: + DramConfig =3D &(DramConfigData->PlatformDram3); + break; + case 4: + DramConfig =3D &(DramConfigData->PlatformDram4); + break; + default: + // + // Do nothing if the override value does not exist. 0xFF is the + // default Platform_override value when no override is selected + // + break; + } + + DramPolicy->Package =3D DramConfig->Package; + DramPolicy->Profile =3D DramConfig->Profile; + DramPolicy->MemoryDown =3D DramConfig->MemoryDow= n; + DramPolicy->DDR3LPageSize =3D DramConfig->DDR3LPage= Size; + DramPolicy->DDR3LASR =3D DramConfig->DDR3LASR; + DramPolicy->SystemMemorySizeLimit =3D DramConfig->MemorySiz= eLimit; + DramPolicy->SpdAddress[0] =3D DramConfig->SpdAddres= s0; + DramPolicy->SpdAddress[1] =3D DramConfig->SpdAddres= s1; + DramPolicy->DDR3LPageSize =3D DramConfig->DDR3LPage= Size; + DramPolicy->DDR3LASR =3D DramConfig->DDR3LASR; + DramPolicy->HighMemMaxVal =3D DramConfig->HighMemMa= xVal; + DramPolicy->LowMemMaxVal =3D DramConfig->LowMemMax= Val; + DramPolicy->DisableFastBoot =3D DramConfig->DisableFa= stBoot; + DramPolicy->RmtMode =3D DramConfig->RmtMode; + DramPolicy->RmtCheckRun =3D DramConfig->RmtCheckR= un; + DramPolicy->RmtMarginCheckScaleHighThreshold =3D DramConfig->RmtMargin= CheckScaleHighThreshold; + + DramPolicy->MsgLevelMask =3D DramConfigData->Messa= ge_level_mask; + DrpPtr =3D (DRP_DRAM_POLICY *) (= &(DramConfig->Ch0RankEnabled)); + ChSwizlePtr =3D (UINT8(*)[DRAM_POLICY= _NUMBER_CHANNELS][DRAM_POLICY_NUMBER_BITS]) (&(DramConfig->Ch0_Bit00_swizzl= ing)); + + if (!ReadSetupVars) { + DEBUG ((EFI_D_INFO, "Using smip data for DRAM policy\n")); + DramPolicy->ChannelHashMask =3D DramConfig->ChannelHashMask; + DramPolicy->SliceHashMask =3D DramConfig->SliceHashMask; + DramPolicy->ChannelsSlicesEnabled =3D DramConfig->ChannelsSlicesEnab= led; + DramPolicy->ScramblerSupport =3D DramConfig->ScramblerSupport; + DramPolicy->InterleavedMode =3D DramConfig->InterleavedMode; + DramPolicy->MinRefRate2xEnabled =3D DramConfig->MinRefRate2xEnable= d; + DramPolicy->DualRankSupportEnabled =3D DramConfig->DualRankSupportEna= bled; +} + + if (DrpPtr !=3D NULL) { + CopyMem (DramPolicy->ChDrp, DrpPtr, sizeof (DramPolicy->ChDrp)); + } + + Status =3D VariablePpi->GetVariable ( + VariablePpi, + PLATFORM_SETUP_VARIABLE_NAME, + &gEfiSetupVariableGuid, + NULL, + &VariableSize, + &SystemConfiguration + ); + + if (!EFI_ERROR (Status)) { + if (SystemConfiguration.Max2G =3D=3D 0) { + DramPolicy->SystemMemorySizeLimit =3D 0x800; + } + } + + if (ChSwizlePtr !=3D NULL) CopyMem (DramPolicy->ChSwizzle, ChSwizlePtr, = sizeof (DramPolicy->ChSwizzle)); + + DramPolicy->MrcTrainingDataPtr =3D (EFI_PHYSICAL_ADDRESS) *MrcTrainingDa= taAddr; + DramPolicy->MrcBootDataPtr =3D (EFI_PHYSICAL_ADDRESS) *MrcBootDataAd= dr; + + // + // WA for MH board to 6GB. We just apply it if memory size has not been = override in smip XML. + // + if (DramPolicy->SystemMemorySizeLimit =3D=3D 0) { + DramPolicy->SystemMemorySizeLimit =3D 0x1800; + if ((DramPolicy->ChDrp[2].RankEnable =3D=3D 0) && (DramPolicy->ChDrp[3= ].RankEnable =3D=3D 0)) { //half config + DramPolicy->SystemMemorySizeLimit /=3D 2; + } + } + + // + // Get Platform Info HOB + // + Hob.Raw =3D GetFirstGuidHob (&gEfiPlatformInfoGuid); + ASSERT (Hob.Raw !=3D NULL); + + + DEBUG ((EFI_D_INFO, "Benson has single rank memory\n")); + DramPolicy->DualRankSupportEnabled =3D FALSE; + + *DramPolicyPpi =3D DramPolicy; + + return EFI_SUCCESS; +} + diff --git a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPreMe= m/BoardInitMiscs.h b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardI= nitPreMem/BoardInitMiscs.h new file mode 100644 index 0000000..4223f11 --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPreMem/Board= InitMiscs.h @@ -0,0 +1,46 @@ +/** @file + Multiplatform initialization header file. + This file includes package header files, library classes. + + Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php. + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ + +#ifndef _MULTIPLATFORM_LIB_H_ +#define _MULTIPLATFORM_LIB_H_ + +#include +#include +#include + +extern UPDATE_FSPM_UPD_FUNC mBgUpdateFspmUpdPtr; +extern DRAM_CREATE_POLICY_DEFAULTS_FUNC mBgDramCreatePolicyDefaultsPtr; + +EFI_STATUS +EFIAPI +BgUpdateFspmUpd ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN FSPM_UPD *FspUpdRgn + ); + +EFI_STATUS +EFIAPI +BgDramCreatePolicyDefaults ( + IN EFI_PEI_READ_ONLY_VARIABLE2_PPI *VariablePpi, + OUT DRAM_POLICY_PPI **DramPolicyPpi, + IN IAFWDramConfig *DramConfigData, + IN UINTN *MrcTrainingDataAddr, + IN UINTN *MrcBootDataAddr, + IN UINT8 BoardId + ); + +#endif + diff --git a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPreMe= m/BoardInitPreMem.inf b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/Boa= rdInitPreMem/BoardInitPreMem.inf new file mode 100644 index 0000000..a00a112 --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPreMem/Board= InitPreMem.inf @@ -0,0 +1,58 @@ +## @file +# Board detected module for Intel(R) Atom(TM) x5 Processor Series. +# It will detect the board ID. +# +# Copyright (c) 2014 - 2017, Intel Corporation. All rights reserved.
+# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the B= SD License +# which accompanies this distribution. The full text of the license may b= e found at +# http://opensource.org/licenses/bsd-license.php. +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IM= PLIED. +# +## + +[Defines] + INF_VERSION =3D 0x00010017 + BASE_NAME =3D BensonGlacierInitPreMem + FILE_GUID =3D 6D2C88A1-78D0-428B-BB8E-47CCA5A3AEEF + VERSION_STRING =3D 1.0 + MODULE_TYPE =3D PEIM + CONSTRUCTOR =3D BensonGlacierInitConstructor + +[Sources] + BoardInit.c + PlatformId.c + BoardInitMiscs.c + +[LibraryClasses] + PeiServicesLib + PcdLib + +[Packages] + MdePkg/MdePkg.dec + BroxtonPlatformPkg/PlatformPkg.dec + BroxtonSiPkg/BroxtonSiPkg.dec + BroxtonFspPkg/BroxtonFspPkg.dec + IntelFsp2Pkg/IntelFsp2Pkg.dec + BroxtonPlatformPkg/Common/SampleCode/IntelFsp2WrapperPkg/IntelFsp2Wrappe= rPkg.dec + IntelFsp2WrapperPkg/IntelFsp2WrapperPkg.dec + Silicon/BroxtonSoC/BroxtonSiPkg/NorthCluster/MemoryInit/MemoryInit.dec + +[Pcd] + gPlatformModuleTokenSpaceGuid.PcdBoardId + gPlatformModuleTokenSpaceGuid.PcdFabId + gPlatformModuleTokenSpaceGuid.PcdUpdateFspmUpdFunc + gPlatformModuleTokenSpaceGuid.PcdDramCreatePolicyDefaultsFunc + gMinnowModuleTokenSpaceGuid.PcdDefaultFabId ## CONSUMES + gMinnowModuleTokenSpaceGuid.PcdMinnowBoardDetectionRun ## CONSUMES + gMinnowModuleTokenSpaceGuid.PcdMinnowBoardDetected ## CONSUMES + +[Guids] + +[Ppis] + gBoardPreMemInitPpiGuid + gBoardPreMemInitDoneGuid + diff --git a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPreMe= m/PlatformId.c b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitP= reMem/PlatformId.c new file mode 100644 index 0000000..bacdab1 --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPreMem/Platf= ormId.c @@ -0,0 +1,227 @@ +/** @file + Implement Platform ID code. + + Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php. + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ + +#include +#include +#include +#include +#include +#include "PlatformId.h" + +EFI_STATUS +EFIAPI +GetEmbeddedBoardIdFabId( + IN CONST EFI_PEI_SERVICES **PeiServices, + OUT UINT8 *BoardId, + OUT UINT8 *FabId + ) +{ + BXT_CONF_PAD0 padConfg0; + BXT_CONF_PAD1 padConfg1; + IN UINT32 CommAndOffset; + + DEBUG ((DEBUG_INFO, "GetEmbeddedBoardIdFabId++\n")); + + // + // Board_ID0: PMIC_STDBY + // + CommAndOffset =3D GetCommOffset (NORTHWEST, 0x00F0); + padConfg0.padCnf0 =3D GpioPadRead (CommAndOffset + BXT_GPIO_PAD_CONF0_OF= FSET); + padConfg0.r.PMode =3D 0; // Set to GPIO mode + padConfg0.r.GPIORxTxDis =3D 0x1; // Set to GPI + GpioPadWrite (CommAndOffset + BXT_GPIO_PAD_CONF0_OFFSET, padConfg0.padCn= f0); + padConfg1.padCnf1 =3D GpioPadRead (CommAndOffset + BXT_GPIO_PAD_CONF1_OF= FSET); + // + // Set to Pull Up 20K + // + padConfg1.r.Term =3D 0xC; + GpioPadWrite (CommAndOffset + BXT_GPIO_PAD_CONF1_OFFSET, padConfg1.padCn= f1); + // + // Board_ID1: PMIC_SDWN_B + // + CommAndOffset =3D GetCommOffset (NORTHWEST, 0x00D0); + padConfg0.padCnf0 =3D GpioPadRead (CommAndOffset + BXT_GPIO_PAD_CONF0_OF= FSET); + padConfg0.r.PMode =3D 0; + padConfg0.r.GPIORxTxDis =3D 0x1; + GpioPadWrite (CommAndOffset + BXT_GPIO_PAD_CONF0_OFFSET, padConfg0.padCn= f0); + // + // Board_ID2: PMIC_RESET_B + // + CommAndOffset =3D GetCommOffset (NORTHWEST, 0x00C8); + padConfg0.padCnf0 =3D GpioPadRead (CommAndOffset + BXT_GPIO_PAD_CONF0_OF= FSET); + padConfg0.r.PMode =3D 0; + padConfg0.r.GPIORxTxDis =3D 0x1; + GpioPadWrite (CommAndOffset + BXT_GPIO_PAD_CONF0_OFFSET, padConfg0.padCn= f0); + + // + // Board_ID3: GP_CAMERASB10 + // + + CommAndOffset =3D GetCommOffset (NORTH, 0x01E0); + padConfg0.padCnf0 =3D GpioPadRead (CommAndOffset + BXT_GPIO_PAD_CONF0_OF= FSET); + padConfg1.padCnf1 =3D GpioPadRead (CommAndOffset + BXT_GPIO_PAD_CONF1_OF= FSET); + + padConfg0.r.PMode =3D M0; // Set to GPIO mode + padConfg0.r.GPIORxTxDis =3D GPI; // Set to GPI + GpioPadWrite (CommAndOffset + BXT_GPIO_PAD_CONF0_OFFSET, padConfg0.padCn= f0); + + padConfg1.r.IOSTerm =3D EnPu; // Enable pull-up + padConfg1.r.Term =3D P_20K_H; // Set to 20K pull-up =20 + GpioPadWrite (CommAndOffset + BXT_GPIO_PAD_CONF1_OFFSET, padConfg1.padCn= f1); + + // + // Read out Board_ID=20 + // + *BoardId =3D (UINT8) (((GpioPadRead (GetCommOffset (NORTHWEST, 0x00F0) += BXT_GPIO_PAD_CONF0_OFFSET) & BIT1) >> 1) | \ + (((GpioPadRead (GetCommOffset (NORTHWEST, 0x00D0) + B= XT_GPIO_PAD_CONF0_OFFSET) & BIT1) >> 1) << 1) | \ + (((GpioPadRead (GetCommOffset (NORTHWEST, 0x00C8) + B= XT_GPIO_PAD_CONF0_OFFSET) & BIT1) >> 1) << 2) | \ + (((GpioPadRead (GetCommOffset (NORTH, 0x01E0) + BXT_G= PIO_PAD_CONF0_OFFSET) & BIT1) >> 1) << 3)); + + DEBUG ((DEBUG_INFO, "BoardId from PMIC strap: %02X\n", *BoardId)); + + // + // Fab_ID0: PMIC_I2C_SDA + // + CommAndOffset =3D GetCommOffset (NORTHWEST, 0x0108); + padConfg0.padCnf0 =3D GpioPadRead (CommAndOffset + BXT_GPIO_PAD_CONF0_OF= FSET); + padConfg0.r.PMode =3D 0; + padConfg0.r.GPIORxTxDis =3D 0x1; + GpioPadWrite (CommAndOffset + BXT_GPIO_PAD_CONF0_OFFSET, padConfg0.padCn= f0); + // + // Set to Pull Up 20K + // + padConfg1.r.Term =3D 0xC; + GpioPadWrite (CommAndOffset + BXT_GPIO_PAD_CONF1_OFFSET, padConfg1.padCn= f1); + // + // Fab_ID1: PMIC_I2C_SCL + // + CommAndOffset =3D GetCommOffset (NORTHWEST, 0x0100); + padConfg0.padCnf0 =3D GpioPadRead (CommAndOffset + BXT_GPIO_PAD_CONF0_OF= FSET); + padConfg0.r.PMode =3D 0; + padConfg0.r.GPIORxTxDis =3D 0x1; + GpioPadWrite (CommAndOffset + BXT_GPIO_PAD_CONF0_OFFSET, padConfg0.padCn= f0); + //Set to Pull Up 20K + padConfg1.r.Term =3D 0xC; + GpioPadWrite (CommAndOffset + BXT_GPIO_PAD_CONF1_OFFSET, padConfg1.padCn= f1); + // + // Fab_ID2: PMIC_BCUDISW2 + // + CommAndOffset =3D GetCommOffset (NORTHWEST, 0x00D8); + padConfg0.padCnf0 =3D GpioPadRead (CommAndOffset + BXT_GPIO_PAD_CONF0_OF= FSET); + padConfg0.r.PMode =3D 0; + padConfg0.r.GPIORxTxDis =3D 0x1; + GpioPadWrite (CommAndOffset + BXT_GPIO_PAD_CONF0_OFFSET, padConfg0.padCn= f0); + // + // Set to Pull Up 20K + // + padConfg1.r.Term =3D 0xC; + GpioPadWrite (CommAndOffset + BXT_GPIO_PAD_CONF1_OFFSET, padConfg1.padCn= f1); + // + // Fab_ID3: PMIC_BCUDISCRIT + // + CommAndOffset =3D GetCommOffset (NORTHWEST, 0x00E0); + padConfg0.padCnf0 =3D GpioPadRead (CommAndOffset + BXT_GPIO_PAD_CONF0_OF= FSET); + padConfg0.r.PMode =3D 0; + padConfg0.r.GPIORxTxDis =3D 0x1; + GpioPadWrite (CommAndOffset + BXT_GPIO_PAD_CONF0_OFFSET, padConfg0.padCn= f0); + // + // Set to Pull Up 20K + // + padConfg1.r.Term =3D 0xC; + GpioPadWrite (CommAndOffset + BXT_GPIO_PAD_CONF1_OFFSET, padConfg1.padCn= f1); + + *FabId =3D (UINT8) (((GpioPadRead (GetCommOffset (NORTHWEST, 0x0108) + B= XT_GPIO_PAD_CONF0_OFFSET) & BIT1) >> 1) | \ + (((GpioPadRead (GetCommOffset (NORTHWEST, 0x0100) + BXT= _GPIO_PAD_CONF0_OFFSET) & BIT1) >> 1) << 1) | \ + (((GpioPadRead (GetCommOffset (NORTHWEST, 0x00D8) + BXT= _GPIO_PAD_CONF0_OFFSET) & BIT1) >> 1) << 2) | \ + (((GpioPadRead (GetCommOffset (NORTHWEST, 0x00E0) + BXT= _GPIO_PAD_CONF0_OFFSET) & BIT1) >> 1) << 3)); + + DEBUG ((EFI_D_INFO, "FabId from PMIC strap: %02X\n", *FabId)); + + + return EFI_SUCCESS; +} + + +EFI_STATUS +EFIAPI +GetIVIBoardIdFabId ( + IN CONST EFI_PEI_SERVICES **PeiServices, + OUT UINT8 *BoardId, + OUT UINT8 *FabId + ) +{ + BXT_CONF_PAD0 padConfg0; + BXT_CONF_PAD1 padConfg1; + IN UINT32 CommAndOffset; + + DEBUG ((DEBUG_INFO, "GetIVIBoardIdFabId++\n")); + + // + // Board_ID0: GPIO_62 + // + CommAndOffset =3D GetCommOffset (NORTH, 0x0190); + padConfg0.padCnf0 =3D GpioPadRead (CommAndOffset + BXT_GPIO_PAD_CONF0_OF= FSET); + padConfg0.r.PMode =3D 0; + padConfg0.r.GPIORxTxDis =3D 0x1; + GpioPadWrite (CommAndOffset + BXT_GPIO_PAD_CONF0_OFFSET, padConfg0.padCn= f0); + padConfg1.padCnf1 =3D GpioPadRead (CommAndOffset + BXT_GPIO_PAD_CONF1_OF= FSET); + padConfg1.r.IOSTerm =3D 0x3; //Enable Pullup + padConfg1.r.Term =3D 0xC; //20k wpu + GpioPadWrite (CommAndOffset + BXT_GPIO_PAD_CONF1_OFFSET, padConfg1.padCn= f1); + // + // Board_ID1: GPIO_63 + // + CommAndOffset =3D GetCommOffset (NORTH, 0x0198); + padConfg0.padCnf0 =3D GpioPadRead (CommAndOffset + BXT_GPIO_PAD_CONF0_OF= FSET); + padConfg0.r.PMode =3D 0; + padConfg0.r.GPIORxTxDis =3D 0x1; + GpioPadWrite (CommAndOffset + BXT_GPIO_PAD_CONF0_OFFSET, padConfg0.padCn= f0); + padConfg1.padCnf1 =3D GpioPadRead (CommAndOffset + BXT_GPIO_PAD_CONF1_OF= FSET); + padConfg1.r.IOSTerm =3D 0x3; //Enable Pullup + padConfg1.r.Term =3D 0xC; //20k wpu + GpioPadWrite (CommAndOffset + BXT_GPIO_PAD_CONF1_OFFSET, padConfg1.padCn= f1); + // + // Board_ID2: GPIO_64 + // + CommAndOffset =3D GetCommOffset (NORTH, 0x01A0); + padConfg0.padCnf0 =3D GpioPadRead (CommAndOffset + BXT_GPIO_PAD_CONF0_OF= FSET); + padConfg0.r.PMode =3D 0; + padConfg0.r.GPIORxTxDis =3D 0x1; + GpioPadWrite (CommAndOffset + BXT_GPIO_PAD_CONF0_OFFSET, padConfg0.padCn= f0); + padConfg1.padCnf1 =3D GpioPadRead (CommAndOffset + BXT_GPIO_PAD_CONF1_OF= FSET); + padConfg1.r.IOSTerm =3D 0x3; //Enable Pullup + padConfg1.r.Term =3D 0xC; //20k wpu + GpioPadWrite (CommAndOffset + BXT_GPIO_PAD_CONF1_OFFSET, padConfg1.padCn= f1); + // + // Board_ID3: GPIO_65 + // + CommAndOffset =3D GetCommOffset (NORTH, 0x01A8); + padConfg0.padCnf0 =3D GpioPadRead (CommAndOffset + BXT_GPIO_PAD_CONF0_OF= FSET); + padConfg0.r.PMode =3D 0; + padConfg0.r.GPIORxTxDis =3D 0x1; + GpioPadWrite (CommAndOffset + BXT_GPIO_PAD_CONF0_OFFSET, padConfg0.padCn= f0); + padConfg1.padCnf1 =3D GpioPadRead (CommAndOffset + BXT_GPIO_PAD_CONF1_OF= FSET); + padConfg1.r.IOSTerm =3D 0x3; //Enable Pullup + padConfg1.r.Term =3D 0xC; //20k wpu + GpioPadWrite (CommAndOffset + BXT_GPIO_PAD_CONF1_OFFSET, padConfg1.padCn= f1); + + *BoardId =3D (UINT8) (((GpioPadRead (GetCommOffset (NORTH, 0x0190) + BXT= _GPIO_PAD_CONF0_OFFSET) & BIT1) >> 1) | \ + (((GpioPadRead (GetCommOffset (NORTH, 0x0198) + BXT_G= PIO_PAD_CONF0_OFFSET) & BIT1) >> 1) << 1) | \ + (((GpioPadRead (GetCommOffset (NORTH, 0x01A0) + BXT_G= PIO_PAD_CONF0_OFFSET) & BIT1) >> 1) << 2) | \ + (((GpioPadRead (GetCommOffset (NORTH, 0x01A8) + BXT_G= PIO_PAD_CONF0_OFFSET) & BIT1) >> 1) << 3)); + + return EFI_SUCCESS; +} + diff --git a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPreMe= m/PlatformId.h b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitP= reMem/PlatformId.h new file mode 100644 index 0000000..3999aaa --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPreMem/Platf= ormId.h @@ -0,0 +1,81 @@ +/** @file + Header file for the Platform ID code. + + Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php. + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ + +#ifndef __PLATFORM_ID_H__ +#define __PLATFORM_ID_H__ + +// +// Strap Fw Cfg ID define +// +#define IO_EXPANDER_I2C_BUS_NO 0x06 +#define IO_EXPANDER_SLAVE_ADDR 0x22 +#define IO_EXPANDER_INPUT_REG_0 0x00 +#define IO_EXPANDER_INPUT_REG_1 0x01 +#define IO_EXPANDER_INPUT_REG_2 0x02 + +EFI_STATUS +EFIAPI +GetFwCfgId ( + IN CONST EFI_PEI_SERVICES **PeiServices, + OUT UINT8 *FwCfgId + ); + +EFI_STATUS +EFIAPI +GetBoardIdFabId ( + IN CONST EFI_PEI_SERVICES **PeiServices, + OUT UINT8 *BoardId, + OUT UINT8 *FabId + ); + +EFI_STATUS +EFIAPI +GetEmbeddedBoardIdFabId ( + IN CONST EFI_PEI_SERVICES **PeiServices, + OUT UINT8 *BoardId, + OUT UINT8 *FabId + ); + +EFI_STATUS +EFIAPI +GetIVIBoardIdFabId ( + IN CONST EFI_PEI_SERVICES **PeiServices, + OUT UINT8 *BoardId, + OUT UINT8 *FabId + ); + +EFI_STATUS +EFIAPI +GetDockId ( + IN CONST EFI_PEI_SERVICES **PeiServices, + OUT UINT8 *DockId + ); + +EFI_STATUS +EFIAPI +GetOsSelPss ( + IN CONST EFI_PEI_SERVICES **PeiServices, + OUT UINT8 *OsSelPss + ); + +EFI_STATUS +EFIAPI +GetBomIdPss ( + IN CONST EFI_PEI_SERVICES **PeiServices, + OUT UINT8 *BomIdPss + ); + +#endif + diff --git a/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/Bo= ardGpios.c b/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/Bo= ardGpios.c index 971c192..7523c00 100644 --- a/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardGpio= s.c +++ b/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardGpio= s.c @@ -179,6 +179,7 @@ MultiPlatformGpioProgram ( switch (PlatformInfoHob->BoardId) { case BOARD_ID_LFH_CRB: case BOARD_ID_MINNOW: + case BOARD_ID_BENSON: // // PAD programming // @@ -257,6 +258,7 @@ MultiPlatformGpioProgram ( switch (PlatformInfoHob->BoardId) { case BOARD_ID_LFH_CRB: case BOARD_ID_MINNOW: + case BOARD_ID_BENSON: // // PAD programming // diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3/BoardInitPostMe= m/BoardGpios.c b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3/BoardInitPo= stMem/BoardGpios.c index 67103a4..eef62d9 100644 --- a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3/BoardInitPostMem/Board= Gpios.c +++ b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3/BoardInitPostMem/Board= Gpios.c @@ -44,6 +44,7 @@ MultiPlatformGpioTableInit ( switch (PlatformInfoHob->BoardId) { case BOARD_ID_LFH_CRB: case BOARD_ID_MINNOW: + case BOARD_ID_BENSON: PlatformInfoHob->PlatformGpioSetting_SW =3D &mBXT_GpioInitData_SW[0]= ; PlatformInfoHob->PlatformGpioSetting_W =3D &mBXT_GpioInitData_W[0]; PlatformInfoHob->PlatformGpioSetting_NW =3D &mBXT_GpioInitData_NW[0]= ; @@ -179,6 +180,7 @@ MultiPlatformGpioProgram ( switch (PlatformInfoHob->BoardId) { case BOARD_ID_LFH_CRB: case BOARD_ID_MINNOW: + case BOARD_ID_BENSON: // // PAD programming // @@ -252,6 +254,7 @@ MultiPlatformGpioProgram ( switch (PlatformInfoHob->BoardId) { case BOARD_ID_LFH_CRB: case BOARD_ID_MINNOW: + case BOARD_ID_BENSON: // // PAD programming // diff --git a/Platform/BroxtonPlatformPkg/Common/Include/Guid/PlatformInfo.h= b/Platform/BroxtonPlatformPkg/Common/Include/Guid/PlatformInfo.h index 5db0cbc..455c683 100644 --- a/Platform/BroxtonPlatformPkg/Common/Include/Guid/PlatformInfo.h +++ b/Platform/BroxtonPlatformPkg/Common/Include/Guid/PlatformInfo.h @@ -164,6 +164,7 @@ typedef enum { typedef enum { BOARD_ID_LFH_CRB =3D 0x07, // Leaf Hill BOARD_ID_MINNOW =3D 0x0F, // Minnow Board + BOARD_ID_BENSON =3D 0x0C, // Benson Glacier BOARD_ID_APL_UNKNOWN =3D 0xFF } APL_BOARD_ID_LIST; =20 diff --git a/Platform/BroxtonPlatformPkg/Common/Include/Guid/PlatformInfo_A= plk.h b/Platform/BroxtonPlatformPkg/Common/Include/Guid/PlatformInfo_Aplk.h index e8063de..b29bd62 100644 --- a/Platform/BroxtonPlatformPkg/Common/Include/Guid/PlatformInfo_Aplk.h +++ b/Platform/BroxtonPlatformPkg/Common/Include/Guid/PlatformInfo_Aplk.h @@ -150,6 +150,7 @@ typedef struct { typedef enum { BOARD_ID_LFH_CRB =3D 0x07, // Leaf Hill BOARD_ID_MINNOW =3D 0x0F, // Minnow Board + BOARD_ID_BENSON =3D 0x0C, // Benson Glacier BOARD_ID_APL_UNKNOWN =3D 0xFF } APL_BOARD_ID_LIST; =20 diff --git a/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformSe= tupDxe/PlatformSetupDxe.c b/Platform/BroxtonPlatformPkg/Common/PlatformSett= ings/PlatformSetupDxe/PlatformSetupDxe.c index e6df76e..54c751f 100644 --- a/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformSetupDxe/= PlatformSetupDxe.c +++ b/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformSetupDxe/= PlatformSetupDxe.c @@ -144,6 +144,7 @@ LoadPlatformDefaultValues ( switch (Private->FakeNvData.BoardId) { case BOARD_ID_LFH_CRB: case BOARD_ID_MINNOW: + case BOARD_ID_BENSON: if (Private->FakeNvData.PmicSetupDefault =3D=3D 1) { Private->FakeNvData.EnableRenderStandby =3D FALSE; } diff --git a/Platform/BroxtonPlatformPkg/PlatformDsc/Components.IA32.dsc b/= Platform/BroxtonPlatformPkg/PlatformDsc/Components.IA32.dsc index fe1ea79..bfc45ff 100644 --- a/Platform/BroxtonPlatformPkg/PlatformDsc/Components.IA32.dsc +++ b/Platform/BroxtonPlatformPkg/PlatformDsc/Components.IA32.dsc @@ -78,6 +78,7 @@ NULL|$(PLATFORM_NAME)/Board/MinnowBoard3/BoardInitPreMem/BoardInitPr= eMem.inf NULL|$(PLATFORM_NAME)/Board/LeafHill/BoardInitPreMem/BoardInitPreMem= .inf + NULL|$(PLATFORM_NAME)/Board/BensonGlacier/BoardInitPreMem/BoardInitP= reMem.inf BaseCryptLib|CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf CpuPolicyLib|$(PLATFORM_SI_PACKAGE)/Cpu/Library/PeiCpuPolicyLibPreMe= m/PeiCpuPolicyLibPreMem.inf @@ -112,6 +113,7 @@ NULL|$(PLATFORM_NAME)/Board/MinnowBoard3/BoardInitPostMem/BoardInit= PostMem.inf NULL|$(PLATFORM_NAME)/Board/LeafHill/BoardInitPostMem/BoardInitPost= Mem.inf + NULL|$(PLATFORM_NAME)/Board/BensonGlacier/BoardInitPostMem/BoardIni= tPostMem.inf gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x803805c6 } diff --git a/Platform/BroxtonPlatformPkg/PlatformDsc/Components.dsc b/Platf= orm/BroxtonPlatformPkg/PlatformDsc/Components.dsc index 7efcdb4..afaec9f 100644 --- a/Platform/BroxtonPlatformPkg/PlatformDsc/Components.dsc +++ b/Platform/BroxtonPlatformPkg/PlatformDsc/Components.dsc @@ -166,6 +166,7 @@ NULL|$(PLATFORM_NAME)/Board/MinnowBoard3/BoardInitDxe/BoardInitDxe.i= nf NULL|$(PLATFORM_NAME)/Board/LeafHill/BoardInitDxe/BoardInitDxe.inf + NULL|$(PLATFORM_NAME)/Board/BensonGlacier/BoardInitDxe/BoardInitDxe.= inf } =20 !if $(DATAHUB_ENABLE) =3D=3D TRUE --=20 2.10.1.windows.1