Bring in Version 0.9 alpha1 (Yank555.lu)

Changelog (credits to Yank555):

- splitted fast_scaling into two separate tunables fast_scaling_up and
  fast_scaling_down so each can be set individually to 0-4 (skip 0-4 frequency steps)
  or 5 to use autoscaling.
- splitted fast_scaling_sleep into two separate tunables fast_scaling_sleep_up and
  fast_scaling_sleep_down so each can be set individually to 0-4 (skip 0-4 frequency steps)
  or 5 to use autoscaling.
- removed legacy mode (necessary to be able to split fast_scaling tunable)
- removed LCD frequency DFS

profile header file (Version 0.2):

- split fast_scaling and fast_scaling_sleep into fast_scaling_up/fast_scaling_down
  and fast_scaling_sleep_up/fast_scaling_sleep_down
- adjusted values for profiles Yank Battery and Yank Battery Extreme
Version 0.9 alpha-2

Changelog:

- added auto fast scaling step tuneables:
  afs_threshold1 for step one (range from 1 to 100)
  afs_threshold2 for step two (range from 1 to 100)
  afs_threshold3 for step three (range from 1 to 100)
  afs_threshold4 for step four (range from 1 to 100)

profile header file (Version 0.2alpha-2):

- corrected documentation
- corrected version information
- added auto fast scaling step tuneables and values to all profiles
Version 0.9 beta1

Changelog:

- bump version to beta for public
- added/corrected version informations and removed obsolete ones

profile header file (Version 0.2 beta1):

- bump version to beta for public
- corrected version informations
Version 0.9 beta2

Changelog:

- support for setting a default settings profile at governor start without the need of using the tuneable 'profile_number'
  a default profile can be set with the already available macro 'DEF_PROFILE_NUMBER' check zzmoove_profiles.h for details about
  which profile numbers are possible. this functionality was only half baken in previous versions, now any given profile will be really
  applied when the governor starts. the value '0' (=profile name 'none') in 'DEF_PROFILE_NUMBER' disables this profile hardcoding and
  that's also the default in the source. u still can (with or without enabling a default profile in the macro) as usual use the tuneable
  'profile_number' to switch to a desired profile via sysfs at any later time after governor has started
- added 'blocking' of sysfs in all tuneables during apply of a settings profile to avoid a possible and unwanted overwriting/double
  setting of tuneables mostly in combination with tuning apps where the tuneable apply order isn't influenceable
- added tuneable 'profile_list' for printing out a list of all profiles which are available in the profile header file
- fixed non setting of 'scaling_block_force_down' tuneable when applying profiles
- some documentation added and a little bit of source cleaning
Version 0.9 beta3

Changelog:

merged some changes originated by ffolkes (all credits and thx to him)
(source https://github.com/ffolkes/android_kernel_samsung_smdk4412/commits/534ec13388175eb77def021e92b0a44e1e3190d5/drivers/cpufreq/cpufreq_zzmoove.c

- reordered sysfs attributes
  description by ffolkes: some apps set tuneables by the order in which they are listed in the filesystem. this causes problems when one tuneable
  needs another set first in order to correctly validate. (e.g. you cannot set down_threshold properly until you have first set up_threshold)
- added 'fast down' functionality (based on commits to pegasusq in perseus by andreilux and extended for this version by ZaneZam)
  description by ffolkes: fastdown dynamically applies a (presumably) higher up_threshold and down_threshold after a frequency threshold has been
  reached. the goal is to encourage less time spent on the highest frequencies
- added 'hotplug engage' functionality
  description by ffolkes: when set >0, will not bring any cores online until this frequency is met or exceeded
  goal: reduce unnecessary cores online at low loads
- added 'scaling responsiveness' functioniality
  description by ffolkes: similar to 'frequency for responsiveness' in other governors
  defines a frequency below which we use a different up_threshold to help eliminate lag when starting tasks
- instead of failing when set too high in down_threshold tuneables set the value to the highest it can safely go
- increased possible sampling rate sleep multiplier value to a max of 8 (ZaneZam)
- added missing error handling to some tuneables (ZaneZam)
- fixed non setting of 'hotplug_sleep' tuneable when applying profiles (ZaneZam)
- added up/down threshold to debug tuneable (ZaneZam)
- some code style and comment changes/fixes (ZaneZam)

profile header file (Version 0.2 beta2):

- added values for following new tuneables (credits to ffolkes):
  hotplug_engage_freq (disabled by default in all profiles)
  scaling_fastdown_freq (disabled by default in all profiles)
  scaling_fastdown_up_threshold (default to 95 in all profiles)
  scaling_fastdown_down_threshold (default to 90 in all profiles)
  scaling_responsiveness_freq (disabled by default in all profiles)
  scaling_responsiveness_up_threshold (default to 30 in all profiles)
- adjusted up/down thresholds for core 2 in moderate setting
- changed sampling rate sleep multiplier from 4 to 6 in all settings (except in default setting)
Version 0.9 beta4

Changelog:

- removed 'freq_step' functionality as it never had any function in this governor. it was a left over from mialwes 'smoove' governor and also
  had no function in his governor back then. so yeah all the 'feelings' about it's influence were placebo :)
- introduced 'proportional scaling' for more 'connectivity' to current load, this should give more 'balanced' frequencies
  in general. when enabled all targeted frequencies in scaling logic will be compared with the ones from system table method and at the end
  the lowest of them both will be used. so all used scaling frequencies will be 'tentential' lower in both directions
- added support for exynos4 CPU temperature reading (patches available in zzmoove repositories: https://github.com/zanezam)
  this must be enabled via 'CONFIG_EXYNOS4_EXPORT_TEMP=y' in the config of a kernel which has exynos4 CPU temperature export implementation
  included. the default temp polling interval is 1000 ms and can be set with DEF_TMU_READ_DELAY. however the TMU driver has it's own polling
  interval which is 10 seconds, so leaving it at the default value of 1 second is recommended temperature reading will only be enabled if the
  tuneable 'scaling_block_temp' is set and will be disabled whenever early suspend is entered
- if exynos4 CPU temperature reading is enabled in the code use current CPU temperature in scaling block functionality to be able to 'hold' the cpu
  temperatue to the given one in 'scaling_block_temp'. this function is used in combination with the already existent tuneable 'scaling_block_freq'
  so u have to set both to enable it. the possible temperature range is 30°C to 80°C (lower temps are making no sense and higher temps would reach
  into exynos4 TMU driver trottling range)
- if exynos4 CPU temperature reading is enabled added current CPU temperature to debug info tuneable
- added auto adjustment of all available frequency thresholds when scaling max limit has changed
- improved sampling rate idle switching by making it scaling thresholds independent
- again some code style and comment changes/fixes

profile header file (Version 0.2 beta3):

- added scaling block temperature tuneable to all profiles if CONFIG_EXYNOS4_EXPORT_TEMP is defined
- use CPU temperature treshold of 65°C instead of 15 scaling block cycles in game profile if
  CONFIG_EXYNOS4_EXPORT_TEMP is defined
- added proportional frequency tuneable to all profiles
- added auto adjust freq thresholds to all profiles (disabled by default)
- enabled scaling proportional in ybat, ybatext, zzbat, zzbatp, zzmod and zzgame profile
- enabled scaling fast down over 1200MHz and resposiveness over 400Mhz with up threshold of 20
  in ybat, ybatext, zzbat, zzbatp, and zzmod profile
- added core macros to exclude not used code like it is in governor
- removed freq_step tuneable from all profiles
Version 1.0 beta1

Changelog:

- bump version to 1.0 beta1 because of brought forward plan 'outbreak'
- reworked scaling logic:
  removed unessesary calls of external cpufreq function and use a static variable instead to hold the system freq table during runtime
  fixed frequency stuck on max hard and soft frequency limit (under some circumstances freq was out of scope for the main search loop)
  and added precautions to avoid problems when for what ever reason the freq table is 'messed' or even not available for the governor
  fixed not properly working scaling with descend ordered frequency table like it is for example on qualcomm platform
  added additional propotional scaling mode (mode '1' as usual decide and use the lowest freq, new mode '2' use only propotional
  frequencies like ondemand governor does - switchable as before in 'scaling_proportional' tuneable)
- use static frequency table variable in all frequency checks agains system frequency table in the governor
- fixed 'update_ts_time_stat idle accounting' (kernel patch for kernel version 3.0.x needed, example available in github zzmoove repository)
- fixed non setting of scaling down threshold tuneables under some circumstances (issue on kernel 3.4 when running multible zzmoove instances)
- changed some variable names in scaling range evaluation and debugging tuneable
- added compatibility for kernel version 3.4 (or higher, but only tested on 3.4.0 yet)
- added compatibility for cpufreq implementation used since kernel version 3.10 (NOTE: for backports u can use the macro CPU_IDLE_TIME_IN_CPUFREQ)
- added support for powersuspend (used on some platforms since kernel version 3.4)
- added support for opo specific 'backlight ext control' (kernel patch for opo bacon devices needed, example available in github zzmoove repository)
- added macros to exclude hotplugging functionality (default in this version is enabled=uncommented)

profile header file (Version 0.3 beta1)

- bump version to 0.3 beta1 because of brought forward plan 'outbreak'
- removed dynamic freq scaling tuneable leftovers
- added macros to switch code depending of used power management implementation
  or used supend/resume backlight hook (opo specific)
- added macros to be able to disable hotplugging
Version 1.0 beta2 (bugfix)

Changelog:

- avoid kernel crash (usually a oops in smp.c) by checking if a core is online before putting work on it: this problem appeared on opo qualcomm
  platform with proprietary mpdecision hotplugging service. assumption is that there is a delay between initiating hotplugging events from 'userland'
  and gathering core state info in 'kernel land' so under some rare circumestances the governor doesn't 'know about' a changed core state and tries to
  put work on a meanwhile offline core or that hotplug event happend during putting work on a core in the governor.