From bf0ee592f5487916f55000e46188b44b83ef7892 Mon Sep 17 00:00:00 2001 From: Kilian Krause Date: Mon, 21 Jul 2025 10:49:08 +0200 Subject: [PATCH] soc/intel/alderlake: Make SATA speed limit configurable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add support for limiting SATA interface speed through the FSP parameter 'SataSpeedLimit'. This is useful for mainboards with physical design constraints that require operating at lower speeds than what the controller and drives support. The implementation adds a new chip config option that mainboards can set in their devicetree to control this behavior. Change-Id: Ib0a058d006b752975c57851f2418a4e94b3bfcca Signed-off-by: Kilian Krause Reviewed-on: https://review.coreboot.org/c/coreboot/+/88951 Reviewed-by: Jérémy Compostella Tested-by: build bot (Jenkins) --- src/soc/intel/alderlake/chip.h | 7 +++++++ src/soc/intel/alderlake/fsp_params.c | 1 + 2 files changed, 8 insertions(+) diff --git a/src/soc/intel/alderlake/chip.h b/src/soc/intel/alderlake/chip.h index 25e0f6ed28..db8965e40e 100644 --- a/src/soc/intel/alderlake/chip.h +++ b/src/soc/intel/alderlake/chip.h @@ -341,6 +341,12 @@ enum slew_rate { SLEW_FAST_16 }; +enum sata_speed_limit { + SATA_DEFAULT, + SATA_GEN1, /* 1.5 Gbps */ + SATA_GEN2 /* 3.0 Gbps */ +}; + struct soc_intel_alderlake_config { /* Common struct containing soc config data required by common code */ struct soc_intel_common_config common_soc_config; @@ -416,6 +422,7 @@ struct soc_intel_alderlake_config { bool sata_salp_support; bool sata_ports_enable[8]; bool sata_ports_dev_slp[8]; + enum sata_speed_limit sata_speed; /* * Enable(0)/Disable(1) SATA Power Optimizer on PCH side. diff --git a/src/soc/intel/alderlake/fsp_params.c b/src/soc/intel/alderlake/fsp_params.c index 6382322786..bd6f1d548a 100644 --- a/src/soc/intel/alderlake/fsp_params.c +++ b/src/soc/intel/alderlake/fsp_params.c @@ -778,6 +778,7 @@ static void fill_fsps_sata_params(FSP_S_CONFIG *s_cfg, if (s_cfg->SataEnable) { s_cfg->SataMode = config->sata_mode; s_cfg->SataSalpSupport = config->sata_salp_support; + s_cfg->SataSpeedLimit = config->sata_speed; memcpy(s_cfg->SataPortsEnable, config->sata_ports_enable, sizeof(s_cfg->SataPortsEnable)); memcpy(s_cfg->SataPortsDevSlp, config->sata_ports_dev_slp,