soc/amd/picasso: Add THERMCTL_LIMIT DPTC parameter support

Add THERMCTL_LIMIT (die temperature limit) DPTC parameter
for clamshell/tablet mode.

BUG=b:157943445
BRANCH=zork
TEST=build

Change-Id: Id193a74210c92d1e45ed4824ee9c0fc9ceaa5e3a
Signed-off-by: Kevin Chiu <kevin.chiu@quantatw.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/45519
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Furquan Shaikh <furquan@google.com>
This commit is contained in:
Kevin Chiu 2020-09-18 17:30:30 +08:00 committed by Furquan Shaikh
parent e0d749c23b
commit cdd9f5cb72
2 changed files with 11 additions and 3 deletions

View File

@ -111,6 +111,7 @@ struct soc_amd_picasso_config {
/* Lower die temperature limit */ /* Lower die temperature limit */
uint32_t thermctl_limit; uint32_t thermctl_limit;
uint32_t thermctl_limit_tablet_mode;
/* FP5 Processor Voltage Supply PSI Currents. 0 indicates use SOC default */ /* FP5 Processor Voltage Supply PSI Currents. 0 indicates use SOC default */
uint32_t psi0_current_limit; uint32_t psi0_current_limit;

View File

@ -17,10 +17,11 @@
enum { enum {
ALIB_DPTCI_FUNCTION_ID = 0xc, ALIB_DPTCI_FUNCTION_ID = 0xc,
THERMAL_CONTROL_LIMIT_ID = 0x3,
SUSTAINED_POWER_LIMIT_PARAM_ID = 0x5, SUSTAINED_POWER_LIMIT_PARAM_ID = 0x5,
FAST_PPT_LIMIT_PARAM_ID = 0x6, FAST_PPT_LIMIT_PARAM_ID = 0x6,
SLOW_PPT_LIMIT_PARAM_ID = 0x7, SLOW_PPT_LIMIT_PARAM_ID = 0x7,
DPTC_TOTAL_UPDATE_PARAMS = 3, DPTC_TOTAL_UPDATE_PARAMS = 4,
}; };
struct dptc_param { struct dptc_param {
@ -33,10 +34,14 @@ struct dptc_input {
struct dptc_param params[DPTC_TOTAL_UPDATE_PARAMS]; struct dptc_param params[DPTC_TOTAL_UPDATE_PARAMS];
} __packed; } __packed;
#define DPTC_INPUTS(_sustained, _fast, _slow) \ #define DPTC_INPUTS(_thermctllmit, _sustained, _fast, _slow) \
{ \ { \
.size = sizeof(struct dptc_input), \ .size = sizeof(struct dptc_input), \
.params = { \ .params = { \
{ \
.id = THERMAL_CONTROL_LIMIT_ID, \
.value = _thermctllmit, \
}, \
{ \ { \
.id = SUSTAINED_POWER_LIMIT_PARAM_ID, \ .id = SUSTAINED_POWER_LIMIT_PARAM_ID, \
.value = _sustained, \ .value = _sustained, \
@ -195,10 +200,12 @@ static void acipgen_dptci(void)
if (!config->dptc_enable) if (!config->dptc_enable)
return; return;
struct dptc_input default_input = DPTC_INPUTS(config->sustained_power_limit, struct dptc_input default_input = DPTC_INPUTS(config->thermctl_limit,
config->sustained_power_limit,
config->fast_ppt_limit, config->fast_ppt_limit,
config->slow_ppt_limit); config->slow_ppt_limit);
struct dptc_input tablet_mode_input = DPTC_INPUTS( struct dptc_input tablet_mode_input = DPTC_INPUTS(
config->thermctl_limit_tablet_mode,
config->sustained_power_limit_tablet_mode, config->sustained_power_limit_tablet_mode,
config->fast_ppt_limit_tablet_mode, config->fast_ppt_limit_tablet_mode,
config->slow_ppt_limit_tablet_mode); config->slow_ppt_limit_tablet_mode);