mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Ahmad Fatoum <a.fatoum@pengutronix.de>
To: barebox@lists.infradead.org
Cc: Ahmad Fatoum <a.fatoum@pengutronix.de>
Subject: [PATCH 08/19] pmdomain: add support for enabling power domains later on
Date: Fri, 19 Jan 2024 17:25:59 +0100	[thread overview]
Message-ID: <20240119162610.1014870-9-a.fatoum@pengutronix.de> (raw)
In-Reply-To: <20240119162610.1014870-1-a.fatoum@pengutronix.de>

When a single power domain is specified platform driver probe takes care
to enable the power domain. When there are multiple power domains
however, each Linux driver must itself enable power domains in the
correct sequence.

In Linux, this is handled by runtime PM. We don't have that in barebox,
so we add the enable function with a _genpd suffix to alert users to
this fact.

Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
---
 drivers/base/power.c | 11 +++++++++++
 include/pm_domain.h  |  8 +++++++-
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/drivers/base/power.c b/drivers/base/power.c
index 98164431aaeb..c4318fa1dfd1 100644
--- a/drivers/base/power.c
+++ b/drivers/base/power.c
@@ -289,6 +289,17 @@ static int genpd_power_on(struct generic_pm_domain *genpd)
 	return 0;
 }
 
+int pm_runtime_resume_and_get_genpd(struct device *dev)
+{
+	struct generic_pm_domain *genpd;
+
+	genpd = dev_to_genpd(dev);
+	if (IS_ERR(genpd))
+		return PTR_ERR(genpd);
+
+	return genpd_power_on(genpd);
+}
+
 static void genpd_add_device(struct generic_pm_domain *genpd, struct device *dev)
 {
 	dev->pm_domain = genpd;
diff --git a/include/pm_domain.h b/include/pm_domain.h
index b02af0d46de0..f242a05b4934 100644
--- a/include/pm_domain.h
+++ b/include/pm_domain.h
@@ -30,12 +30,13 @@ typedef struct generic_pm_domain *(*genpd_xlate_t)(struct of_phandle_args *args,
 void genpd_activate(void);
 
 int genpd_dev_pm_attach(struct device *dev);
-
 struct device *genpd_dev_pm_attach_by_id(struct device *dev,
 					 unsigned int index);
 struct device *genpd_dev_pm_attach_by_name(struct device *dev,
 					   const char *name);
 
+int pm_runtime_resume_and_get_genpd(struct device *dev);
+
 int pm_genpd_init(struct generic_pm_domain *genpd, void *gov, bool is_off);
 
 int of_genpd_add_provider_simple(struct device_node *np,
@@ -81,6 +82,11 @@ static inline struct device *genpd_dev_pm_attach_by_name(struct device *dev,
 	return NULL;
 }
 
+static inline int pm_runtime_resume_and_get_genpd(struct device *dev)
+{
+	return 0;
+}
+
 static inline int
 of_genpd_add_provider_simple(struct device_node *np,
 			     struct generic_pm_domain *genpd)
-- 
2.39.2




  parent reply	other threads:[~2024-01-19 16:27 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-19 16:25 [PATCH 00/19] pmdomain: imx: add i.MX8MP HSIO blk-ctrl driver Ahmad Fatoum
2024-01-19 16:25 ` [PATCH 01/19] drivers: soc: split off powerdomains into new pmdomain directory Ahmad Fatoum
2024-01-19 16:25 ` [PATCH 02/19] pmdomain: use single implementation for dev_pm_domain_attach Ahmad Fatoum
2024-01-19 16:25 ` [PATCH 03/19] pmdomain: power: drop unused parameters for internal functions Ahmad Fatoum
2024-01-19 16:25 ` [PATCH 04/19] pmdomain: associate devices with their power domain Ahmad Fatoum
2024-01-19 16:25 ` [PATCH 05/19] pmdomain: push have_genpd_providers check into __genpd_dev_pm_attach Ahmad Fatoum
2024-01-19 16:25 ` [PATCH 06/19] pmdomain: drop superfluous parameter to __genpd_dev_pm_attach Ahmad Fatoum
2024-01-19 16:25 ` [PATCH 07/19] pmdomain: implement dev_pm_domain_attach_by_id/name Ahmad Fatoum
2024-01-19 16:25 ` Ahmad Fatoum [this message]
2024-01-19 16:26 ` [PATCH 09/19] pmdomain: imx: gpcv2: enable COMPILE_TEST build Ahmad Fatoum
2024-01-19 16:26 ` [PATCH 10/19] pmdomain: add stub definition for dev_pm_domain_detach Ahmad Fatoum
2024-01-19 16:26 ` [PATCH 11/19] pmdomain: add stub definition for pm_runtime_put_genpd Ahmad Fatoum
2024-01-19 16:26 ` [PATCH 12/19] pmdomain: implement pm_genpd_remove/of_genpd_del_provider for cleanup Ahmad Fatoum
2024-01-19 16:26 ` [PATCH 13/19] driver: have dev_request_mem_region_err_null warn if resource starts at 0 Ahmad Fatoum
2024-01-19 16:26 ` [PATCH 14/19] include: linux/device.h: implement dev_platform_ioremap_resource Ahmad Fatoum
2024-01-19 16:26 ` [PATCH 15/19] regmap: include missing header from linux/regmap.h Ahmad Fatoum
2024-01-19 16:26 ` [PATCH 16/19] clk: define aliases for clk_bulk_prepare_enable/disable_unprepare Ahmad Fatoum
2024-01-19 16:26 ` [PATCH 17/19] driver: make driver.h header self-contained Ahmad Fatoum
2024-01-19 16:26 ` [PATCH 18/19] pmdomain: imx: add i.MX8MP HSIO blk-ctrl driver Ahmad Fatoum
2024-01-19 16:26 ` [PATCH 19/19] ARM: dts: i.MX8MP: drop barebox,allow-dummy for HSIO blk-ctrl Ahmad Fatoum
2024-01-22 10:12 ` [PATCH 00/19] pmdomain: imx: add i.MX8MP HSIO blk-ctrl driver Sascha Hauer

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=20240119162610.1014870-9-a.fatoum@pengutronix.de \
    --to=a.fatoum@pengutronix.de \
    --cc=barebox@lists.infradead.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