ARM: tegra: power: Add dynamic CPU regulator mode control
authorAlex Frid <afrid@nvidia.com>
Thu, 17 Oct 2013 01:50:08 +0000 (18:50 -0700)
committerYu-Huan Hsu <yhsu@nvidia.com>
Mon, 28 Oct 2013 19:27:58 +0000 (12:27 -0700)
commit51321d1df95178d56799b17a665f1cd3f1740f31
treed3385edc7adf532c0994a3513e0665b95c6c266a
parenteac8ece1897c63d898922a2914c43a21683cb824
ARM: tegra: power: Add dynamic CPU regulator mode control

Operational mode of CPU voltage regulator depends on load current.
Commonly on Tegra platforms this dependency was handled by regulator
h/w itself. There are exceptions, however, introduced on some Tegra12
designs that requires s/w control of the mode.

In order to dynamically control regulator mode based on load,
s/w has to

(a) estimate load based on CPU frequency, number of on-line CPU cores,
and temperature
(b) compare load estimation with regulator specific threshold whenever
any of the above factors changes
(c) change regulator mode when the respective threshold is crossed

This commit adds layer (b) in cpu-tegra driver. It expects existing
Tegra CPU load calculator in EDP driver to implement (a), and provide
look-up table of frequency thresholds for each combination of on-line
CPU cores and temperature ranges. When the respective threshold is
crossed standard regulator mode change interface is called to carry
on (c).

Only switching between IDLE and NORMAL regulator modes is supported.
The respective EDP calculator functions are just stubbed, for now.

Bug 1302884

Change-Id: Iaea42a101aaea239643c0c80a7ad165ece3b1e36
Signed-off-by: Alex Frid <afrid@nvidia.com>
Reviewed-on: http://git-master/r/301520
Reviewed-by: Yu-Huan Hsu <yhsu@nvidia.com>
arch/arm/mach-tegra/clock.c
arch/arm/mach-tegra/cpu-tegra.c
arch/arm/mach-tegra/cpu-tegra.h
arch/arm/mach-tegra/dvfs.c
arch/arm/mach-tegra/dvfs.h
arch/arm/mach-tegra/edp.c
arch/arm/mach-tegra/include/mach/edp.h
arch/arm/mach-tegra/tegra12_clocks.c