Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1250783 > unrolled thread
| Started by | ahaslam@baylibre.com |
|---|---|
| First post | 2015-10-19 17:00 +0200 |
| Last post | 2015-10-19 17:00 +0200 |
| Articles | 2 — 1 participant |
Back to article view | Back to linux.kernel
[PATCH v9 0/6] Multiple intermediate states for genpd ahaslam@baylibre.com - 2015-10-19 17:00 +0200
[PATCH v9 4/6] ARM: imx6: pm: declare pm domain latency on power_state struct. ahaslam@baylibre.com - 2015-10-19 17:00 +0200
| From | ahaslam@baylibre.com |
|---|---|
| Date | 2015-10-19 17:00 +0200 |
| Subject | [PATCH v9 0/6] Multiple intermediate states for genpd |
| Message-ID | <qlk4N-7Aj-3@gated-at.bofh.it> |
From: Axel Haslam <ahaslam+renesas@baylibre.com> Some architectures may have intermediate power levels between on and off. This patch set adds the ability to declare multiple states for a given generic power domain, the idea is that the deepest state will be entered which does not violate any of the device or sub-domain latency constraints. Changes since v8 * rebased to linux-pm next Changes since v7: * rebase to 4.3-rc5 * add genpd_init_simple (Lina's suggestion) for platforms that don't have multiple states and don't declare initial latencies. A default OFF state with initial 0 latencies will be used in this case. * Append Mark's patch to add "states" and "timings" to the genpd debugfs Changes since v6: * change int to unsigned int were appropriate. * spelling mistakes, and fix commit message for removal of latencies. Changes since v5: * rebase to 4.1-rc1 * Pass state array as an init argument on pm_genpd_init * declare a default OFF state with no latencies, that will be used if a null state argument is given. * set the deepest state when using sync_poweroff. * create and use name allocation function in the debug area instead of inline. Changes since v4: * move to power_on/off callbacks out of the state array Platforms can check the state_idx to know what state the power on/off corresponds to. * convert states to pointer, Dynamically allocate the states array to save memory on platforms with several power domains. * rename target_state to state_idx and remove init_state. Changes since v3: * remove old power on/off function at the end of the series so that compilation will not break in between. Changes since v2: * remove state argument and macros from save/restore callbacks. * added init_state for platforms to pass the initial state when the genpd is initially off. * convert current genpd users for the structure changes. Changes since v1: * split the changes so that the actual logic that selects the target state is a separate patch. * move the cached logic out of the state function and add it back to default_power_down_ok. * rename default_power_down_ok_state to power_down_ok_for_state Axel Haslam (5): PM / Domains: prepare for multiple states PM / Domains: core changes for multiple states PM / Domains: make governor select deepest state ARM: imx6: pm: declare pm domain latency on power_state struct. PM / Domains: remove old power on/off latencies. Marc Titinger (1): PM / Domains: add debugfs 'states' and 'timings' seq files arch/arm/mach-exynos/pm_domains.c | 2 +- arch/arm/mach-imx/gpc.c | 18 ++- arch/arm/mach-s3c64xx/pm.c | 4 +- arch/arm/mach-shmobile/pm-r8a7779.c | 2 +- arch/arm/mach-shmobile/pm-rmobile.c | 2 +- arch/arm/mach-ux500/pm_domains.c | 2 +- arch/arm/mach-zx/zx296702-pm-domain.c | 2 +- drivers/base/power/domain.c | 258 ++++++++++++++++++++++++++++++++-- drivers/base/power/domain_governor.c | 70 +++++---- drivers/clk/shmobile/clk-mstp.c | 2 +- drivers/soc/dove/pmu.c | 2 +- drivers/soc/mediatek/mtk-scpsys.c | 2 +- include/linux/pm_domain.h | 33 ++++- 13 files changed, 345 insertions(+), 54 deletions(-) -- 2.4.5 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | ahaslam@baylibre.com |
|---|---|
| Date | 2015-10-19 17:00 +0200 |
| Subject | [PATCH v9 4/6] ARM: imx6: pm: declare pm domain latency on power_state struct. |
| Message-ID | <qlk4P-7Aj-45@gated-at.bofh.it> |
| In reply to | #1250783 |
From: Axel Haslam <ahaslam+renesas@baylibre.com>
The generic_pm_domain structure uses an array of latencies to be able to
declare multiple intermediate states.
Declare a single "OFF" state with the default latencies So that the
power_off_latency_ns and power_on_latency_ns fields of generic_pm_domain
structure can be eventualy removed.
Signed-off-by: Axel Haslam <ahaslam+renesas@baylibre.com>
---
arch/arm/mach-imx/gpc.c | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/arch/arm/mach-imx/gpc.c b/arch/arm/mach-imx/gpc.c
index 76658f8..367a00c 100644
--- a/arch/arm/mach-imx/gpc.c
+++ b/arch/arm/mach-imx/gpc.c
@@ -45,9 +45,11 @@
struct pu_domain {
struct generic_pm_domain base;
+ struct genpd_power_state *states;
struct regulator *reg;
struct clk *clk[GPC_CLK_MAX];
int num_clks;
+ unsigned int num_states;
};
static void __iomem *gpc_base;
@@ -369,14 +371,22 @@ static struct generic_pm_domain imx6q_arm_domain = {
.name = "ARM",
};
+static struct genpd_power_state imx6q_arm_domain_states[] = {
+ {
+ .name = "OFF",
+ .power_off_latency_ns = 25000,
+ .power_on_latency_ns = 2000000,
+ },
+};
+
static struct pu_domain imx6q_pu_domain = {
.base = {
.name = "PU",
.power_off = imx6q_pm_pu_power_off,
.power_on = imx6q_pm_pu_power_on,
- .power_off_latency_ns = 25000,
- .power_on_latency_ns = 2000000,
},
+ .states = imx6q_arm_domain_states,
+ .num_states = ARRAY_SIZE(imx6q_arm_domain_states),
};
static struct generic_pm_domain imx6sl_display_domain = {
@@ -419,7 +429,9 @@ static int imx_gpc_genpd_init(struct device *dev, struct regulator *pu_reg)
if (!IS_ENABLED(CONFIG_PM_GENERIC_DOMAINS))
return 0;
- pm_genpd_init_simple(&imx6q_pu_domain.base, NULL, false);
+ pm_genpd_init(&imx6q_pu_domain.base, NULL, imx6q_pu_domain.states,
+ imx6q_pu_domain.num_states, false);
+
return of_genpd_add_provider_onecell(dev->of_node,
&imx_gpc_onecell_data);
--
2.4.5
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web