All of lore.kernel.org
 help / color / mirror / Atom feed
From: Viresh Kumar <viresh.kumar@linaro.org>
To: Ilia Lin <ilia.lin@kernel.org>, Andy Gross <agross@kernel.org>,
	Bjorn Andersson <bjorn.andersson@linaro.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>,
	Stephen Boyd <sboyd@kernel.org>, Nishanth Menon <nm@ti.com>,
	linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH V2 05/30] cpufreq: qcom-nvmem: Migrate to dev_pm_opp_set_config()
Date: Fri,  1 Jul 2022 13:50:00 +0530	[thread overview]
Message-ID: <cb712d0b383af3f15d7583f30a82284b06731367.1656660185.git.viresh.kumar@linaro.org> (raw)
In-Reply-To: <cover.1656660185.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 | 109 +++++++--------------------
 1 file changed, 28 insertions(+), 81 deletions(-)

diff --git a/drivers/cpufreq/qcom-cpufreq-nvmem.c b/drivers/cpufreq/qcom-cpufreq-nvmem.c
index 6dfa86971a75..863548f59c3e 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;
+	int *opp_tokens;
 	u32 versions;
 	const struct qcom_cpufreq_match_data *data;
 };
@@ -315,72 +313,43 @@ 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_tokens = kcalloc(num_possible_cpus(), sizeof(*drv->opp_tokens),
 				  GFP_KERNEL);
-	if (!drv->names_opp_tables) {
+	if (!drv->opp_tokens) {
 		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_tokens[cpu] = dev_pm_opp_set_config(cpu_dev, &config);
+			if (drv->opp_tokens[cpu] < 0) {
+				ret = drv->opp_tokens[cpu];
+				dev_err(cpu_dev, "Failed to set OPP config\n");
+				goto free_opp;
 			}
 		}
 	}
@@ -395,27 +364,10 @@ 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]))
-			break;
-		dev_pm_opp_put_prop_name(drv->names_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);
+	for_each_possible_cpu(cpu)
+		dev_pm_opp_clear_config(drv->opp_tokens[cpu]);
+	kfree(drv->opp_tokens);
 free_drv:
 	kfree(drv);
 
@@ -429,15 +381,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_tokens[cpu]);
 
-	kfree(drv->names_opp_tables);
-	kfree(drv->hw_opp_tables);
-	kfree(drv->genpd_opp_tables);
+	kfree(drv->opp_tokens);
 	kfree(drv);
 
 	return 0;
-- 
2.31.1.272.g89b43f80a514


  parent reply	other threads:[~2022-07-01  8:21 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-01  8:19 [PATCH V2 00/30] OPP: Add new configuration interface: dev_pm_opp_set_config() Viresh Kumar
2022-07-01  8:19 ` Viresh Kumar
2022-07-01  8:19 ` [PATCH V2 01/30] OPP: Track if clock name is configured by platform Viresh Kumar
2022-07-01  8:19 ` [PATCH V2 02/30] OPP: Add dev_pm_opp_set_config() and friends Viresh Kumar
2022-07-01  8:19 ` [PATCH V2 03/30] cpufreq: dt: Migrate to dev_pm_opp_set_config() Viresh Kumar
2022-07-01  8:19 ` [PATCH V2 04/30] cpufreq: imx: " Viresh Kumar
2022-07-01  8:19   ` Viresh Kumar
2022-07-01  8:20 ` Viresh Kumar [this message]
2022-07-01  8:20 ` [PATCH V2 06/30] cpufreq: sti: " Viresh Kumar
2022-07-01  8:20   ` Viresh Kumar
2022-07-01  8:20 ` [PATCH V2 07/30] cpufreq: sun50i: " Viresh Kumar
2022-07-01  8:20   ` Viresh Kumar
2022-07-01  8:20 ` [PATCH V2 08/30] cpufreq: tegra20: " Viresh Kumar
2022-07-01  8:20 ` [PATCH V2 09/30] cpufreq: ti: " Viresh Kumar
2022-07-01  8:20 ` [PATCH V2 10/30] devfreq: exynos: " Viresh Kumar
2022-07-01  8:20   ` Viresh Kumar
2022-07-01  8:20 ` [PATCH V2 11/30] devfreq: sun8i: " Viresh Kumar
2022-07-01  8:20   ` Viresh Kumar
2022-07-01  8:20 ` [PATCH V2 12/30] devfreq: tegra30: " Viresh Kumar
2022-07-01  8:20 ` [PATCH V2 13/30] drm/lima: " Viresh Kumar
2022-07-01  8:20   ` Viresh Kumar
2022-07-01  8:20 ` [PATCH V2 14/30] drm/msm: " Viresh Kumar
2022-07-01  8:20   ` Viresh Kumar
2022-07-01  8:20 ` [PATCH V2 15/30] drm/panfrost: " Viresh Kumar
2022-07-01  8:20   ` Viresh Kumar
2022-07-01  8:20 ` [PATCH V2 16/30] drm/tegra: " Viresh Kumar
2022-07-01  8:20   ` Viresh Kumar
2022-07-01  8:20 ` [PATCH V2 17/30] media: venus: " Viresh Kumar
2022-07-01  8:20 ` [PATCH V2 18/30] memory: tegra: " Viresh Kumar
2022-07-01  8:20 ` [PATCH V2 19/30] mmc: sdhci-msm: " Viresh Kumar
2022-07-01  8:20 ` [PATCH V2 20/30] OPP: ti: " Viresh Kumar
2022-07-01  8:20 ` [PATCH V2 21/30] soc/tegra: Add comment over devm_pm_opp_set_clkname() Viresh Kumar
2022-07-01  8:20 ` [PATCH V2 22/30] soc/tegra: Migrate to dev_pm_opp_set_config() Viresh Kumar
2022-07-01  8:20 ` [PATCH V2 23/30] spi: qcom: " Viresh Kumar
2022-07-01  8:20 ` [PATCH V2 24/30] serial: " Viresh Kumar
2022-07-01  8:44   ` Greg Kroah-Hartman
2022-07-01  9:24     ` Viresh Kumar
2022-07-01  9:39       ` Greg Kroah-Hartman
2022-07-01 10:01         ` Viresh Kumar
2022-07-01 10:18           ` Greg Kroah-Hartman
2022-07-01 10:29             ` Viresh Kumar
2022-07-01 10:41               ` Greg Kroah-Hartman
2022-07-01 10:45                 ` Viresh Kumar
2022-07-01  8:20 ` [PATCH V2 25/30] OPP: Remove dev_pm_opp_set_regulators() and friends Viresh Kumar
2022-07-01  8:20 ` [PATCH V2 26/30] OPP: Remove dev_pm_opp_set_supported_hw() " Viresh Kumar
2022-07-01  8:20 ` [PATCH V2 27/30] OPP: Remove dev_pm_opp_set_clkname() " Viresh Kumar
2022-07-01  8:20 ` [PATCH V2 28/30] OPP: Remove dev_pm_opp_register_set_opp_helper() " Viresh Kumar
2022-07-01  8:20 ` [PATCH V2 29/30] OPP: Remove dev_pm_opp_attach_genpd() " Viresh Kumar
2022-07-01  8:20 ` [PATCH V2 30/30] OPP: Remove dev_pm_opp_set_prop_name() " 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=cb712d0b383af3f15d7583f30a82284b06731367.1656660185.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=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=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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.