mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Viresh Kumar <viresh.kumar@linaro.org>
To: Andy Gross <agross@kernel.org>,
	Bjorn Andersson <bjorn.andersson@linaro.org>,
	Ilia Lin <ilia.lin@kernel.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Viresh Kumar <viresh.kumar@linaro.org>
Cc: linux-pm@vger.kernel.org,
	Vincent Guittot <vincent.guittot@linaro.org>,
	Rafael Wysocki <rjw@rjwysocki.net>,
	Stephen Boyd <sboyd@kernel.org>, Nishanth Menon <nm@ti.com>,
	Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>,
	linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH 05/31] cpufreq: qcom-nvmem: Migrate to dev_pm_opp_set_config()
Date: Thu, 26 May 2022 17:12:04 +0530	[thread overview]
Message-ID: <e48beb3df8eba830a6b8918ddfa003cefb2b0292.1653564321.git.viresh.kumar@linaro.org> (raw)
In-Reply-To: <cover.1653564321.git.viresh.kumar@linaro.org>

The OPP core now provides a unified API for setting all configuration
types, i.e. dev_pm_opp_set_config().

Lets start using it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 drivers/cpufreq/qcom-cpufreq-nvmem.c | 107 ++++++++-------------------
 1 file changed, 29 insertions(+), 78 deletions(-)

diff --git a/drivers/cpufreq/qcom-cpufreq-nvmem.c b/drivers/cpufreq/qcom-cpufreq-nvmem.c
index 6dfa86971a75..4166b8d93b70 100644
--- a/drivers/cpufreq/qcom-cpufreq-nvmem.c
+++ b/drivers/cpufreq/qcom-cpufreq-nvmem.c
@@ -55,9 +55,7 @@ struct qcom_cpufreq_match_data {
 };
 
 struct qcom_cpufreq_drv {
-	struct opp_table **names_opp_tables;
-	struct opp_table **hw_opp_tables;
-	struct opp_table **genpd_opp_tables;
+	struct opp_table **opp_tables;
 	u32 versions;
 	const struct qcom_cpufreq_match_data *data;
 };
@@ -315,72 +313,44 @@ static int qcom_cpufreq_probe(struct platform_device *pdev)
 	}
 	of_node_put(np);
 
-	drv->names_opp_tables = kcalloc(num_possible_cpus(),
-				  sizeof(*drv->names_opp_tables),
+	drv->opp_tables = kcalloc(num_possible_cpus(),
+				  sizeof(*drv->opp_tables),
 				  GFP_KERNEL);
-	if (!drv->names_opp_tables) {
+	if (!drv->opp_tables) {
 		ret = -ENOMEM;
 		goto free_drv;
 	}
-	drv->hw_opp_tables = kcalloc(num_possible_cpus(),
-				  sizeof(*drv->hw_opp_tables),
-				  GFP_KERNEL);
-	if (!drv->hw_opp_tables) {
-		ret = -ENOMEM;
-		goto free_opp_names;
-	}
-
-	drv->genpd_opp_tables = kcalloc(num_possible_cpus(),
-					sizeof(*drv->genpd_opp_tables),
-					GFP_KERNEL);
-	if (!drv->genpd_opp_tables) {
-		ret = -ENOMEM;
-		goto free_opp;
-	}
 
 	for_each_possible_cpu(cpu) {
+		struct dev_pm_opp_config config = {
+			.supported_hw = NULL,
+		};
+
 		cpu_dev = get_cpu_device(cpu);
 		if (NULL == cpu_dev) {
 			ret = -ENODEV;
-			goto free_genpd_opp;
+			goto free_opp;
 		}
 
 		if (drv->data->get_version) {
+			config.supported_hw = &drv->versions;
+			config.supported_hw_count = 1;
 
-			if (pvs_name) {
-				drv->names_opp_tables[cpu] = dev_pm_opp_set_prop_name(
-								     cpu_dev,
-								     pvs_name);
-				if (IS_ERR(drv->names_opp_tables[cpu])) {
-					ret = PTR_ERR(drv->names_opp_tables[cpu]);
-					dev_err(cpu_dev, "Failed to add OPP name %s\n",
-						pvs_name);
-					goto free_opp;
-				}
-			}
-
-			drv->hw_opp_tables[cpu] = dev_pm_opp_set_supported_hw(
-									 cpu_dev, &drv->versions, 1);
-			if (IS_ERR(drv->hw_opp_tables[cpu])) {
-				ret = PTR_ERR(drv->hw_opp_tables[cpu]);
-				dev_err(cpu_dev,
-					"Failed to set supported hardware\n");
-				goto free_genpd_opp;
-			}
+			if (pvs_name)
+				config.prop_name = pvs_name;
 		}
 
 		if (drv->data->genpd_names) {
-			drv->genpd_opp_tables[cpu] =
-				dev_pm_opp_attach_genpd(cpu_dev,
-							drv->data->genpd_names,
-							NULL);
-			if (IS_ERR(drv->genpd_opp_tables[cpu])) {
-				ret = PTR_ERR(drv->genpd_opp_tables[cpu]);
-				if (ret != -EPROBE_DEFER)
-					dev_err(cpu_dev,
-						"Could not attach to pm_domain: %d\n",
-						ret);
-				goto free_genpd_opp;
+			config.genpd_names = drv->data->genpd_names;
+			config.virt_devs = NULL;
+		}
+
+		if (config.supported_hw || config.genpd_names) {
+			drv->opp_tables[cpu] = dev_pm_opp_set_config(cpu_dev, &config);
+			if (IS_ERR(drv->opp_tables[cpu])) {
+				ret = PTR_ERR(drv->opp_tables[cpu]);
+				dev_err(cpu_dev, "Failed to set OPP config\n");
+				goto free_opp;
 			}
 		}
 	}
@@ -395,27 +365,13 @@ static int qcom_cpufreq_probe(struct platform_device *pdev)
 	ret = PTR_ERR(cpufreq_dt_pdev);
 	dev_err(cpu_dev, "Failed to register platform device\n");
 
-free_genpd_opp:
-	for_each_possible_cpu(cpu) {
-		if (IS_ERR(drv->genpd_opp_tables[cpu]))
-			break;
-		dev_pm_opp_detach_genpd(drv->genpd_opp_tables[cpu]);
-	}
-	kfree(drv->genpd_opp_tables);
 free_opp:
 	for_each_possible_cpu(cpu) {
-		if (IS_ERR(drv->names_opp_tables[cpu]))
+		if (IS_ERR(drv->opp_tables[cpu]))
 			break;
-		dev_pm_opp_put_prop_name(drv->names_opp_tables[cpu]);
+		dev_pm_opp_clear_config(drv->opp_tables[cpu]);
 	}
-	for_each_possible_cpu(cpu) {
-		if (IS_ERR(drv->hw_opp_tables[cpu]))
-			break;
-		dev_pm_opp_put_supported_hw(drv->hw_opp_tables[cpu]);
-	}
-	kfree(drv->hw_opp_tables);
-free_opp_names:
-	kfree(drv->names_opp_tables);
+	kfree(drv->opp_tables);
 free_drv:
 	kfree(drv);
 
@@ -429,15 +385,10 @@ static int qcom_cpufreq_remove(struct platform_device *pdev)
 
 	platform_device_unregister(cpufreq_dt_pdev);
 
-	for_each_possible_cpu(cpu) {
-		dev_pm_opp_put_supported_hw(drv->names_opp_tables[cpu]);
-		dev_pm_opp_put_supported_hw(drv->hw_opp_tables[cpu]);
-		dev_pm_opp_detach_genpd(drv->genpd_opp_tables[cpu]);
-	}
+	for_each_possible_cpu(cpu)
+		dev_pm_opp_clear_config(drv->opp_tables[cpu]);
 
-	kfree(drv->names_opp_tables);
-	kfree(drv->hw_opp_tables);
-	kfree(drv->genpd_opp_tables);
+	kfree(drv->opp_tables);
 	kfree(drv);
 
 	return 0;
-- 
2.31.1.272.g89b43f80a514


  parent reply	other threads:[~2022-05-26 11:44 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-26 11:41 [PATCH 00/31] OPP: Add new configuration interface: dev_pm_opp_set_config() Viresh Kumar
2022-05-26 11:42 ` [PATCH 01/31] OPP: Track if clock name is configured by platform Viresh Kumar
2022-05-26 11:42 ` [PATCH 02/31] OPP: Add dev_pm_opp_set_config() and friends Viresh Kumar
2022-06-21 15:09   ` Dmitry Osipenko
2022-06-21 15:34     ` Viresh Kumar
2022-06-22  6:13       ` Viresh Kumar
2022-05-26 11:42 ` [PATCH 03/31] cpufreq: dt: Migrate to dev_pm_opp_set_config() Viresh Kumar
2022-05-26 11:42 ` [PATCH 04/31] cpufreq: imx: " Viresh Kumar
2022-05-26 11:42 ` Viresh Kumar [this message]
2022-05-26 11:42 ` [PATCH 06/31] cpufreq: sti: " Viresh Kumar
2022-05-26 11:42 ` [PATCH 07/31] cpufreq: sun50i: " Viresh Kumar
2022-05-26 11:42 ` [PATCH 08/31] cpufreq: tegra20: " Viresh Kumar
2022-05-29 16:19   ` Dmitry Osipenko
2022-05-29 16:59     ` Dmitry Osipenko
2022-05-30  7:52       ` Viresh Kumar
2022-06-07  8:43         ` Viresh Kumar
2022-06-17 12:09           ` Dmitry Osipenko
2022-06-24  5:38       ` Viresh Kumar
2022-06-24  9:41         ` Jon Hunter
2022-05-26 11:42 ` [PATCH 09/31] cpufreq: ti: " Viresh Kumar
2022-05-26 11:42 ` [PATCH 10/31] devfreq: exynos: " Viresh Kumar
2022-05-30  9:45   ` Chanwoo Choi
2022-05-31  4:12     ` Chanwoo Choi
2022-05-31  4:15       ` Viresh Kumar
2022-05-31  4:38         ` Viresh Kumar
2022-05-31  5:05           ` Chanwoo Choi
2022-05-31  5:12             ` Viresh Kumar
2022-05-31  5:03         ` Chanwoo Choi
2022-05-26 11:42 ` [PATCH 11/31] devfreq: sun8i: " Viresh Kumar
2022-05-26 11:42 ` [PATCH 12/31] devfreq: tegra30: " Viresh Kumar
2022-05-26 11:42 ` [PATCH 13/31] drm/lima: " Viresh Kumar
2022-05-26 11:42 ` [PATCH 14/31] drm/msm: " Viresh Kumar
2022-05-26 11:42 ` [PATCH 15/31] drm/panfrost: " Viresh Kumar
2022-05-26 13:45   ` Steven Price
2022-05-26 11:42 ` [PATCH 16/31] drm/tegra: " Viresh Kumar
2022-05-26 11:42 ` [PATCH 17/31] media: venus: " Viresh Kumar
2022-05-26 11:42 ` [PATCH 18/31] media: tegra: " Viresh Kumar
2022-05-26 12:57   ` Krzysztof Kozlowski
2022-05-27  2:43     ` Viresh Kumar
2022-05-26 11:42 ` [PATCH 19/31] mmc: sdhci-msm: " Viresh Kumar
2022-06-02  9:47   ` Ulf Hansson
2022-05-26 11:42 ` [PATCH 20/31] OPP: ti: " Viresh Kumar
2022-05-26 11:42 ` [PATCH 21/31] soc/tegra: Remove the call to devm_pm_opp_set_clkname() Viresh Kumar
2022-05-26 17:57   ` Dmitry Osipenko
2022-05-27  2:52     ` Viresh Kumar
2022-06-23 21:15   ` Jon Hunter
2022-06-24  0:28     ` Viresh Kumar
2022-06-24  0:59       ` Viresh Kumar
2022-06-24 10:32         ` Jon Hunter
2022-05-26 11:42 ` [PATCH 22/31] soc/tegra: Migrate to dev_pm_opp_set_config() Viresh Kumar
2022-06-24  0:48   ` Viresh Kumar
2022-06-24  0:57     ` Viresh Kumar
2022-06-26 22:14       ` Dmitry Osipenko
2022-06-27  6:45         ` Viresh Kumar
2022-06-27  7:14           ` Dmitry Osipenko
2022-06-27  7:21             ` Viresh Kumar
2022-06-28  7:09               ` Viresh Kumar
2022-06-28 10:08                 ` Dmitry Osipenko
2022-06-28 10:11                   ` Viresh Kumar
2022-06-28 10:16                     ` Dmitry Osipenko
2022-06-28 11:00                       ` Viresh Kumar
2022-06-29 17:03                   ` Jon Hunter
2022-06-30  0:23                     ` Viresh Kumar
2022-05-26 11:42 ` [PATCH 23/31] spi: qcom: " Viresh Kumar
2022-05-26 12:41   ` Mark Brown
2022-05-26 11:42 ` [PATCH 24/31] serial: " Viresh Kumar
2022-05-26 11:42 ` [PATCH 25/31] OPP: Remove dev_pm_opp_set_regulators() and friends Viresh Kumar
2022-05-26 11:42 ` [PATCH 26/31] OPP: Remove dev_pm_opp_set_supported_hw() " Viresh Kumar
2022-05-26 11:42 ` [PATCH 27/31] OPP: Remove dev_pm_opp_set_clkname() " Viresh Kumar
2022-05-26 11:42 ` [PATCH 28/31] OPP: Remove dev_pm_opp_register_set_opp_helper() " Viresh Kumar
2022-05-26 11:42 ` [PATCH 29/31] OPP: Remove dev_pm_opp_attach_genpd() " Viresh Kumar
2022-05-26 11:42 ` [PATCH 30/31] OPP: Remove dev_pm_opp_set_prop_name() " Viresh Kumar
2022-05-26 11:42 ` [PATCH 31/31] OPP: Rearrange dev_pm_opp_set_config() " Viresh Kumar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e48beb3df8eba830a6b8918ddfa003cefb2b0292.1653564321.git.viresh.kumar@linaro.org \
    --to=viresh.kumar@linaro.org \
    --cc=agross@kernel.org \
    --cc=bjorn.andersson@linaro.org \
    --cc=ilia.lin@kernel.org \
    --cc=krzysztof.kozlowski@linaro.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=nm@ti.com \
    --cc=rafael@kernel.org \
    --cc=rjw@rjwysocki.net \
    --cc=sboyd@kernel.org \
    --cc=vincent.guittot@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®