leds-an30259a: LED fading/blinking support

credits to Yank555

modified by Andip71 to initialize led_slope for fading

- adjustable brightness
- added stock CM behaviour
- added stock Samsung behaviour

SysFS interface:

 * /sys/class/sec/led/led_fade (rw)
 *
 *   0 : blink (Samsung style)
 *   1 : fade (CyanogenMod style)
 *
 * /sys/class/sec/led/led_intensity (rw)
 *
 *        0 : stock CM behaviour
 *    1- 39 : darker than Samsung stock
 *       40 : stock Samsung behaviour
 *   41-255 : brighter than Samsung stock
 *
 *    NB: Low power mode respected, applied brightness is divided by 0x8, except in CM mode, where it's never applied
 *
 * /sys/class/sec/led/led_speed (rw)
 *
 *   1 : normal rate
 *   2 : 2x faster
 *   3 : 3x faster
 *   4 : 4x faster
 *   5 : 5x faster
 *
 * /sys/class/sec/led/led_slope (rw)
 *
 *   takes 4 parameters, each between 0 and 5 (steps of 4ms) for :
 *
 *      slope up operation 1
 *      slope up operation 2
 *      slope down operation 1
 *      slope down operation 2
leds-an30259a.c: Allow continuous LED light + faster speeds

led speed set to 0 = continuous light,
led speed up to 15 = faster blinking or fading speed
ArchiKernel LED settings
add haptic configuration (thx to Lord Boeffla)
ArchiKernel Haptic Settings
cpufreq: CPU undervolting interface

credits to Simone201

adjusted to properly support overclocking by andip71
ArchiKernel CPU Voltage settings
mali/midas-power: Decrease minimum voltage boundary

mali:
Decrease minimum voltage initialisation data for MAX77686 on buck3 rail / vdd_g3d to minimum value as defined in regulator driver.
Decrease minimum voltage soft-limit in GPU voltage control to same value.

midas-power.c: Adjust min/max voltages of several regulators to properly support undervolting

Conflicts:
	arch/arm/mach-exynos/mach-smdk4x12.c
	arch/arm/mach-exynos/midas-power.c
cpufreq: Report correct min/max frequencies
cpufreq: 1600MHz CPU OC

Corrected CPU freq. going above scaling_max (even if only fractions of seconds)

Dynamically adjust cpufreq_max_limit according to scaling_max setting without breaking power save mode

Conflicts:
	arch/arm/mach-exynos/cpufreq-4x12.c
ArchiKernel settings CPU OC 1600
forgotten newline at end of power.h
mali: GPU control for r3p2 mali

GPU frequency, scaling and voltage control.
Based on netarchy's initial implementation and improvements of gokhanmoral and
ported onto the pegasus-m400 / Galaxy.

credits to Netarchy, Gokhanmoral, AndreiLux, DerTeufel

Slightly adjusted by andip71

Conflicts:
	drivers/gpu/mali400/r3p2/mali/platform/pegasus-m400/exynos4_pmm.c
mali: add GPU overclocking frequencies

credits to Simone201
mali: Allow min GPU voltage down to 500 mV and maximum up to 1300 mV
mali: Fix 5th GPU frequency not being used
mali: GPU control corrections

- re-initialize voltage tabe after ASV level is known
ArchiKernel settings gpu control
cypress-touchkey : add sysfs interface to enable/disable lighting hardwarekey backlight on screen touch (Yank555.lu)

- include new CM philosophy of handling h/w keys backlight from the ROM (Yank555.lu)
- kept the old sysfs interface and handling for older ROMs (Yank555.lu)
- kept the sysfs interface to enable/disable lighting hardwarekey backlight on screen touch (Yank555.lu)

SysFS interface :

 * /sys/class/sec/sec_touchkey/touch_led_handling (rw)
 *
 *   0 - handled by ROM (newer CM10.2, default)
 *   1 - handled by kernel (older CM10.2)
 *
 * /sys/class/sec/sec_touchkey/touch_led_on_screen_touch (rw)
 *
 *   0 - hardware keys backlight only lights up if h/w keys are used
 *   1 - hardware keys backlight lights up if h/w keys are used or screen is touched (default)

Conflicts:
	drivers/input/keyboard/cypress/cypress-touchkey.c
cypress-touchkey : add force_disable handling also for rom controlled scenario