Commit bc621588 authored by Rafael J. Wysocki's avatar Rafael J. Wysocki

Merge branch 'pm-cpufreq'

Merge cpufreq fixes for 5.19-rc5, including ARM cpufreq fixes and the
following one:

 - Make amd-pstate enable CPPC on resume from S3 (Jinzhou Su).

* pm-cpufreq:
  cpufreq: Add MT8186 to cpufreq-dt-platdev blocklist
  cpufreq: pmac32-cpufreq: Fix refcount leak bug
  cpufreq: qcom-hw: Don't do lmh things without a throttle interrupt
  drivers: cpufreq: Add missing of_node_put() in qoriq-cpufreq.c
  cpufreq: amd-pstate: Add resume and suspend callbacks
parents 589cb2c0 049b1ed9
...@@ -566,6 +566,28 @@ static int amd_pstate_cpu_exit(struct cpufreq_policy *policy) ...@@ -566,6 +566,28 @@ static int amd_pstate_cpu_exit(struct cpufreq_policy *policy)
return 0; return 0;
} }
static int amd_pstate_cpu_resume(struct cpufreq_policy *policy)
{
int ret;
ret = amd_pstate_enable(true);
if (ret)
pr_err("failed to enable amd-pstate during resume, return %d\n", ret);
return ret;
}
static int amd_pstate_cpu_suspend(struct cpufreq_policy *policy)
{
int ret;
ret = amd_pstate_enable(false);
if (ret)
pr_err("failed to disable amd-pstate during suspend, return %d\n", ret);
return ret;
}
/* Sysfs attributes */ /* Sysfs attributes */
/* /*
...@@ -636,6 +658,8 @@ static struct cpufreq_driver amd_pstate_driver = { ...@@ -636,6 +658,8 @@ static struct cpufreq_driver amd_pstate_driver = {
.target = amd_pstate_target, .target = amd_pstate_target,
.init = amd_pstate_cpu_init, .init = amd_pstate_cpu_init,
.exit = amd_pstate_cpu_exit, .exit = amd_pstate_cpu_exit,
.suspend = amd_pstate_cpu_suspend,
.resume = amd_pstate_cpu_resume,
.set_boost = amd_pstate_set_boost, .set_boost = amd_pstate_set_boost,
.name = "amd-pstate", .name = "amd-pstate",
.attr = amd_pstate_attr, .attr = amd_pstate_attr,
......
...@@ -127,6 +127,7 @@ static const struct of_device_id blocklist[] __initconst = { ...@@ -127,6 +127,7 @@ static const struct of_device_id blocklist[] __initconst = {
{ .compatible = "mediatek,mt8173", }, { .compatible = "mediatek,mt8173", },
{ .compatible = "mediatek,mt8176", }, { .compatible = "mediatek,mt8176", },
{ .compatible = "mediatek,mt8183", }, { .compatible = "mediatek,mt8183", },
{ .compatible = "mediatek,mt8186", },
{ .compatible = "mediatek,mt8365", }, { .compatible = "mediatek,mt8365", },
{ .compatible = "mediatek,mt8516", }, { .compatible = "mediatek,mt8516", },
......
...@@ -470,6 +470,10 @@ static int pmac_cpufreq_init_MacRISC3(struct device_node *cpunode) ...@@ -470,6 +470,10 @@ static int pmac_cpufreq_init_MacRISC3(struct device_node *cpunode)
if (slew_done_gpio_np) if (slew_done_gpio_np)
slew_done_gpio = read_gpio(slew_done_gpio_np); slew_done_gpio = read_gpio(slew_done_gpio_np);
of_node_put(volt_gpio_np);
of_node_put(freq_gpio_np);
of_node_put(slew_done_gpio_np);
/* If we use the frequency GPIOs, calculate the min/max speeds based /* If we use the frequency GPIOs, calculate the min/max speeds based
* on the bus frequencies * on the bus frequencies
*/ */
......
...@@ -442,6 +442,9 @@ static int qcom_cpufreq_hw_cpu_online(struct cpufreq_policy *policy) ...@@ -442,6 +442,9 @@ static int qcom_cpufreq_hw_cpu_online(struct cpufreq_policy *policy)
struct platform_device *pdev = cpufreq_get_driver_data(); struct platform_device *pdev = cpufreq_get_driver_data();
int ret; int ret;
if (data->throttle_irq <= 0)
return 0;
ret = irq_set_affinity_hint(data->throttle_irq, policy->cpus); ret = irq_set_affinity_hint(data->throttle_irq, policy->cpus);
if (ret) if (ret)
dev_err(&pdev->dev, "Failed to set CPU affinity of %s[%d]\n", dev_err(&pdev->dev, "Failed to set CPU affinity of %s[%d]\n",
...@@ -469,6 +472,9 @@ static int qcom_cpufreq_hw_cpu_offline(struct cpufreq_policy *policy) ...@@ -469,6 +472,9 @@ static int qcom_cpufreq_hw_cpu_offline(struct cpufreq_policy *policy)
static void qcom_cpufreq_hw_lmh_exit(struct qcom_cpufreq_data *data) static void qcom_cpufreq_hw_lmh_exit(struct qcom_cpufreq_data *data)
{ {
if (data->throttle_irq <= 0)
return;
free_irq(data->throttle_irq, data); free_irq(data->throttle_irq, data);
} }
......
...@@ -275,6 +275,7 @@ static int qoriq_cpufreq_probe(struct platform_device *pdev) ...@@ -275,6 +275,7 @@ static int qoriq_cpufreq_probe(struct platform_device *pdev)
np = of_find_matching_node(NULL, qoriq_cpufreq_blacklist); np = of_find_matching_node(NULL, qoriq_cpufreq_blacklist);
if (np) { if (np) {
of_node_put(np);
dev_info(&pdev->dev, "Disabling due to erratum A-008083"); dev_info(&pdev->dev, "Disabling due to erratum A-008083");
return -ENODEV; return -ENODEV;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment