soc/intel/apollolake: Bypass FSP's CpuMemorytest, PCIe pwr seq & SPI Init

CpuMemoryTest in FSP tests 0 to 1M of the RAM after MRC init. With 
PAGING_IN_CACHE_AS_RAM enabled for GLK, there was no page table 
entry for this range which caused a page fault. Since this test 
is anyway not exhaustive, we will skip the memory test in FSP.

There is an option to do PCIe power sequence from within FSP if provided
with the GPIOs used for PERST to FSP. Since we do this from coreboot,
will skip the PCIe power sequence done by FSP.

FSP does not know what the clock requirements are for the device on
SPI bus, hence it should not modify what coreboot has set up. Hence 
skipping SPI clock programming in FSP.

CQ-DEPEND=CL:*627827
BUG=b:78599939, b:78599576, b:76058338
BRANCH=None
TEST=Build coreboot for Octopus board.

Change-Id: I4fa7a73fbb4676bb7af2416c8a33bf10ef41dd53
Signed-off-by: Srinidhi N Kaushik <srinidhi.n.kaushik@intel.com>
Reviewed-on: https://review.coreboot.org/26284
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-by: Furquan Shaikh <furquan@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Srinidhi N Kaushik 2018-05-14 23:33:55 -07:00 committed by Aaron Durbin
parent ee3158fd6c
commit 5af546c5e4
2 changed files with 21 additions and 9 deletions

View File

@ -538,6 +538,7 @@ static void apl_fsp_silicon_init_params_cb(struct soc_intel_apollolake_config
static void glk_fsp_silicon_init_params_cb( static void glk_fsp_silicon_init_params_cb(
struct soc_intel_apollolake_config *cfg, FSP_S_CONFIG *silconfig) struct soc_intel_apollolake_config *cfg, FSP_S_CONFIG *silconfig)
{ {
#if IS_ENABLED(CONFIG_SOC_INTEL_GLK)
silconfig->Gmm = 0; silconfig->Gmm = 0;
/* On Geminilake, we need to override the default FSP PCIe de-emphasis /* On Geminilake, we need to override the default FSP PCIe de-emphasis
@ -550,6 +551,13 @@ static void glk_fsp_silicon_init_params_cb(
memcpy(silconfig->PcieRpSelectableDeemphasis, memcpy(silconfig->PcieRpSelectableDeemphasis,
cfg->pcie_rp_deemphasis_enable, cfg->pcie_rp_deemphasis_enable,
sizeof(silconfig->PcieRpSelectableDeemphasis)); sizeof(silconfig->PcieRpSelectableDeemphasis));
/*
* FSP does not know what the clock requirements are for the
* device on SPI bus, hence it should not modify what coreboot
* has set up. Hence skipping in FSP.
*/
silconfig->SkipSpiPCP = 1;
#endif
} }
void __weak mainboard_devtree_update(struct device *dev) void __weak mainboard_devtree_update(struct device *dev)

View File

@ -315,16 +315,20 @@ static void soc_memory_init_params(FSPM_UPD *mupd)
m_cfg->PrmrrSize = config->PrmrrSize; m_cfg->PrmrrSize = config->PrmrrSize;
/* FSP performs a PERST# signal deassertion for PCIe ports with /*
* the GPIO address specified in these UPDs. Over-ride the default * CpuMemoryTest in FSP tests 0 to 1M of the RAM after MRC init.
* addresses with 0 to bypass PERST# signal deassertion in FSP. * With PAGING_IN_CACHE_AS_RAM enabled for GLK, there was no page
* table entry for this range which caused a page fault. Since this
* test is anyway not exhaustive, skipping the memory test in FSP.
*/ */
m_cfg->RootPort0Perst = 0; m_cfg->SkipMemoryTestUpd = 1;
m_cfg->RootPort1Perst = 0;
m_cfg->RootPort2Perst = 0; /*
m_cfg->RootPort3Perst = 0; * PCIe power sequence can be done from within FSP when provided
m_cfg->RootPort4Perst = 0; * with the GPIOs used for PERST to FSP. Since this is done in
m_cfg->RootPort5Perst = 0; * coreboot, skipping the PCIe power sequence done by FSP.
*/
m_cfg->SkipPciePowerSequence = 1;
#endif #endif
} }