PM / devfreq: Add new passive governor
authorChanwoo Choi <cw00.choi@samsung.com>
Tue, 22 Mar 2016 04:44:03 +0000 (13:44 +0900)
committerMyungJoo Ham <myungjoo.ham@samsung.com>
Tue, 3 May 2016 02:20:07 +0000 (11:20 +0900)
commit996133119f57334c38b020dbfaaac5b5eb127e29
treee197b5d3bc8b7816db57c3bff4b509c6eb111a1f
parent0fe3a66410a3ba96679be903f1e287d7a0a264a9
PM / devfreq: Add new passive governor

This patch adds the new passive governor for DEVFREQ framework. The following
governors are already present and used for DVFS (Dynamic Voltage and Frequency
Scaling) drivers. The following governors are independently used for one device
driver which don't give the influence to other device drviers and also don't
receive the effect from other device drivers.
- ondemand / performance / powersave / userspace

The passive governor depends on operation of parent driver with specific
governos extremely and is not able to decide the new frequency by oneself.
According to the decided new frequency of parent driver with governor,
the passive governor uses it to decide the appropriate frequency for own
device driver. The passive governor must need the following information
from device tree:
- the source clock and OPP tables
- the instance of parent device

For exameple,
there are one more devfreq device drivers which need to change their source
clock according to their utilization on runtime. But, they share the same
power line (e.g., regulator). So, specific device driver is operated as parent
with ondemand governor and then the rest device driver with passive governor
is influenced by parent device.

Suggested-by: Myungjoo Ham <myungjoo.ham@samsung.com>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
[tjakobi: Reported RCU locking issue and cw00.choi fix it]
Reported-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
[linux.amoon: Reported possible recursive locking and cw00.choi fix it]
Reported-by: Anand Moon <linux.amoon@gmail.com>
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Acked-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
drivers/devfreq/Kconfig
drivers/devfreq/Makefile
drivers/devfreq/governor_passive.c [new file with mode: 0644]
include/linux/devfreq.h