msm_fb: fixup MDP 3.00 vsync events

This is the sum of several fixes and improvements to the MDP 3.00
vsync event code.

Make sure to never switch off MDP command clock twice; add timeout
to the vsync wait completion and interpret the return value of the
completion function correctly.

Change-Id: Ic0a699c98a90e896a9ba185793cc7d9187bb6ec1
msm: display: fb blend setting via MSMFB_METADATA_SET ioctl

MSMFB_METADATA_SET ioctl is added for the fb user to pass
in additional infomation rather than using reserved
fields.
User can set pre-multiplied alpha for the frame buffer via this
ioctl, overlay blend setting will take this into account.

Change-Id: Ic2f6236d84691fb03174ec479874c6928489ea30

Conflicts:
	include/linux/msm_mdp.h
Update KGSL from ics_chocolate

Lift KGSL from CAF's ics_chocolate branch as of commit 92b921b3. Modify
board config and fixup various things to make it work right.

Notably, this should fix some possible stability problems and fixes
out of vmalloc space problems (white textures).

Change-Id: I48eb04d464edd6ae73916d8c666818bac51d9cfb
msm: kgsl: Optimize page_alloc allocations

User memory needs to be zeroed out before it is sent to the user.
To do this, the kernel maps the page, memsets it to zero and then
unmaps it.  By virtue of mapping it, this forces us to flush the
dcache to ensure cache coherency between kernel and user mappings.
Originally, the page_alloc loop was using GFP_ZERO (which does a
map, memset, and unmap for each individual page) and then we were
additionally calling flush_dcache_page() for each page killing us
on performance.  It is far more efficient, especially for large
allocations (> 1MB), to allocate the pages without GFP_ZERO and
then to vmap the entire allocation, memset it to zero, flush the
cache and then unmap. This process is slightly slower for very
small allocations, but only by a few microseconds, and is well
within the margin of acceptability. In all, the new scheme is
faster than the default for all sizes greater than 16k, and is
almost 4X faster for 2MB and 4MB allocations which are common for
textures and very large buffer objects.

The downside is that if there isn't enough vmalloc room for the
allocation that we are forced to fallback to a slow page by
page memset/flush, but this should happen rarely (if at all) and
is only included for completeness.

CRs-Fixed: 372638
Change-Id: Ic0dedbadf3e27dcddf0f068594a40c00d64b495e
Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
si4708: update fm driver

This is a combination of 6 commits:

si4708: uncrustify
si4708: poll for successful seek
si4708: fix channel space mask
si4708: add de-emphasis ioctl
si4708: add RDS support
si4708: add mute support

Change-Id: I31c6df3aa420e1520a5e912166a70653770d6226
backport uhid driver from linux 3.8

the userspace HID driver is needed by the JB bluetooth stack to process input
from bluetooth keyboards.
backport lowmemorykiller from CAF msm-3.4

this improves low memory behaviour greatly due to accounting for
lowmem_reserve as well as shmem pages.