From 3a88eb8cb6c6449dc622e2122abac7ae96879e7d Mon Sep 17 00:00:00 2001 From: Subrata Banik Date: Wed, 2 Apr 2025 18:14:07 +0530 Subject: [PATCH] mb/google/fatcat: Enable HDA SDI based on FW config MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit modifies the handling of PCH High Definition Audio (HDA) Serial Digital Interface (SDI) enablement. - In `devicetree.cb`, the static `pch_hda_sdi_enable` property is removed to allow varaints to override if needed. - In `variant.c`, `variant_update_soc_memory_init_params` is introduced to dynamically configure `PchHdaSdiEnable` UPD based on the firmware configuration (for example: `AUDIO_ALC256_HDA` or `AUDIO_ALC256M_CG_HDA`). SDI is enabled if this FW config option is present. Otherwise, it defaults to disabled. - `variant.c` is now added for romstage as well because the SDI configuration needs to happen earlier in the boot process. BUG=b:328770565, b:407876136 TEST=Able to reduce the boot time by 18ms for SKUs w/o HDA audio. Change-Id: Ice28ea7445a5cb32fe8263ada363d4f45c3152f5 Signed-off-by: Subrata Banik Reviewed-on: https://review.coreboot.org/c/coreboot/+/87090 Reviewed-by: Jérémy Compostella Tested-by: build bot (Jenkins) Reviewed-by: Wonkyu Kim Reviewed-by: Kapil Porwal --- .../variants/baseboard/fatcat/devicetree.cb | 1 - .../google/fatcat/variants/fatcat/Makefile.mk | 2 +- .../google/fatcat/variants/fatcat/variant.c | 13 +++++++++++++ .../google/fatcat/variants/francka/Makefile.mk | 2 +- .../google/fatcat/variants/francka/variant.c | 17 +++++++++++++++++ 5 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 src/mainboard/google/fatcat/variants/francka/variant.c diff --git a/src/mainboard/google/fatcat/variants/baseboard/fatcat/devicetree.cb b/src/mainboard/google/fatcat/variants/baseboard/fatcat/devicetree.cb index f9c79adc8f..aa297b1a91 100644 --- a/src/mainboard/google/fatcat/variants/baseboard/fatcat/devicetree.cb +++ b/src/mainboard/google/fatcat/variants/baseboard/fatcat/devicetree.cb @@ -98,7 +98,6 @@ chip soc/intel/pantherlake register "pch_hda_idisp_link_tmode" = "HDA_TMODE_8T" register "pch_hda_idisp_link_frequency" = "HDA_LINKFREQ_96MHZ" register "pch_hda_idisp_codec_enable" = "true" - register "pch_hda_sdi_enable" = "{ true, false }" device domain 0 on device ref dtt on end diff --git a/src/mainboard/google/fatcat/variants/fatcat/Makefile.mk b/src/mainboard/google/fatcat/variants/fatcat/Makefile.mk index eb361dfe89..b9f1fd15dd 100644 --- a/src/mainboard/google/fatcat/variants/fatcat/Makefile.mk +++ b/src/mainboard/google/fatcat/variants/fatcat/Makefile.mk @@ -5,5 +5,5 @@ romstage-y += gpio.c romstage-y += memory.c romstage-$(CONFIG_FW_CONFIG) += fw_config.c ramstage-y += gpio.c -ramstage-$(CONFIG_FW_CONFIG) += variant.c +romstage-$(CONFIG_FW_CONFIG) += variant.c ramstage-$(CONFIG_FW_CONFIG) += fw_config.c diff --git a/src/mainboard/google/fatcat/variants/fatcat/variant.c b/src/mainboard/google/fatcat/variants/fatcat/variant.c index 85c92430f7..66c86cf161 100644 --- a/src/mainboard/google/fatcat/variants/fatcat/variant.c +++ b/src/mainboard/google/fatcat/variants/fatcat/variant.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0-only */ #include +#include #include #include @@ -25,3 +26,15 @@ void variant_update_soc_chip_config(struct soc_intel_pantherlake_config *config) } } } + +void variant_update_soc_memory_init_params(FSPM_UPD *memupd) +{ + FSP_M_CONFIG *m_cfg = &memupd->FspmConfig; + + /* HDA Audio */ + if (fw_config_probe(FW_CONFIG(AUDIO, AUDIO_ALC256_HDA))) { + printk(BIOS_INFO, "Overriding HDA SDI lanes.\n"); + m_cfg->PchHdaSdiEnable[0] = true; + m_cfg->PchHdaSdiEnable[1] = false; + } +} diff --git a/src/mainboard/google/fatcat/variants/francka/Makefile.mk b/src/mainboard/google/fatcat/variants/francka/Makefile.mk index f4b5d45f77..59936d98b2 100644 --- a/src/mainboard/google/fatcat/variants/francka/Makefile.mk +++ b/src/mainboard/google/fatcat/variants/francka/Makefile.mk @@ -5,6 +5,6 @@ bootblock-y += gpio.c romstage-y += gpio.c romstage-y += memory.c romstage-$(CONFIG_FW_CONFIG) += fw_config.c - +romstage-$(CONFIG_FW_CONFIG) += variant.c ramstage-y += gpio.c ramstage-$(CONFIG_FW_CONFIG) += fw_config.c diff --git a/src/mainboard/google/fatcat/variants/francka/variant.c b/src/mainboard/google/fatcat/variants/francka/variant.c new file mode 100644 index 0000000000..0943ee18be --- /dev/null +++ b/src/mainboard/google/fatcat/variants/francka/variant.c @@ -0,0 +1,17 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include +#include +#include + +void variant_update_soc_memory_init_params(FSPM_UPD *memupd) +{ + FSP_M_CONFIG *m_cfg = &memupd->FspmConfig; + + /* HDA Audio */ + if (fw_config_probe(FW_CONFIG(AUDIO, AUDIO_ALC256M_CG_HDA))) { + printk(BIOS_INFO, "Overriding HDA SDI lanes.\n"); + m_cfg->PchHdaSdiEnable[0] = true; + m_cfg->PchHdaSdiEnable[1] = false; + } +}