Asynchronous Fsync: initial extraction of Async Fsync from HTC

Signed-off-by: Paul Reioux <reioux@gmail.com>
kernel/power/powersuspend: new PM kernel driver for Android w/o early_suspend

Android early_suspend/late_resume PM kernel driver framework has been
deprecated by Google. This new powersuspend PM kernel driver is a replacement
for it and existing early_suspend drivers can be easily adapted to use this
new replacement driver

Signen-off-by: Paul Reioux <reioux@gmail.com>

Conflicts:

	kernel/power/Kconfig
compilation: fix up for mismatched type for system_rev

Signed-off-by: Paul Reioux <reioux@gmail.com>
kernel/power/powersuspend: remove userspace dependency from powersuspend

make powersuspend not depend on a userspace initiator anymore, but use a hook
in autosleep instead.

Signed-off-by: Paul Reioux <reioux@gmail.com>
kernel/power/powersuspend: add back userpace control w/ default kernel control

make kernel / userspace mode switchable

Signed-off-by: Paul Reioux <reioux@gmail.com>
enabbled intelliplugg
LED eXtended ConTRoLs v1.1 (Yank555.lu)

  - Fixes Samsung LED pattern not repecting the user changes

 * SysFs interface :
 *
 * /sys/class/sec/led/led_intensity : 0 - 255 (100 = stock)
 *
 *     Set the relative intensity of the LED respecting the userspace's request
 *
 * /sys/class/sec/led/led_speed_on  : 1 - 5 (1 = stock)
 *
 *     Devider for delayon  (1 - 5 times shorter than requested by userspace)
 *
 * /sys/class/sec/led/led_speed_off  : 1 - 5 (1 = stock)
 *
 *     Devider for delayoff (1 - 5 times shorter than requested by userspace)
 *
 * /sys/class/sec/led/led_xctrl_version :
 *
 *     Display the current version of the eXtended ConTRoLs
 *
 * /sys/class/sec/led/led_xctrl_info :
 *
 *     Display the current settings in human readable format

LED eXtended ConTRoLs v1.0 (Yank555.lu)

 - Allow for customized brightness and delayon / delayoff control by user

 * SysFs interface :
 * -----------------
 *
 * /sys/class/sec/led/led_intensity : 0 - 255 (100 = stock)
 *
 *     Set the relative intensity of the LED respecting the userspace's request
 *
 * /sys/class/sec/led/led_speed_on  : 1 - 5 (1 = stock)
 *
 *     Devider for delayon  (1 - 5 times shorter than requested by userspace)
 *
 * /sys/class/sec/led/led_speed_off  : 1 - 5 (1 = stock)
 *
 *     Devider for delayoff (1 - 5 times shorter than requested by userspace)
 *
 * /sys/class/sec/led/led_xctrl_version :
 *
 *     Display the current version of the eXtended ConTRoLs
 *
 * /sys/class/sec/led/led_xctrl_info :
 *
 *     Display the current settings in human readable format
char-random: increase default entropy settings to (512,2048)
mdnie: HIJACK MDNIE Profile v1.0a (Yank555.lu)

- added WHATHUB's new control interface keeping the current interface at the same time (stay open)

mdnie lite control: revert back to stocklike disabled by default (Yank555.lu)

mdnie lite control: update single control for black level

- black is applied as a delta to actual black RGB values (-128 to +128)

mdnie lite control: add single control for black level

- slightly adapted to keep copy_mode (Yank555.lu)
- black kept at 0 by default as Natural is kept as base calibration (Yank555.lu)

mdnie lite control: override for all samsung scenarios and profiles (WhatHub)

- slightly adapted to keep copy_mode (Yank555.lu)

mdnie lite control: adjust calibration (WhatHub)

- slightly adapted to keep copy_mode (Yank555.lu)

Simple switchable mdnie lite control interface

- make hijacking STANDARD mode sysfs switchable, disabled by default (Yank555.lu)
- add copy curve information from existing mode
- add copy full mode from existing mode

Sysfs Interface : /sys/class/mdnie/mdnie/...

Simple mdnie lite control interface (WhatHub)

- mdnie lite control: use standard mode instead of movie mode
Forced Fast Charge for Samsung Note 3 v1.1 by Yank555.lu

- redone fast charge for new KK kernel sourcedrop

SysFS interface :

 * /sys/kernel/fast_charge/force_fast_charge (rw)
 *
 *   0 - disabled (default)
 *   1 - substitute AC to USB
 *   2 - use custom mA configured through sysfs interface (see below)
 *
 * /sys/kernel/fast_charge/ac_charge_level (rw)
 *
 *   rate at which to charge when on AC (1.0A/h to 2.1A/h)
 *
 * /sys/kernel/fast_charge/usb_charge_level (r/w)
 *
 *   rate at which to charge when on USB (0.460A/h to 1.0A/h)
 *
 * /sys/kernel/fast_charge/failsafe (rw)
 *
 *   0 - disabled - allow anything up to 2.1A/h to be used as AC / USB custom current
 *   1 - enabled  - behaviour as described above (default)
 *
 * /sys/kernel/fast_charge/ac_levels (ro)
 *
 *   display available levels for AC (for failsafe enabled mode)
 *
 * /sys/kernel/fast_charge/usb_levels (ro)
 *
 *   display available levels for USB (for failsafe enabled mode)
 *
 * /sys/kernel/fast_charge/version (ro)
 *
 *   display fast charge version information
 *
 * /sys/kernel/fast_charge/info (ro)
 *
 *   display complete fast charge configuration in human readable format

Credits to Chad Froebel <chadfroebel@gmail.com> for the base idea.
enabled MDNIE LITE TUNNING
kernel/power/powersuspend: new PM kernel driver for Android w/o early_suspend v1.3 (Yank555.lu)

- add an alternative hook for screen on / off detection in the display pannel driver
  (sleeps  ~0.1s sooner, wakes up ~1s later then autosleep)

kernel/power/powersuspend: new PM kernel driver for Android w/o early_suspend v1.2 (Yank555.lu)

- make kernel / userspace mode switchable

kernel/power/powersuspend: new PM kernel driver for Android w/o early_suspend v1.1 (Yank555.lu)

- make powersuspend not depend on a userspace initiator anymore, but use a hook in autosleep instead.

kernel/power/powersuspend: new PM kernel driver for Android w/o early_suspend (faux123)

Android early_suspend/late_resume PM kernel driver framework has been
deprecated by Google. This new powersuspend PM kernel driver is a replacement
for it and existing early_suspend drivers can be easily adapted to use this
new replacement driver

Signen-off-by: Paul Reioux <reioux@gmail.com>;
update config
cpufreq: ondemand:Fix NULL check for dbs_info->cur_policy

dbs_info->cur_policy can go NULL when processing
CPUFREQ_GOV_LIMITS, NULL check is required
before processing it

Change-Id: Iba99b563e230835dfcd24573335065d68ad25821
CRs-fixed: 576272
Signed-off-by: Swetha Chikkaboraiah <schikk@codeaurora.org>
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
cpufreq: ondemand:kernel NULL pointer dereference at dbs_check_cpu

Function dbs_check_cpu  calls __cpufreq_driver_getavg
With  policy as IN/OUT parameter.
There is possiblity of policy becoming NULL in
 __cpufreq_driver_getavg. Same policy is getting
accessed in the for loop which leads to NULL pointer dereference.
So NULL check is required for the policy

CRs-fixed: 582925
Change-Id: Ib8d8de8d66500430a5aa4c275937640e4f934aa8
Signed-off-by: Swetha Chikkaboraiah <schikk@codeaurora.org>
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
TouchWake implementation v1.4 (Yank555.lu)

- Finger and Pen working
- Call detection working through proxy detection
- use of wakelock is optional (sysfs switchable)
- fixed for CM11 ROMs
- reviewed digitizer handling

SysFs interface :

 * /sys/class/misc/touchwake/enabled (rw) : 1 - on / 0 - off
 *
 *     Enable / Disable TouchWake (default = disabled)
 *
 *     NB: Turning the device off with the power key will disable touchwake
 *
 * /sys/class/misc/touchwake/delay (rw) :
 *
 *     Sets the delay in ms to keep touchscreen / pen actively listening for touch after screen goes off
 *
 *     NB: A value of 0 equals "infinite", will drain battery !
 *
 * /sys/class/misc/touchwake/proximity_threshold (rw) :
 *
 *     Sets the threshold from which to consider the proxy triggered (which will disable touchwake)
 *
 *     NB: This serves as a kind of in-call detection to not turn the screen on during a call when placing
 *         the device to the ear
 *
 * /sys/class/misc/touchwake/use_wakelock (rw) : 1 - on / 0 - off
 *
 *     Enable / Disable using a wakelock to keep device awake while TouchWake is active (default = enabled)
 *
 * /sys/class/misc/touchwake/version (ro) :
 *
 *     Display the current version of the eXtended ConTRoLs
 *
 * /sys/class/misc/touchwake/debug (ro) :
 *
 *     Display debugging info (only if debugging is active at compilation time)

TouchWake implementation v1.3 (Yank555.lu)

- Finger and Pen working
- Call detection working through proxy detection
- use of wakelock is optional (sysfs switchable)
- fixed for CM11 ROMs

Issues left to resolve :

- Finger detection only works after screen is off for 1-2 seconds (though looks better on CM)

wacom: always disable digitizer when the pen is inserted

Inspired from CM11's, adapted Touchwake :

hlte: power enhancement for wacom hardware.

* always disable digitizer when the pen is inserted

Change-Id: I6c9798682f9f6349b37cb452353bd0c0e6958401

TouchWake implementation v1.2 (Yank555.lu)

- Finger and Pen working
- Call detection working through proxy detection
- use of wakelock is optional (sysfs switchable)

Issues left to resolve :

- Finger detection only works after screen is off for 1-2 seconds

TouchWake implementation v1.1 (Yank555.lu)

- Finger and Pen working
- Call detection working through proxy detection

Issues left to resolve :

- Finger detection only works after screen is off for 1-2 seconds

TouchWake implementation v1.0 (Yank555.lu)

- Finger and Pen working

Issues :

- Finger detection only works after screen is off for 1-2 seconds
- Call detection missing to avoid turning the screen on when placing the device close to the ear (reverted from commit 47f478cc82e9db1ea2084b7727f3f8dea59abf26)
TouchWake implementation v1.4a (Yank555.lu)

- finger and pen working
- call detection working through proximity sensor detection
- use of wakelock is optional (sysfs switchable)
- fixed for CM11 ROMs
- reviewed digitizer handling

What's new :

- reduces proximity sensor detection default threshold
- added debug output to dmesg of proximity sensor reading

SysFs interface :

 * /sys/class/misc/touchwake/enabled (rw) : 1 - on / 0 - off
 *
 *     Enable / Disable TouchWake (default = disabled)
 *
 *     NB: Turning the device off with the power key will disable touchwake
 *
 * /sys/class/misc/touchwake/delay (rw) :
 *
 *     Sets the delay in ms to keep touchscreen / pen actively listening for touch after screen goes off
 *
 *     NB: A value of 0 equals "infinite", will drain battery !
 *
 * /sys/class/misc/touchwake/proximity_threshold (rw) :
 *
 *     Sets the threshold from which to consider the proximity sensor triggered (which will disable touchwake)
 *
 *     NB: This serves as a kind of in-call detection to not turn the screen on during a call when placing
 *         the device to the ear
 *
 * /sys/class/misc/touchwake/use_wakelock (rw) : 1 - on / 0 - off
 *
 *     Enable / Disable using a wakelock to keep device awake while TouchWake is active (default = enabled)
 *
 * /sys/class/misc/touchwake/version (ro) :
 *
 *     Display the current version of TouchWake
 *
 * /sys/class/misc/touchwake/debug (ro) :
 *
 *     Display debugging info (only if debugging is active at compilation time)
TouchWake implementation v1.4b (Yank555.lu)

- finger and pen working
- call detection working through proximity sensor detection
- use of wakelock is optional (sysfs switchable)
- fixed for CM11 ROMs
- reviewed digitizer handling

What's new :

- don't use proxy sensor state when suspending to decide whether or not to enable touchwake & small fixes

SysFs interface :

* /sys/class/misc/touchwake/enabled (rw) : 1 - on / 0 - off
*
* Enable / Disable TouchWake (default = disabled)
*
* NB: Turning the device off with the power key will disable touchwake
*
* /sys/class/misc/touchwake/delay (rw) :
*
* Sets the delay in ms to keep touchscreen / pen actively listening for touch after screen goes off
*
* NB: A value of 0 equals "infinite", will drain battery !
*
* /sys/class/misc/touchwake/proximity_threshold (rw) :
*
* Sets the threshold from which to consider the proximity sensor triggered (which will disable touchwake)
*
* NB: This serves as a kind of in-call detection to not turn the screen on during a call when placing
* the device to the ear
*
* /sys/class/misc/touchwake/use_wakelock (rw) : 1 - on / 0 - off
*
* Enable / Disable using a wakelock to keep device awake while TouchWake is active (default = enabled)
*
* /sys/class/misc/touchwake/version (ro) :
*
* Display the current version of TouchWake
*
* /sys/class/misc/touchwake/debug (ro) :
*
* Display debugging info (only if debugging is active at compilation time)
gpio_keys: add flip cover wake/suspend event (arter97)

AOSP doesn't take care of flip covers.

Let make it aware from the kernel side.

gpio_keys: fix registration order

gpio-keys must be in /sys/class/input/input18,
flip_powerkey must be in /sys/class/input/input19

for device/samsung/hlte/power/power_ext.c to properly suspend GPIO_KEYS_POWER.

Re-order registration(flip_powerkey after gpio-keys).

 gpio_keys: return early when flip_cover == gpio_flip_cover

This prevents ghost turn-off or turn-on
when there really wasn't a flip-cover event changed,
but flip_cover_work() is just called.

To prevent this, compare ddata->flip_cover with gpio_get_value(ddata->gpio_flip_cover)
and proceed only on when those datas are different.

gpio_keys: fix typo during flip_powerkey registration
input_register_device() returns 1 on errors, not 0

gpio_keys: remove filesystem sync, dynamic fsync already handles this (Yank555.lu)

gpio_keys: add a semaphore so powerkey action never happen more than once at the same time (Yank555.lu)

- use shorter delay between press & release
update some configs