Commit c5258d39 authored by Shyam Sundar S K's avatar Shyam Sundar S K Committed by Hans de Goede
Browse files

platform/x86/amd/pmf: Add helper routine to update SPS thermals



Add helper routine to update the static slider information
and remove the duplicate code occurrences after this change.

Signed-off-by: default avatarShyam Sundar S K <Shyam-sundar.S-k@amd.com>
Reviewed-by: default avatarMario Limonciello <mario.limonciello@amd.com>
Link: https://lore.kernel.org/r/20230125095936.3292883-2-Shyam-sundar.S-k@amd.com


Reviewed-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
parent 1bc5d819
Loading
Loading
Loading
Loading
+1 −6
Original line number Diff line number Diff line
@@ -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;
}
+2 −6
Original line number Diff line number Diff line
@@ -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");
+1 −0
Original line number Diff line number Diff line
@@ -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);
+14 −6
Original line number Diff line number Diff line
@@ -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)