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

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

powersuspend: fix logci derps :p

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

Conflicts:
	kernel/power/Makefile
Use Linux Atomic
frandom: Add fast random number generator 1.1

(grabbed from AndiP71)

Conflicts:
	drivers/char/frandom.c

Conflicts:
	drivers/char/frandom.c
Add frandom
 defconfig : add frandom
Revert "powersuspend: new pm kernel driver for android w/o early_suspend"

This reverts commit 982e9391c20e9c6ce13eba18bcf3670198f87071.
mali: GPU clock and voltage control - update voltage table on ASV detection on boot (AndiP71)
Boeffla-Sound: Engine 1.4.2

All credits to AndiP71
Boeffla-Sound: Engine 1.4.3

allow minimum headphone level down to 20 (reverse-merged from commit bf020780662430b1f5f6ec543696628dcfadc680)
Boeffla-Sound: Engine 1.4.4

- fix issue with mic mode functionality interfering with call functionality sometimes
  (where partner could not hear anything during a call)
Revert "Boeffla-Sound: Engine 1.4.4"

This reverts commit dcffc905272e324af48058fe08e99ff844724a2e.
Boeffla-Sound: Engine 1.4.7

- reverted some changes supposed to fix the call issues in combination with mic_mode
  and call detection
- mic_mode is now exclusive and not "intelligent" anymore. If you want to make calls,
  switch mic_mode back to default first.
Boeffla-Sound: Engine 1.4.8

- finally completely neutralize mic_mode to avoid any interference to related registers
  when not used (further fix for call issues with certain firmwares)
Boeffla-Sound: Engine 1.4.8+

- fixed a small bug that could mess mic settings in a very specific situation
Boeffla-Sound: Engine 1.4.9

- Completely neutralized mic_mode to avoid any interference to related registers
  when not used (fix for call issues with certain firmwares) by not doing any actions
  until mic_mode is enabled + using cached registers when restoring default mode back
- mic_mode is now exclusive and not "intelligent" anymore. If you want to make calls,
  switch mic_mode back to default first
- Safety-net introduced to avoid writing empty mic register cache values back to
  the registers in any case (thx to Yank555 for this idea)
- fix reported issue about boeffla sound starting up in enabled mode
  is causing a boot loop
boeffla ramfs: Boeffla-Sound Engine 1.5.1 & 1.6.0

- speaker tuning introduced
- mic mode discontinued
- mic level separate for general recording and call usage implemented

- stereo expansion added
- mono downmix added
Boeffla Sound Engine: FM radio not available with LTE models

set #ifdef conditional to disable unused logic

Credits to faux123 for the proper exclusions using #ifdefs instead of just removing the FM radio related code
Boeffla Sound Engine: change detection to Wolfson logic

- used Wolfson detection due to CM incorrectly setting wm8994 flag for in-call, this should be universally usable
Boeffla Sound Engine: v1.6.2b - fix issues in CM (Eq not sticking mostly)

- eq. settings are only applied when necessary (EQ active)
- speaker detection removed, headphone used instead (it's either one or the other, not both)
- each state change (headphone, in-call) will reset all the settings accordingly
- all settings due to a change detection are applied after 2 seconds of the last change in a window of 2 seconds
- if headphone is active, settings are reapplied on any register change after 2 seconds of the last change in a window of 2 seconds
- sysfs changes are always applied immediately (as it has always been, no change here)

Now hopefully this does the trick...
Boeffla-Sound: Engine 1.6.4

- show settings in sysfs even if boeffla sound is switched off
- remove legacy interfaces for alternative eq settings + mic mode
- some code cleanup

Boeffla-Sound: Engine 1.6.3

- delayed apply of changed register settings (credits to Yank) to fix issues on CM
- delay time configurable via sysfs (credits to Yank)
- different headphone detection for s3 and note devices
- different call detection

Boeffla Sound Engine: v1.6.2d - fix issues in CM (Eq not sticking mostly)

- (new) delay to apply the change detection is configurable (/sys/class/misc/boeffla_sound/change_delay, defaults to 2 seconds)
- fm radio detection slightly changed (removed a check that shouldn't be necessary anymore)
- eq. settings are only applied when necessary (EQ active)
- speaker detection removed, headphone used instead (it's either one or the other, not both)
- each state change (headphone, in-call) will reset all the settings accordingly
- all settings due to a change detection are applied after 2 seconds of the last change in a window of 2 seconds
- if headphone is active, settings are reapplied on any register change after 2 seconds of the last change in a window of 2 seconds
- sysfs changes are always applied immediately (as it has always been, no change here)

Now hopefully this does the trick...

Boeffla Sound Engine: v1.6.2c - fix issues in CM (Eq not sticking mostly)

- (new) fm radio detection slightly changed (removed a check that shouldn't be necessary anymore)
- eq. settings are only applied when necessary (EQ active)
- speaker detection removed, headphone used instead (it's either one or the other, not both)
- each state change (headphone, in-call) will reset all the settings accordingly
- all settings due to a change detection are applied after 2 seconds of the last change in a window of 2 seconds
- if headphone is active, settings are reapplied on any register change after 2 seconds of the last change in a window of 2 seconds
- sysfs changes are always applied immediately (as it has always been, no change here)

Now hopefully this does the trick...

Boeffla Sound Engine: v1.6.2b - fix issues in CM (Eq not sticking mostly)

- eq. settings are only applied when necessary (EQ active)
- speaker detection removed, headphone used instead (it's either one or the other, not both)
- each state change (headphone, in-call) will reset all the settings accordingly
- all settings due to a change detection are applied after 2 seconds of the last change in a window of 2 seconds
- if headphone is active, settings are reapplied on any register change after 2 seconds of the last change in a window of 2 seconds
- sysfs changes are always applied immediately (as it has always been, no change here)

Now hopefully this does the trick...