Angel Pons | 32abdd6 | 2020-04-05 15:47:03 +0200 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
Aamir Bohra | 3ee54bb | 2018-10-17 11:55:01 +0530 | [diff] [blame] | 2 | |
Aamir Bohra | 2ee8fe0 | 2018-06-30 23:39:27 +0530 | [diff] [blame] | 3 | #include <assert.h> |
Aamir Bohra | 3ee54bb | 2018-10-17 11:55:01 +0530 | [diff] [blame] | 4 | #include <console/console.h> |
| 5 | #include <fsp/util.h> |
Michael Niewöhner | 7736bfc | 2019-10-22 23:05:06 +0200 | [diff] [blame] | 6 | #include <intelblocks/cpulib.h> |
Aamir Bohra | 2ee8fe0 | 2018-06-30 23:39:27 +0530 | [diff] [blame] | 7 | #include <soc/iomap.h> |
| 8 | #include <soc/pci_devs.h> |
Aamir Bohra | 3ee54bb | 2018-10-17 11:55:01 +0530 | [diff] [blame] | 9 | #include <soc/romstage.h> |
Subrata Banik | df29d23 | 2019-07-05 16:00:38 +0530 | [diff] [blame] | 10 | #include <soc/soc_chip.h> |
Aamir Bohra | 3ee54bb | 2018-10-17 11:55:01 +0530 | [diff] [blame] | 11 | |
Aamir Bohra | 2ee8fe0 | 2018-06-30 23:39:27 +0530 | [diff] [blame] | 12 | static void soc_memory_init_params(FSP_M_CONFIG *m_cfg, |
| 13 | const struct soc_intel_icelake_config *config) |
| 14 | { |
| 15 | unsigned int i; |
Aamir Bohra | 2ee8fe0 | 2018-06-30 23:39:27 +0530 | [diff] [blame] | 16 | uint32_t mask = 0; |
| 17 | |
Subrata Banik | 1a5d412 | 2021-06-21 18:07:50 +0530 | [diff] [blame] | 18 | /* |
| 19 | * If IGD is enabled, set IGD stolen size to 60MB. |
| 20 | * Otherwise, skip IGD init in FSP. |
| 21 | */ |
| 22 | m_cfg->InternalGfx = !CONFIG(SOC_INTEL_DISABLE_IGD) && is_devfn_enabled(SA_DEVFN_IGD); |
| 23 | m_cfg->IgdDvmt50PreAlloc = m_cfg->InternalGfx ? 0xFE : 0; |
Subrata Banik | 9fe5dde | 2019-07-12 18:32:55 +0530 | [diff] [blame] | 24 | |
Aamir Bohra | 2ee8fe0 | 2018-06-30 23:39:27 +0530 | [diff] [blame] | 25 | m_cfg->TsegSize = CONFIG_SMM_TSEG_SIZE; |
| 26 | m_cfg->IedSize = CONFIG_IED_REGION_SIZE; |
| 27 | m_cfg->SaGv = config->SaGv; |
| 28 | m_cfg->UserBd = BOARD_TYPE_ULT_ULX; |
| 29 | m_cfg->RMT = config->RMT; |
| 30 | m_cfg->SkipMbpHob = 1; |
Subrata Banik | c796a8f | 2019-07-01 10:21:11 +0530 | [diff] [blame] | 31 | |
Aamir Bohra | 2ee8fe0 | 2018-06-30 23:39:27 +0530 | [diff] [blame] | 32 | /* If Audio Codec is enabled, enable FSP UPD */ |
Subrata Banik | 1a5d412 | 2021-06-21 18:07:50 +0530 | [diff] [blame] | 33 | m_cfg->PchHdaEnable = is_devfn_enabled(PCH_DEVFN_HDA); |
Aamir Bohra | 2ee8fe0 | 2018-06-30 23:39:27 +0530 | [diff] [blame] | 34 | |
| 35 | for (i = 0; i < ARRAY_SIZE(config->PcieRpEnable); i++) { |
| 36 | if (config->PcieRpEnable[i]) |
| 37 | mask |= (1 << i); |
| 38 | } |
| 39 | m_cfg->PcieRpEnableMask = mask; |
Michael Niewöhner | 490546f | 2020-09-15 12:20:08 +0200 | [diff] [blame] | 40 | m_cfg->PrmrrSize = get_valid_prmrr_size(); |
Aamir Bohra | 2ee8fe0 | 2018-06-30 23:39:27 +0530 | [diff] [blame] | 41 | m_cfg->EnableC6Dram = config->enable_c6dram; |
| 42 | /* Disable BIOS Guard */ |
| 43 | m_cfg->BiosGuard = 0; |
| 44 | /* Disable Cpu Ratio Override temporary. */ |
| 45 | m_cfg->CpuRatio = 0; |
| 46 | m_cfg->SerialIoUartDebugControllerNumber = CONFIG_UART_FOR_CONSOLE; |
| 47 | m_cfg->PcdDebugInterfaceFlags = |
| 48 | CONFIG(DRIVERS_UART_8250IO) ? 0x02 : 0x10; |
| 49 | |
| 50 | /* Change VmxEnable UPD value according to ENABLE_VMX Kconfig */ |
| 51 | m_cfg->VmxEnable = CONFIG(ENABLE_VMX); |
| 52 | } |
| 53 | |
Aamir Bohra | 3ee54bb | 2018-10-17 11:55:01 +0530 | [diff] [blame] | 54 | void platform_fsp_memory_init_params_cb(FSPM_UPD *mupd, uint32_t version) |
| 55 | { |
Kyösti Mälkki | 8950cfb | 2019-07-13 22:16:25 +0300 | [diff] [blame] | 56 | const struct soc_intel_icelake_config *config; |
Aamir Bohra | 2ee8fe0 | 2018-06-30 23:39:27 +0530 | [diff] [blame] | 57 | FSP_M_CONFIG *m_cfg = &mupd->FspmConfig; |
| 58 | |
Kyösti Mälkki | d5f645c | 2019-09-28 00:20:27 +0300 | [diff] [blame] | 59 | config = config_of_soc(); |
Kyösti Mälkki | 8950cfb | 2019-07-13 22:16:25 +0300 | [diff] [blame] | 60 | |
Aamir Bohra | 2ee8fe0 | 2018-06-30 23:39:27 +0530 | [diff] [blame] | 61 | soc_memory_init_params(m_cfg, config); |
| 62 | |
| 63 | /* Enable SMBus controller based on config */ |
| 64 | m_cfg->SmbusEnable = config->SmbusEnable; |
| 65 | /* Set debug probe type */ |
Subrata Banik | 56626cf | 2020-02-27 19:39:22 +0530 | [diff] [blame] | 66 | m_cfg->PlatformDebugConsent = CONFIG_SOC_INTEL_ICELAKE_DEBUG_CONSENT; |
Aamir Bohra | 2ee8fe0 | 2018-06-30 23:39:27 +0530 | [diff] [blame] | 67 | |
| 68 | /* Vt-D config */ |
| 69 | m_cfg->VtdDisable = 0; |
| 70 | |
| 71 | mainboard_memory_init_params(mupd); |
Aamir Bohra | 3ee54bb | 2018-10-17 11:55:01 +0530 | [diff] [blame] | 72 | } |
| 73 | |
| 74 | __weak void mainboard_memory_init_params(FSPM_UPD *mupd) |
| 75 | { |
| 76 | printk(BIOS_DEBUG, "WEAK: %s/%s called\n", __FILE__, __func__); |
| 77 | } |