add ARM optimized RWSEM algorithm

RWSEM implementation for ARM using atomic functions.
Heavily based on arch/sh/include/asm/rwsem.h

- https://www.codeaurora.org/gitweb/quic/le/?p=kernel/msm.git;a=commitdiff;h=917c8db2c20f54a904451b5b38933d57d3d1cc2e
- https://github.com/Ezekeel/GLaDOS-nexus-s-ics/commit/3001d8c824628e1bd13203837fb69d7d9b208d4e
add wifi deep-sleep fix by dorimanx (https://github.com/dorimanx/Dorimanx-SG2-I9100-Kernel/commit/5222ecca1bad07d94fce966003293d62f715358f)
 add brazilianwax governor
bcmdhd: reduce wifi wakelock (DerTeufel)

- wakelock duration for wlan_rx_wake and wlan_ctrl_wake divided by 4
Touch Wake

Touch Wake implementation

(Code cleanup by AndiP)

Touch Wake : disabled if incall (fix)

Credits googyanas
Touch Wake : bump to v1.1 (Yank555.lu)

- fix git merge derp in drivers/sensor/cm36651.c
- fix random misbehaving related to powerkey / proxy
- slight code cleanup
- optimized using likely / unlikely
- added precise debugging prints & sysfs file (enabled by #define)

Touch Wake : Different infinite mode handling (AndiP71)

- if touch wake delay is set to 0 (infinite mode), the power button will
  now also disable touch to wake (like it is for normal delays)
Touch Wake : bump to v1.1a (Yank555.lu)

- fixed touch wake disbaled as soon as proxy sensor was enabled, no matter if proximity was detected or not (my derp, introduced in 1.1)
- fixed proximity state change detection (is in cm36651.c, not ssp_input.c, which is not compiled for i9300)
- removed "off hook" detection, it was relying on a constant (PSTN_ON_HOOK, defined in telephony.h), so made no sense to keep it
 enable touch wake
staging: Add Snappy compression library (v3)

Google's Snappy data compression library is a faster alternative to LZO,
optimized for x86-64. On compressible input it compresses ~2.5x faster than LZO
and decompresses ~1.5-2x faster than LZO. On incompressible input, it skips the
input at 100x faster than LZO and decompresses ~4x faster than LZO.
It is released under BSD license.
This is a kernel port from user space C++ code.
The current intended use is with zram (see next patch in series).

Signed-off-by: Zeev Tarantov <zeev.tarantov@gmail.com>
staging: Update snappy compression to latest version
Replaced SNAPPY-v3 with faster LZ4 compress/decompress algorithm
Backport zcache and zsmalloc from 3.4
Staging: Migrate Zram to ZsmAlloc

Conflicts:

	drivers/staging/zram/zram_drv.h
zram: optimize for Android use
Fix derp
Revert "zram: optimize for Android use"

This reverts commit e76aafb05b9b6764bd9283001975f9ab8a7583f1.
Revert "Staging: Migrate Zram to ZsmAlloc"

This reverts commit 5928d555cc01d14629826b7b2323ea83db945624.
Revert "Backport zcache and zsmalloc from 3.4"

This reverts commit 7eda2bed5e583e9ce3accaca6e2933a953da502b.

Conflicts:

	drivers/staging/Makefile
Revert "Replaced SNAPPY-v3 with faster LZ4 compress/decompress algorithm"

This reverts commit cd5f9552848b8a72c0424a5c120e170b52a80229.

Conflicts:

	drivers/staging/Makefile
Staging: zram: Refactor zram_read/write() functions

This patch refactor the code of zram_read/write() functions. It does
not removes a lot of duplicate code alone, but is mostly a helper for
the third patch of this series (Staging: zram: allow partial page
operations).

Signed-off-by: Jerome Marchand <jmarchan@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

Conflicts:

	drivers/staging/zram/zram_drv.c