| From 42372f190ff2d6d7a54efd2c6e7578f42e65719d Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 25 Jan 2023 15:29:32 +0530 |
| Subject: platform/x86/amd/pmf: Add helper routine to update SPS thermals |
| |
| From: Shyam Sundar S K <Shyam-sundar.S-k@amd.com> |
| |
| [ Upstream commit c5258d39fc4cbed37e20945715e7eb102f26d65b ] |
| |
| Add helper routine to update the static slider information |
| and remove the duplicate code occurrences after this change. |
| |
| Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com> |
| Reviewed-by: Mario Limonciello <mario.limonciello@amd.com> |
| Link: https://lore.kernel.org/r/20230125095936.3292883-2-Shyam-sundar.S-k@amd.com |
| Reviewed-by: Hans de Goede <hdegoede@redhat.com> |
| Signed-off-by: Hans de Goede <hdegoede@redhat.com> |
| Stable-dep-of: 635f79bc73cf ("platform/x86/amd/pmf: Fix to update SPS default pprof thermals") |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/platform/x86/amd/pmf/auto-mode.c | 7 +------ |
| drivers/platform/x86/amd/pmf/cnqf.c | 8 ++------ |
| drivers/platform/x86/amd/pmf/pmf.h | 1 + |
| drivers/platform/x86/amd/pmf/sps.c | 20 ++++++++++++++------ |
| 4 files changed, 18 insertions(+), 18 deletions(-) |
| |
| diff --git a/drivers/platform/x86/amd/pmf/auto-mode.c b/drivers/platform/x86/amd/pmf/auto-mode.c |
| index 85ce9ed25b85..96a8e1832c05 100644 |
| --- a/drivers/platform/x86/amd/pmf/auto-mode.c |
| +++ b/drivers/platform/x86/amd/pmf/auto-mode.c |
| @@ -275,13 +275,8 @@ int amd_pmf_reset_amt(struct amd_pmf_dev *dev) |
| */ |
| |
| if (is_apmf_func_supported(dev, APMF_FUNC_STATIC_SLIDER_GRANULAR)) { |
| - int mode = amd_pmf_get_pprof_modes(dev); |
| - |
| - if (mode < 0) |
| - return mode; |
| - |
| dev_dbg(dev->dev, "resetting AMT thermals\n"); |
| - amd_pmf_update_slider(dev, SLIDER_OP_SET, mode, NULL); |
| + amd_pmf_set_sps_power_limits(dev); |
| } |
| return 0; |
| } |
| diff --git a/drivers/platform/x86/amd/pmf/cnqf.c b/drivers/platform/x86/amd/pmf/cnqf.c |
| index 668c7c0fea83..ef2ac30ff15e 100644 |
| --- a/drivers/platform/x86/amd/pmf/cnqf.c |
| +++ b/drivers/platform/x86/amd/pmf/cnqf.c |
| @@ -307,13 +307,9 @@ static ssize_t cnqf_enable_store(struct device *dev, |
| const char *buf, size_t count) |
| { |
| struct amd_pmf_dev *pdev = dev_get_drvdata(dev); |
| - int mode, result, src; |
| + int result, src; |
| bool input; |
| |
| - mode = amd_pmf_get_pprof_modes(pdev); |
| - if (mode < 0) |
| - return mode; |
| - |
| result = kstrtobool(buf, &input); |
| if (result) |
| return result; |
| @@ -325,7 +321,7 @@ static ssize_t cnqf_enable_store(struct device *dev, |
| amd_pmf_set_cnqf(pdev, src, config_store.current_mode, NULL); |
| } else { |
| if (is_apmf_func_supported(pdev, APMF_FUNC_STATIC_SLIDER_GRANULAR)) |
| - amd_pmf_update_slider(pdev, SLIDER_OP_SET, mode, NULL); |
| + amd_pmf_set_sps_power_limits(pdev); |
| } |
| |
| dev_dbg(pdev->dev, "Received CnQF %s\n", input ? "on" : "off"); |
| diff --git a/drivers/platform/x86/amd/pmf/pmf.h b/drivers/platform/x86/amd/pmf/pmf.h |
| index 84bbe2c6ea61..b5b77a353b96 100644 |
| --- a/drivers/platform/x86/amd/pmf/pmf.h |
| +++ b/drivers/platform/x86/amd/pmf/pmf.h |
| @@ -394,6 +394,7 @@ int apmf_get_static_slider_granular(struct amd_pmf_dev *pdev, |
| |
| |
| int apmf_update_fan_idx(struct amd_pmf_dev *pdev, bool manual, u32 idx); |
| +int amd_pmf_set_sps_power_limits(struct amd_pmf_dev *pmf); |
| |
| /* Auto Mode Layer */ |
| int apmf_get_auto_mode_def(struct amd_pmf_dev *pdev, struct apmf_auto_mode *data); |
| diff --git a/drivers/platform/x86/amd/pmf/sps.c b/drivers/platform/x86/amd/pmf/sps.c |
| index dba7e36962dc..5f842d6e6db2 100644 |
| --- a/drivers/platform/x86/amd/pmf/sps.c |
| +++ b/drivers/platform/x86/amd/pmf/sps.c |
| @@ -70,6 +70,19 @@ void amd_pmf_update_slider(struct amd_pmf_dev *dev, bool op, int idx, |
| } |
| } |
| |
| +int amd_pmf_set_sps_power_limits(struct amd_pmf_dev *pmf) |
| +{ |
| + int mode; |
| + |
| + mode = amd_pmf_get_pprof_modes(pmf); |
| + if (mode < 0) |
| + return mode; |
| + |
| + amd_pmf_update_slider(pmf, SLIDER_OP_SET, mode, NULL); |
| + |
| + return 0; |
| +} |
| + |
| static int amd_pmf_profile_get(struct platform_profile_handler *pprof, |
| enum platform_profile_option *profile) |
| { |
| @@ -105,15 +118,10 @@ static int amd_pmf_profile_set(struct platform_profile_handler *pprof, |
| enum platform_profile_option profile) |
| { |
| struct amd_pmf_dev *pmf = container_of(pprof, struct amd_pmf_dev, pprof); |
| - int mode; |
| |
| pmf->current_profile = profile; |
| - mode = amd_pmf_get_pprof_modes(pmf); |
| - if (mode < 0) |
| - return mode; |
| |
| - amd_pmf_update_slider(pmf, SLIDER_OP_SET, mode, NULL); |
| - return 0; |
| + return amd_pmf_set_sps_power_limits(pmf); |
| } |
| |
| int amd_pmf_init_sps(struct amd_pmf_dev *dev) |
| -- |
| 2.39.0 |
| |