Merge branches 'pm-misc' and 'pm-tools'
Merge miscellaneous power management updates and cpupower utility updates for 6.17-rc1: - Update contact information in the PM ABI docs and maintainer information in the power domains DT binding (Rafael Wysocki) - Update PM header inclusions to follow the IWYU (Include What You Use) principle (Andy Shevchenko) - Add flags to specify power on attach/detach for PM domains, make the driver core detach PM domains in device_unbind_cleanup(), and drop the dev_pm_domain_detach() call from the platform bus type (Claudiu Beznea) - Improve Python binding's Makefile for cpupower (John B. Wyatt IV) - Fix printing of CORE, CPU fields in cpupower-monitor (Gautham Shenoy) * pm-misc: PM: docs: Use my kernel.org address in ABI docs and DT bindings driver core: platform: Drop dev_pm_domain_detach() call PM: domains: Detach on device_unbind_cleanup() PM: domains: Add flags to specify power on attach/detach PM: Don't use "proxy" headers * pm-tools: cpupower: Improve Python binding's Makefile pm: cpupower: Fix printing of CORE, CPU fields in cpupower-monitor pm: cpupower: Fix the snapshot-order of tsc,mperf, clock in mperf_stop()pull/1309/head
commit
40c2819955
|
|
@ -1,6 +1,6 @@
|
|||
What: /sys/devices/.../power/
|
||||
Date: January 2009
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../power directory contains attributes
|
||||
allowing the user space to check and modify some power
|
||||
|
|
@ -8,7 +8,7 @@ Description:
|
|||
|
||||
What: /sys/devices/.../power/wakeup
|
||||
Date: January 2009
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../power/wakeup attribute allows the user
|
||||
space to check if the device is enabled to wake up the system
|
||||
|
|
@ -34,7 +34,7 @@ Description:
|
|||
|
||||
What: /sys/devices/.../power/control
|
||||
Date: January 2009
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../power/control attribute allows the user
|
||||
space to control the run-time power management of the device.
|
||||
|
|
@ -53,7 +53,7 @@ Description:
|
|||
|
||||
What: /sys/devices/.../power/async
|
||||
Date: January 2009
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../async attribute allows the user space to
|
||||
enable or disable the device's suspend and resume callbacks to
|
||||
|
|
@ -79,7 +79,7 @@ Description:
|
|||
|
||||
What: /sys/devices/.../power/wakeup_count
|
||||
Date: September 2010
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../wakeup_count attribute contains the number
|
||||
of signaled wakeup events associated with the device. This
|
||||
|
|
@ -90,7 +90,7 @@ Description:
|
|||
|
||||
What: /sys/devices/.../power/wakeup_active_count
|
||||
Date: September 2010
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../wakeup_active_count attribute contains the
|
||||
number of times the processing of wakeup events associated with
|
||||
|
|
@ -102,7 +102,7 @@ Description:
|
|||
|
||||
What: /sys/devices/.../power/wakeup_abort_count
|
||||
Date: February 2012
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../wakeup_abort_count attribute contains the
|
||||
number of times the processing of a wakeup event associated with
|
||||
|
|
@ -114,7 +114,7 @@ Description:
|
|||
|
||||
What: /sys/devices/.../power/wakeup_expire_count
|
||||
Date: February 2012
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../wakeup_expire_count attribute contains the
|
||||
number of times a wakeup event associated with the device has
|
||||
|
|
@ -126,7 +126,7 @@ Description:
|
|||
|
||||
What: /sys/devices/.../power/wakeup_active
|
||||
Date: September 2010
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../wakeup_active attribute contains either 1,
|
||||
or 0, depending on whether or not a wakeup event associated with
|
||||
|
|
@ -138,7 +138,7 @@ Description:
|
|||
|
||||
What: /sys/devices/.../power/wakeup_total_time_ms
|
||||
Date: September 2010
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../wakeup_total_time_ms attribute contains
|
||||
the total time of processing wakeup events associated with the
|
||||
|
|
@ -149,7 +149,7 @@ Description:
|
|||
|
||||
What: /sys/devices/.../power/wakeup_max_time_ms
|
||||
Date: September 2010
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../wakeup_max_time_ms attribute contains
|
||||
the maximum time of processing a single wakeup event associated
|
||||
|
|
@ -161,7 +161,7 @@ Description:
|
|||
|
||||
What: /sys/devices/.../power/wakeup_last_time_ms
|
||||
Date: September 2010
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../wakeup_last_time_ms attribute contains
|
||||
the value of the monotonic clock corresponding to the time of
|
||||
|
|
@ -173,7 +173,7 @@ Description:
|
|||
|
||||
What: /sys/devices/.../power/wakeup_prevent_sleep_time_ms
|
||||
Date: February 2012
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../wakeup_prevent_sleep_time_ms attribute
|
||||
contains the total time the device has been preventing
|
||||
|
|
@ -203,7 +203,7 @@ Description:
|
|||
|
||||
What: /sys/devices/.../power/pm_qos_resume_latency_us
|
||||
Date: March 2012
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../power/pm_qos_resume_latency_us attribute
|
||||
contains the PM QoS resume latency limit for the given device,
|
||||
|
|
@ -223,7 +223,7 @@ Description:
|
|||
|
||||
What: /sys/devices/.../power/pm_qos_latency_tolerance_us
|
||||
Date: January 2014
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../power/pm_qos_latency_tolerance_us attribute
|
||||
contains the PM QoS active state latency tolerance limit for the
|
||||
|
|
@ -248,7 +248,7 @@ Description:
|
|||
|
||||
What: /sys/devices/.../power/pm_qos_no_power_off
|
||||
Date: September 2012
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../power/pm_qos_no_power_off attribute
|
||||
is used for manipulating the PM QoS "no power off" flag. If
|
||||
|
|
@ -263,7 +263,7 @@ Description:
|
|||
|
||||
What: /sys/devices/.../power/runtime_status
|
||||
Date: April 2010
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/devices/.../power/runtime_status attribute contains
|
||||
the current runtime PM status of the device, which may be
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
What: /sys/power/
|
||||
Date: August 2006
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power directory will contain files that will
|
||||
provide a unified interface to the power management
|
||||
|
|
@ -8,7 +8,7 @@ Description:
|
|||
|
||||
What: /sys/power/state
|
||||
Date: November 2016
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power/state file controls system sleep states.
|
||||
Reading from this file returns the available sleep state
|
||||
|
|
@ -23,7 +23,7 @@ Description:
|
|||
|
||||
What: /sys/power/mem_sleep
|
||||
Date: November 2016
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power/mem_sleep file controls the operating mode of
|
||||
system suspend. Reading from it returns the available modes
|
||||
|
|
@ -41,7 +41,7 @@ Description:
|
|||
|
||||
What: /sys/power/disk
|
||||
Date: September 2006
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power/disk file controls the operating mode of the
|
||||
suspend-to-disk mechanism. Reading from this file returns
|
||||
|
|
@ -90,7 +90,7 @@ Description:
|
|||
|
||||
What: /sys/power/image_size
|
||||
Date: August 2006
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power/image_size file controls the size of the image
|
||||
created by the suspend-to-disk mechanism. It can be written a
|
||||
|
|
@ -107,7 +107,7 @@ Description:
|
|||
|
||||
What: /sys/power/pm_trace
|
||||
Date: August 2006
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power/pm_trace file controls the code which saves the
|
||||
last PM event point in the RTC across reboots, so that you can
|
||||
|
|
@ -156,7 +156,7 @@ Description:
|
|||
|
||||
What: /sys/power/pm_async
|
||||
Date: January 2009
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power/pm_async file controls the switch allowing the
|
||||
user space to enable or disable asynchronous suspend and resume
|
||||
|
|
@ -169,7 +169,7 @@ Description:
|
|||
|
||||
What: /sys/power/wakeup_count
|
||||
Date: July 2010
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power/wakeup_count file allows user space to put the
|
||||
system into a sleep state while taking into account the
|
||||
|
|
@ -184,7 +184,7 @@ Description:
|
|||
|
||||
What: /sys/power/reserved_size
|
||||
Date: May 2011
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power/reserved_size file allows user space to control
|
||||
the amount of memory reserved for allocations made by device
|
||||
|
|
@ -198,7 +198,7 @@ Description:
|
|||
|
||||
What: /sys/power/autosleep
|
||||
Date: April 2012
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power/autosleep file can be written one of the strings
|
||||
returned by reads from /sys/power/state. If that happens, a
|
||||
|
|
@ -215,7 +215,7 @@ Description:
|
|||
|
||||
What: /sys/power/wake_lock
|
||||
Date: February 2012
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power/wake_lock file allows user space to create
|
||||
wakeup source objects and activate them on demand (if one of
|
||||
|
|
@ -242,7 +242,7 @@ Description:
|
|||
|
||||
What: /sys/power/wake_unlock
|
||||
Date: February 2012
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power/wake_unlock file allows user space to deactivate
|
||||
wakeup sources created with the help of /sys/power/wake_lock.
|
||||
|
|
@ -283,7 +283,7 @@ Description:
|
|||
|
||||
What: /sys/power/pm_debug_messages
|
||||
Date: July 2017
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Contact: Rafael J. Wysocki <rafael@kernel.org>
|
||||
Description:
|
||||
The /sys/power/pm_debug_messages file controls the printing
|
||||
of debug messages from the system suspend/hiberbation
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
|||
title: Generic PM domains
|
||||
|
||||
maintainers:
|
||||
- Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
- Rafael J. Wysocki <rafael@kernel.org>
|
||||
- Kevin Hilman <khilman@kernel.org>
|
||||
- Ulf Hansson <ulf.hansson@linaro.org>
|
||||
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ static int amba_read_periphid(struct amba_device *dev)
|
|||
void __iomem *tmp;
|
||||
int i, ret;
|
||||
|
||||
ret = dev_pm_domain_attach(&dev->dev, true);
|
||||
ret = dev_pm_domain_attach(&dev->dev, PD_FLAG_ATTACH_POWER_ON);
|
||||
if (ret) {
|
||||
dev_dbg(&dev->dev, "can't get PM domain: %d\n", ret);
|
||||
goto err_out;
|
||||
|
|
@ -291,7 +291,7 @@ static int amba_probe(struct device *dev)
|
|||
if (ret < 0)
|
||||
break;
|
||||
|
||||
ret = dev_pm_domain_attach(dev, true);
|
||||
ret = dev_pm_domain_attach(dev, PD_FLAG_ATTACH_POWER_ON);
|
||||
if (ret)
|
||||
break;
|
||||
|
||||
|
|
|
|||
|
|
@ -217,7 +217,7 @@ static int auxiliary_bus_probe(struct device *dev)
|
|||
struct auxiliary_device *auxdev = to_auxiliary_dev(dev);
|
||||
int ret;
|
||||
|
||||
ret = dev_pm_domain_attach(dev, true);
|
||||
ret = dev_pm_domain_attach(dev, PD_FLAG_ATTACH_POWER_ON);
|
||||
if (ret) {
|
||||
dev_warn(dev, "Failed to attach to PM Domain : %d\n", ret);
|
||||
return ret;
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@
|
|||
#include <linux/kthread.h>
|
||||
#include <linux/wait.h>
|
||||
#include <linux/async.h>
|
||||
#include <linux/pm_domain.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/pinctrl/devinfo.h>
|
||||
#include <linux/slab.h>
|
||||
|
|
@ -552,6 +553,7 @@ static void device_unbind_cleanup(struct device *dev)
|
|||
dev->dma_range_map = NULL;
|
||||
device_set_driver(dev, NULL);
|
||||
dev_set_drvdata(dev, NULL);
|
||||
dev_pm_domain_detach(dev, dev->power.detach_power_off);
|
||||
if (dev->pm_domain && dev->pm_domain->dismiss)
|
||||
dev->pm_domain->dismiss(dev);
|
||||
pm_runtime_reinit(dev);
|
||||
|
|
|
|||
|
|
@ -1396,15 +1396,13 @@ static int platform_probe(struct device *_dev)
|
|||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = dev_pm_domain_attach(_dev, true);
|
||||
ret = dev_pm_domain_attach(_dev, PD_FLAG_ATTACH_POWER_ON |
|
||||
PD_FLAG_DETACH_POWER_OFF);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
if (drv->probe) {
|
||||
if (drv->probe)
|
||||
ret = drv->probe(dev);
|
||||
if (ret)
|
||||
dev_pm_domain_detach(_dev, true);
|
||||
}
|
||||
|
||||
out:
|
||||
if (drv->prevent_deferred_probe && ret == -EPROBE_DEFER) {
|
||||
|
|
@ -1422,7 +1420,6 @@ static void platform_remove(struct device *_dev)
|
|||
|
||||
if (drv->remove)
|
||||
drv->remove(dev);
|
||||
dev_pm_domain_detach(_dev, true);
|
||||
}
|
||||
|
||||
static void platform_shutdown(struct device *_dev)
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ EXPORT_SYMBOL_GPL(dev_pm_put_subsys_data);
|
|||
/**
|
||||
* dev_pm_domain_attach - Attach a device to its PM domain.
|
||||
* @dev: Device to attach.
|
||||
* @power_on: Used to indicate whether we should power on the device.
|
||||
* @flags: indicate whether we should power on/off the device on attach/detach
|
||||
*
|
||||
* The @dev may only be attached to a single PM domain. By iterating through
|
||||
* the available alternatives we try to find a valid PM domain for the device.
|
||||
|
|
@ -100,17 +100,20 @@ EXPORT_SYMBOL_GPL(dev_pm_put_subsys_data);
|
|||
* Returns 0 on successfully attached PM domain, or when it is found that the
|
||||
* device doesn't need a PM domain, else a negative error code.
|
||||
*/
|
||||
int dev_pm_domain_attach(struct device *dev, bool power_on)
|
||||
int dev_pm_domain_attach(struct device *dev, u32 flags)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (dev->pm_domain)
|
||||
return 0;
|
||||
|
||||
ret = acpi_dev_pm_attach(dev, power_on);
|
||||
ret = acpi_dev_pm_attach(dev, !!(flags & PD_FLAG_ATTACH_POWER_ON));
|
||||
if (!ret)
|
||||
ret = genpd_dev_pm_attach(dev);
|
||||
|
||||
if (dev->pm_domain)
|
||||
dev->power.detach_power_off = !!(flags & PD_FLAG_DETACH_POWER_OFF);
|
||||
|
||||
return ret < 0 ? ret : 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(dev_pm_domain_attach);
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ static int qcom_apcs_sdx55_clk_probe(struct platform_device *pdev)
|
|||
* driver, there seems to be no better place to do this. So do it here!
|
||||
*/
|
||||
cpu_dev = get_cpu_device(0);
|
||||
ret = dev_pm_domain_attach(cpu_dev, true);
|
||||
ret = dev_pm_domain_attach(cpu_dev, PD_FLAG_ATTACH_POWER_ON);
|
||||
if (ret) {
|
||||
dev_err_probe(dev, ret, "can't get PM domain: %d\n", ret);
|
||||
goto err;
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ static int dp_aux_ep_probe(struct device *dev)
|
|||
container_of(aux_ep, struct dp_aux_ep_device_with_data, aux_ep);
|
||||
int ret;
|
||||
|
||||
ret = dev_pm_domain_attach(dev, true);
|
||||
ret = dev_pm_domain_attach(dev, PD_FLAG_ATTACH_POWER_ON);
|
||||
if (ret)
|
||||
return dev_err_probe(dev, ret, "Failed to attach to PM Domain\n");
|
||||
|
||||
|
|
|
|||
|
|
@ -573,7 +573,7 @@ static int i2c_device_probe(struct device *dev)
|
|||
goto err_clear_wakeup_irq;
|
||||
|
||||
do_power_on = !i2c_acpi_waive_d0_probe(dev);
|
||||
status = dev_pm_domain_attach(&client->dev, do_power_on);
|
||||
status = dev_pm_domain_attach(&client->dev, do_power_on ? PD_FLAG_ATTACH_POWER_ON : 0);
|
||||
if (status)
|
||||
goto err_clear_wakeup_irq;
|
||||
|
||||
|
|
|
|||
|
|
@ -161,7 +161,7 @@ static int sdio_bus_probe(struct device *dev)
|
|||
if (!id)
|
||||
return -ENODEV;
|
||||
|
||||
ret = dev_pm_domain_attach(dev, false);
|
||||
ret = dev_pm_domain_attach(dev, 0);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
|
|||
|
|
@ -479,7 +479,7 @@ static int rpmsg_dev_probe(struct device *dev)
|
|||
struct rpmsg_endpoint *ept = NULL;
|
||||
int err;
|
||||
|
||||
err = dev_pm_domain_attach(dev, true);
|
||||
err = dev_pm_domain_attach(dev, PD_FLAG_ATTACH_POWER_ON);
|
||||
if (err)
|
||||
goto out;
|
||||
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ static int sdw_drv_probe(struct device *dev)
|
|||
/*
|
||||
* attach to power domain but don't turn on (last arg)
|
||||
*/
|
||||
ret = dev_pm_domain_attach(dev, false);
|
||||
ret = dev_pm_domain_attach(dev, 0);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
|
|||
|
|
@ -427,7 +427,7 @@ static int spi_probe(struct device *dev)
|
|||
if (spi->irq < 0)
|
||||
spi->irq = 0;
|
||||
|
||||
ret = dev_pm_domain_attach(dev, true);
|
||||
ret = dev_pm_domain_attach(dev, PD_FLAG_ATTACH_POWER_ON);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
|
|||
|
|
@ -399,7 +399,7 @@ static int serdev_drv_probe(struct device *dev)
|
|||
const struct serdev_device_driver *sdrv = to_serdev_device_driver(dev->driver);
|
||||
int ret;
|
||||
|
||||
ret = dev_pm_domain_attach(dev, true);
|
||||
ret = dev_pm_domain_attach(dev, PD_FLAG_ATTACH_POWER_ON);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
|
|||
|
|
@ -8,14 +8,15 @@
|
|||
#ifndef _LINUX_PM_H
|
||||
#define _LINUX_PM_H
|
||||
|
||||
#include <linux/export.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/workqueue.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/wait.h>
|
||||
#include <linux/timer.h>
|
||||
#include <linux/hrtimer.h>
|
||||
#include <linux/completion.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/hrtimer_types.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/util_macros.h>
|
||||
#include <linux/wait.h>
|
||||
#include <linux/workqueue_types.h>
|
||||
|
||||
/*
|
||||
* Callbacks for platform drivers to implement.
|
||||
|
|
@ -721,6 +722,7 @@ struct dev_pm_info {
|
|||
struct pm_subsys_data *subsys_data; /* Owned by the subsystem. */
|
||||
void (*set_latency_tolerance)(struct device *, s32);
|
||||
struct dev_pm_qos *qos;
|
||||
bool detach_power_off:1; /* Owned by the driver core */
|
||||
};
|
||||
|
||||
extern int dev_pm_get_subsys_data(struct device *dev);
|
||||
|
|
|
|||
|
|
@ -36,10 +36,16 @@
|
|||
* isn't specified, the index just follows the
|
||||
* index for the attached PM domain.
|
||||
*
|
||||
* PD_FLAG_ATTACH_POWER_ON: Power on the domain during attach.
|
||||
*
|
||||
* PD_FLAG_DETACH_POWER_OFF: Power off the domain during detach.
|
||||
*
|
||||
*/
|
||||
#define PD_FLAG_NO_DEV_LINK BIT(0)
|
||||
#define PD_FLAG_DEV_LINK_ON BIT(1)
|
||||
#define PD_FLAG_REQUIRED_OPP BIT(2)
|
||||
#define PD_FLAG_ATTACH_POWER_ON BIT(3)
|
||||
#define PD_FLAG_DETACH_POWER_OFF BIT(4)
|
||||
|
||||
struct dev_pm_domain_attach_data {
|
||||
const char * const *pd_names;
|
||||
|
|
@ -501,7 +507,7 @@ struct generic_pm_domain *of_genpd_remove_last(struct device_node *np)
|
|||
#endif /* CONFIG_PM_GENERIC_DOMAINS_OF */
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
int dev_pm_domain_attach(struct device *dev, bool power_on);
|
||||
int dev_pm_domain_attach(struct device *dev, u32 flags);
|
||||
struct device *dev_pm_domain_attach_by_id(struct device *dev,
|
||||
unsigned int index);
|
||||
struct device *dev_pm_domain_attach_by_name(struct device *dev,
|
||||
|
|
@ -518,7 +524,7 @@ int dev_pm_domain_start(struct device *dev);
|
|||
void dev_pm_domain_set(struct device *dev, struct dev_pm_domain *pd);
|
||||
int dev_pm_domain_set_performance_state(struct device *dev, unsigned int state);
|
||||
#else
|
||||
static inline int dev_pm_domain_attach(struct device *dev, bool power_on)
|
||||
static inline int dev_pm_domain_attach(struct device *dev, u32 flags)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,20 +4,22 @@
|
|||
# This Makefile expects you have already run `make install-lib` in the lib
|
||||
# directory for the bindings to be created.
|
||||
|
||||
CC := gcc
|
||||
CC ?= gcc
|
||||
# CFLAGS ?=
|
||||
LDFLAGS ?= -lcpupower
|
||||
HAVE_SWIG := $(shell if which swig >/dev/null 2>&1; then echo 1; else echo 0; fi)
|
||||
HAVE_PYCONFIG := $(shell if which python-config >/dev/null 2>&1; then echo 1; else echo 0; fi)
|
||||
|
||||
PY_INCLUDE = $(firstword $(shell python-config --includes))
|
||||
INSTALL_DIR = $(shell python3 -c "import site; print(site.getsitepackages()[0])")
|
||||
PY_INCLUDE ?= $(firstword $(shell python-config --includes))
|
||||
INSTALL_DIR ?= $(shell python3 -c "import site; print(site.getsitepackages()[0])")
|
||||
|
||||
all: _raw_pylibcpupower.so
|
||||
|
||||
_raw_pylibcpupower.so: raw_pylibcpupower_wrap.o
|
||||
$(CC) -shared -lcpupower raw_pylibcpupower_wrap.o -o _raw_pylibcpupower.so
|
||||
$(CC) -shared $(LDFLAGS) raw_pylibcpupower_wrap.o -o _raw_pylibcpupower.so
|
||||
|
||||
raw_pylibcpupower_wrap.o: raw_pylibcpupower_wrap.c
|
||||
$(CC) -fPIC -c raw_pylibcpupower_wrap.c $(PY_INCLUDE)
|
||||
$(CC) $(CFLAGS) $(PY_INCLUDE) -fPIC -c raw_pylibcpupower_wrap.c
|
||||
|
||||
raw_pylibcpupower_wrap.c: raw_pylibcpupower.swg
|
||||
ifeq ($(HAVE_SWIG),0)
|
||||
|
|
|
|||
|
|
@ -121,10 +121,8 @@ void print_header(int topology_depth)
|
|||
switch (topology_depth) {
|
||||
case TOPOLOGY_DEPTH_PKG:
|
||||
printf(" PKG|");
|
||||
break;
|
||||
case TOPOLOGY_DEPTH_CORE:
|
||||
printf("CORE|");
|
||||
break;
|
||||
case TOPOLOGY_DEPTH_CPU:
|
||||
printf(" CPU|");
|
||||
break;
|
||||
|
|
@ -167,10 +165,8 @@ void print_results(int topology_depth, int cpu)
|
|||
switch (topology_depth) {
|
||||
case TOPOLOGY_DEPTH_PKG:
|
||||
printf("%4d|", cpu_top.core_info[cpu].pkg);
|
||||
break;
|
||||
case TOPOLOGY_DEPTH_CORE:
|
||||
printf("%4d|", cpu_top.core_info[cpu].core);
|
||||
break;
|
||||
case TOPOLOGY_DEPTH_CPU:
|
||||
printf("%4d|", cpu_top.core_info[cpu].cpu);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -240,9 +240,9 @@ static int mperf_stop(void)
|
|||
int cpu;
|
||||
|
||||
for (cpu = 0; cpu < cpu_count; cpu++) {
|
||||
mperf_measure_stats(cpu);
|
||||
mperf_get_tsc(&tsc_at_measure_end[cpu]);
|
||||
clock_gettime(CLOCK_REALTIME, &time_end[cpu]);
|
||||
mperf_get_tsc(&tsc_at_measure_end[cpu]);
|
||||
mperf_measure_stats(cpu);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue