mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-04 01:24:12 +08:00
a5e0454cf3
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>
32 lines
628 B
C
32 lines
628 B
C
// 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;
|
|
}
|