ARM: dts: msm: use a corner regulator for wcnss VDD_CX on all boards

Update wcnss nodes to use voltage corner regulators for VDD_CX on MSM8226,
MSM8610, MSM8974, and MSM8974Pro.

Also update the wcnss platform driver to use voltage corner values for the
VDD_CX regulator supply.

Change-Id: I3f42104c2609a8cd237a34c66ff76be4426e9de8
Signed-off-by: Yue Ma <yuem@codeaurora.org>
msm: mdss: double check mdp ping pong done state

There are cases where the irq trigger may get delayed for more than
expected, in such cases the ping pong done status may have been updated
by MDP hw. Add additional check to see if this has been triggered even
though interrupt wasn't scheduled for pingpong done.

Change-Id: I4730d166d95f238f4525eab2b5c99be40b30699b
Signed-off-by: Adrian Salido-Moreno <adrianm@codeaurora.org>
msm: mdss: always set mdp_busy when partial update is disabled

mdp_busy flag is used to serialze kickoff operations by ensuring
that any pending kickoffs are first completed before issuing any
new kickoffs. This avoids any potential mpd_busy_wait timeouts.
Therefore, for normal operations (partial update disabled), mdp_busy
flag should always be set. However, when partial update is enabled,
width and height of panel's ROI need to be checked before setting
mdp_busy flag. Otherwise mdp_busy_wait will timeout since no update
will be sent to the panel. In addition, perform roi merge from both
panels if roi-merge is enabled to decide whether column and page address
has changed. If it was changed, then new column and page address need
to be sent to the panel.

CRs-Fixed: 692382
Change-Id: Ib0070b84a626afffd4c51a65f59bc97aae1d8994
Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
video: mdss: Color enhancement feature

 * Add support for color enhancement feature of JDI panel

Change-Id: I6bacd36a329a0c648a5541efdb87b1142aefbfdf
qcom: rpm-smd: Mask the interrupt before sending the sleep set.

Sending a sleep set would cause an SMD interrupt to fire. If the
interrupt was previously affine to a different CPU, it could cause a
premature wakeup of that CPU. Prevent this by masking the interrupt
before sending the sleep set.

Change-Id: I45734c6fa52b7f69c0d68c5b3cd221185a516248
Signed-off-by: Mahesh Sivasubramanian <msivasub@codeaurora.org>
Revert "LCD_KCAL: Prevent out-of-range input values"

This reverts commit fe994d28134469803882a3e96b32a274a4909839.
Revert "LCD_KCAL: Introduce configurable kcal_min"

This reverts commit 8f4f7e2beb97109056a64af8c6bac107889e6300.
Revert "LCD_KCAL: Color Control driver for OnePlus One"

This reverts commit e2e5e6dcd11c2ebd87db61e5ab48a8a54049dfe1.
Revert "ak-bacon-build: compile with 4.9.1-2014.07.20140718.CR83"

This reverts commit a59fb8ad96c38014dd11095975b84f31fb7d6291.
LCD_KCAL: Color control driver for OPPO-8974

/sys/devices/platform/kcal_ctrl.0/kcal
/sys/devices/platform/kcal_ctrl.0/kcal_ctrl
/sys/devices/platform/kcal_ctrl.0/kcal_min

kcal:
Write RGB lut data from sysfs. Default values are '255/255/255', send
RGB info 'x x x' to kcal, and send '1' to kcal_ctrl to apply the value
and update the lut info.

kcal_min:
Lower values such as 0-10 ultimately create a dark, washed out display,
if a user accidently sets their kcal values to "0 0 0" they will loose
visual control of the device, potentially requiring a hard reboot.
Introduce minimum kcal values to prevent this behavior. kcal_min will
detect and block values attempting to set lower than itself, resetting
the specific values to that of kcal_min. There is also behavior to
adjust the kcal if kcal_min is set to a level higher than that of any
kcal value(s).

Change-Id: Ib6770d671322440ba26b78ade27e39d1dd3ed889
ak_bacon_defconfig: -O3 Power
Fix gcc-4.9.0 miscompilation of load_balance() in scheduler

commit 2062afb4f804afef61cbe62a30cac9a46e58e067 upstream.

Michel Dänzer and a couple of other people reported inexplicable random
oopses in the scheduler, and the cause turns out to be gcc mis-compiling
the load_balance() function when debugging is enabled.  The gcc bug
apparently goes back to gcc-4.5, but slight optimization changes means
that it now showed up as a problem in 4.9.0 and 4.9.1.

The instruction scheduling problem causes gcc to schedule a spill
operation to before the stack frame has been created, which in turn can
corrupt the spilled value if an interrupt comes in.  There may be other
effects of this bug too, but that's the code generation problem seen in
Michel's case.

This is fixed in current gcc HEAD, but the workaround as suggested by
Markus Trippelsdorf is pretty simple: use -fno-var-tracking-assignments
when compiling the kernel, which disables the gcc code that causes the
problem.  This can result in slightly worse debug information for
variable accesses, but that is infinitely preferable to actual code
generation problems.

Doing this unconditionally (not just for CONFIG_DEBUG_INFO) also allows
non-debug builds to verify that the debug build would be identical: we
can do

    export GCC_COMPARE_DEBUG=1

to make gcc internally verify that the result of the build is
independent of the "-g" flag (it will make the compiler build everything
twice, toggling the debug flag, and compare the results).

Without the "-fno-var-tracking-assignments" option, the build would fail
(even with 4.8.3 that didn't show the actual stack frame bug) with a gcc
compare failure.

See also gcc bugzilla:

  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61801

Reported-by: Michel Dänzer <michel@daenzer.net>
Suggested-by: Markus Trippelsdorf <markus@trippelsdorf.de>
Cc: Jakub Jelinek <jakub@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
makefile: add to -Os -> call cc-disable-warning,maybe-uninitialized
Kernel Version: ak.033.opo.cm11
Revert "vfp: makefile: hard float is used so change flag accordingly"

This reverts commit 86ca173395140b9e2bed28b2388b9c46c838a279.
cpufreq: Introduce new relation for freq selection

Introduce CPUFREQ_RELATION_C for frequency selection.
It selects the frequency with the minimum euclidean distance
to target. In case of equal distance between 2 frequencies,
it will select the greater freq.

Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
cpufreq: ondemand_eps: added new ondemand governor based on semaphore idea

Thanks a lot
@stratosk
https://github.com/stratosk/kernel_msm.git
msm: mdss: refactor MDSS idle power collapse logic

MDSS GDSC can be turned off, or power-collased for command mode panels
in static screen use-cases. In the current implementation, the power
collapse is triggered by a worker thread in the interface driver
whenever once it enters the idle state. However, MDP driver already
registers pm_runtime callbacks for idle and suspend notifications and
also maintains a count of active overlay sessions. It is much simpler
and cleaner to trigger idle-power collapse based on that. This also
avoids unnecessary synchronization issues pertaining to the power
collapse worker thread.

Change-Id: I96ee339b96ad794b2d87d19d1c14768fca3fa192
Signed-off-by: Aravind Venkateswaran <aravindh@codeaurora.org>
video: mdss: Fixup power collapse

Change-Id: Iaf58e785e86c994b25001e6589162ba5c3043abc
msm: mdss: reset runtime status upon device resume

MDSS is power-collapsed in idle screen cases using the pm runtime
framework. However, it is possible that the runtime PM status may
not match with the post-system sleep status when the device is
resumed. This sometimes leads to the inconsistencies in MDSS
idle-power collapse upon system resume. To address this issue,
reset the runtime PM status in the pm resume handler.

Change-Id: I74b082d2ff80c3719996a482510ba24e1f5f8170
Signed-off-by: Aravind Venkateswaran <aravindh@codeaurora.org>