cpufreq: Introduce Sultan's CPU-boost framework
cpufreq: Introduce CPU-boost framework

The CPU-boost framework allows you to place hooks in various drivers to boost the CPU for either a specified duration or indefinitely (until it is manually unboosted). If a new boost request is sent while the CPU is boosted then the new boost request will take precedence and immediately override the current boost.

Signed-off-by: Sultanxda <sultanxda@gmail.com>

Add initial CPU-boost hooks

CPU is currently boosted for these activities:
*Taking a picture (1188MHz for 3s)
*Starting video playback (1242MHz for 5s)
*Recording video (594MHz indefinite)
*Turning on the display (972MHz for 7s)

Signed-off-by: Sultanxda <sultanxda@gmail.com>

cpu_boost: Respect max frequency

If the requested boost frequency is greater than the maxfreq then reduce the boost to 2 steps below the current maxfreq (108MHz below the current maxfreq). If the maxfreq is 486MHz or lower then the boost will be canceled.

Signed-off-by: Sultanxda <sultanxda@gmail.com>

msm8x60_celox: Add CPU-boost hook in ts power-on sequence

The touchscreen is powered on roughly 100ms before the panel is powered on. This gives us an extra 100ms of earlier boosting when waking the device from sleep.

Signed-off-by: Sultanxda <sultanxda@gmail.com>