-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
cpuidle: psci: Add a helper to attach a CPU to its PM domain
Introduce a PSCI DT helper function, psci_dt_attach_cpu(), which takes a CPU number as an in-parameter and tries to attach the CPU's struct device to its corresponding PM domain. Let's makes use of dev_pm_domain_attach_by_name(), as it allows us to specify "psci" as the "name" of the PM domain to attach to. Additionally, let's also prepare the attached device to be power managed via runtime PM. Note that, the implementation of the new helper function is in a new separate c-file, which may seems a bit too much at this point. However, subsequent changes that implements the remaining part of the PM domain support for cpuidle-psci, helps to justify this split. Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> Reviewed-by: Sudeep Holla <sudeep.holla@arm.com> Acked-by: Rafael J. Wysocki <rafael@kernel.org>
- Loading branch information
Ulf Hansson
committed
Jan 2, 2020
1 parent
f08cfbf
commit a5e0454
Showing
3 changed files
with
46 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
// SPDX-License-Identifier: GPL-2.0 | ||
/* | ||
* PM domains for CPUs via genpd - managed by cpuidle-psci. | ||
* | ||
* Copyright (C) 2019 Linaro Ltd. | ||
* Author: Ulf Hansson <ulf.hansson@linaro.org> | ||
* | ||
*/ | ||
|
||
#include <linux/cpu.h> | ||
#include <linux/device.h> | ||
#include <linux/kernel.h> | ||
#include <linux/pm_domain.h> | ||
#include <linux/pm_runtime.h> | ||
|
||
#include "cpuidle-psci.h" | ||
|
||
struct device __init *psci_dt_attach_cpu(int cpu) | ||
{ | ||
struct device *dev; | ||
|
||
dev = dev_pm_domain_attach_by_name(get_cpu_device(cpu), "psci"); | ||
if (IS_ERR_OR_NULL(dev)) | ||
return dev; | ||
|
||
pm_runtime_irq_safe(dev); | ||
if (cpu_online(cpu)) | ||
pm_runtime_get_sync(dev); | ||
|
||
return dev; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
|
||
#ifndef __CPUIDLE_PSCI_H | ||
#define __CPUIDLE_PSCI_H | ||
|
||
#ifdef CONFIG_PM_GENERIC_DOMAINS_OF | ||
struct device __init *psci_dt_attach_cpu(int cpu); | ||
#else | ||
static inline struct device __init *psci_dt_attach_cpu(int cpu) { return NULL; } | ||
#endif | ||
|
||
#endif /* __CPUIDLE_PSCI_H */ |