Star64_linux/drivers
MyungJoo Ham a3c98b8b2e PM: Introduce devfreq: generic DVFS framework with device-specific OPPs
With OPPs, a device may have multiple operable frequency and voltage
sets. However, there can be multiple possible operable sets and a system
will need to choose one from them. In order to reduce the power
consumption (by reducing frequency and voltage) without affecting the
performance too much, a Dynamic Voltage and Frequency Scaling (DVFS)
scheme may be used.

This patch introduces the DVFS capability to non-CPU devices with OPPs.
DVFS is a techique whereby the frequency and supplied voltage of a
device is adjusted on-the-fly. DVFS usually sets the frequency as low
as possible with given conditions (such as QoS assurance) and adjusts
voltage according to the chosen frequency in order to reduce power
consumption and heat dissipation.

The generic DVFS for devices, devfreq, may appear quite similar with
/drivers/cpufreq.  However, cpufreq does not allow to have multiple
devices registered and is not suitable to have multiple heterogenous
devices with different (but simple) governors.

Normally, DVFS mechanism controls frequency based on the demand for
the device, and then, chooses voltage based on the chosen frequency.
devfreq also controls the frequency based on the governor's frequency
recommendation and let OPP pick up the pair of frequency and voltage
based on the recommended frequency. Then, the chosen OPP is passed to
device driver's "target" callback.

When PM QoS is going to be used with the devfreq device, the device
driver should enable OPPs that are appropriate with the current PM QoS
requests. In order to do so, the device driver may call opp_enable and
opp_disable at the notifier callback of PM QoS so that PM QoS's
update_target() call enables the appropriate OPPs. Note that at least
one of OPPs should be enabled at any time; be careful when there is a
transition.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Reviewed-by: Mike Turquette <mturquette@ti.com>
Acked-by: Kevin Hilman <khilman@ti.com>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
2011-10-02 00:19:15 +02:00
..
accessibility
acpi
amba
ata
atm
auxdisplay
base PM / OPP: Add OPP availability change notifier. 2011-09-30 22:35:12 +02:00
bcma
block floppy: use del_timer_sync() in init cleanup 2011-09-21 10:22:11 +02:00
bluetooth
cdrom
char TPM: Zero buffer after copying to userspace 2011-09-23 09:46:41 +10:00
clk
clocksource
connector
cpufreq
cpuidle
crypto
dca
devfreq PM: Introduce devfreq: generic DVFS framework with device-specific OPPs 2011-10-02 00:19:15 +02:00
dio
dma
edac
eisa
firewire
firmware
gpio
gpu drm/radeon/kms: fix DDIA enable on some rs690 systems 2011-09-23 14:02:18 +01:00
hid
hwmon hwmon: (coretemp) remove struct platform_data * parameter from create_core_data() 2011-09-23 10:39:11 -07:00
hwspinlock
i2c
ide
idle
ieee802154
infiniband
input
iommu
isdn
leds
lguest
macintosh
mca
md
media
memstick
message
mfd
misc
mmc Merge branch 'for-linus' of git://git.kernel.dk/linux-block 2011-09-21 13:20:21 -07:00
mtd
net ixgbe: fix possible null buffer error 2011-09-21 02:14:13 -04:00
nfc
nubus
of
oprofile
parisc
parport
pci
pcmcia
platform
pnp
power
pps
ps3
ptp
rapidio
regulator
rtc
s390
sbus
scsi scsi: fix qla2xxx printk format warning 2011-09-23 16:02:33 -07:00
sfi
sh
sn
spi spi: Fix WARN when removing spi-fsl-spi module 2011-09-23 17:28:29 -06:00
ssb
staging staging: zcache: fix cleancache crash 2011-09-20 14:17:13 -07:00
target
tc
telephony
thermal
tty
uio
usb USB: xHCI: prevent infinite loop when processing MSE event 2011-09-19 17:15:47 -07:00
uwb
vhost
video
virt
virtio
vlynq
w1
watchdog watchdog: Initconst section fixes for watchdog 2011-09-20 14:32:00 +02:00
xen
zorro zorro: Defer device_register() until all devices have been identified 2011-09-22 12:59:35 -07:00
Kconfig PM: Introduce devfreq: generic DVFS framework with device-specific OPPs 2011-10-02 00:19:15 +02:00
Makefile PM: Introduce devfreq: generic DVFS framework with device-specific OPPs 2011-10-02 00:19:15 +02:00