mirror of https://gitee.com/openkylin/linux.git
34 lines
864 B
C
34 lines
864 B
C
|
/*
|
||
|
* drivers/base/power/domain_governor.c - Governors for device PM domains.
|
||
|
*
|
||
|
* Copyright (C) 2011 Rafael J. Wysocki <rjw@sisk.pl>, Renesas Electronics Corp.
|
||
|
*
|
||
|
* This file is released under the GPLv2.
|
||
|
*/
|
||
|
|
||
|
#include <linux/init.h>
|
||
|
#include <linux/kernel.h>
|
||
|
#include <linux/pm_domain.h>
|
||
|
#include <linux/pm_qos.h>
|
||
|
|
||
|
/**
|
||
|
* default_stop_ok - Default PM domain governor routine for stopping devices.
|
||
|
* @dev: Device to check.
|
||
|
*/
|
||
|
bool default_stop_ok(struct device *dev)
|
||
|
{
|
||
|
struct gpd_timing_data *td = &dev_gpd_data(dev)->td;
|
||
|
|
||
|
dev_dbg(dev, "%s()\n", __func__);
|
||
|
|
||
|
if (dev->power.max_time_suspended_ns < 0 || td->break_even_ns == 0)
|
||
|
return true;
|
||
|
|
||
|
return td->stop_latency_ns + td->start_latency_ns < td->break_even_ns
|
||
|
&& td->break_even_ns < dev->power.max_time_suspended_ns;
|
||
|
}
|
||
|
|
||
|
struct dev_power_governor simple_qos_governor = {
|
||
|
.stop_ok = default_stop_ok,
|
||
|
};
|