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:
parent
ee3158fd6c
commit
5af546c5e4
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue