From 7dbc4052ede6d38e1e40cd4922c251f3d9e27886 Mon Sep 17 00:00:00 2001 From: Tim Crawford Date: Thu, 25 Apr 2024 10:27:12 -0600 Subject: [PATCH] soc/intel/mtl: Set HDA subsystem ID during FSP-M Intel introduced a new UPD for setting the HDA subsystem ID in FSP-M. Using SiSsidTablePtr in FSP-S no longer works as it will be locked with a default value of 0 by that point. Change-Id: I174f9a5faf7e8dbbb370d7a4c3d6e9107fb59123 Signed-off-by: Tim Crawford --- src/soc/intel/meteorlake/romstage/fsp_params.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/soc/intel/meteorlake/romstage/fsp_params.c b/src/soc/intel/meteorlake/romstage/fsp_params.c index ca8a104d89..66e0aa5920 100644 --- a/src/soc/intel/meteorlake/romstage/fsp_params.c +++ b/src/soc/intel/meteorlake/romstage/fsp_params.c @@ -409,6 +409,20 @@ static void fill_fsps_acoustic_params(FSP_M_CONFIG *m_cfg, } } +static void fill_fspm_pci_ssid_params(FSP_M_CONFIG *m_cfg, + const struct soc_intel_meteorlake_config *config) +{ + const struct device *dev; + + /* FSP moved setting HDA subsystem ID from FSP-S to FSP-M. */ + dev = pcidev_path_on_root(PCI_DEVFN_HDA); + if (dev) { + uint32_t ssid = (dev->subsystem_device << 16) | + dev->subsystem_vendor; + m_cfg->PchHdaSubSystemIds = ssid; + } +} + static void soc_memory_init_params(FSP_M_CONFIG *m_cfg, const struct soc_intel_meteorlake_config *config) { @@ -433,6 +447,7 @@ static void soc_memory_init_params(FSP_M_CONFIG *m_cfg, fill_fspm_vr_config_params, fill_fspm_ibecc_params, fill_fsps_acoustic_params, + fill_fspm_pci_ssid_params, }; for (size_t i = 0; i < ARRAY_SIZE(fill_fspm_params); i++)