msm: mdss: Handle null panel name configuration

LK sends default panel parameter string through
kernel command line argument if auto detection
fails or display is not enabled. DSI driver probe
is failing to parse this panel parameter passed by
LK. With this change, DSI driver will select the
preferred primary panel configured in dtsi if
it parsing fails.

Change-Id: Ief4804ae2cc10abf74317d64fb1b889bd41228d2
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>

Conflicts:
	drivers/video/msm/mdss/mdss_dsi.c
msm: mdss: remove interruptible timeout waits

Currently display driver contexts are not utilizing interruptible
wake-ups while using wait_for_completion_interruptible_timeout. This
can lead to incorrect context wake-up and un-predictable outcome. Since
there is already a timeout attached to these kind of context sleeps, it
is safe to replace them with wait_for_completion_timeout.

Change-Id: Ia528debf34aef0acdda2bea1219a128c200c3651
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>
msm: mdss: Add an extra write of zero to clear dsi-ack-err bit

In addition to writing 1 to clear dsi-ack-err bit, an extra write
of 0 is also needed to clear error bit completely.

CRs-fixed: 574066
Change-Id: Ib9df9fe5f993605372ced8766874fa00538f505a
Signed-off-by: Shivaraj Shetty <shivaraj@codeaurora.org>
mdss: Fix null point dereference in mdss_mdp_pp_init

Fixed null point dereference in case of memory allocation
failure in mdss_mdp_pp_init.

Change-Id: I3593a583da355915b731ac30b1f38aaa010eba85
Signed-off-by: Krishna Chaitanya Parimi<cparimi@codeaurora.org>
msm: mdss: Fix error in BL linearity inverse LUT check

Associate the maximum index for the BL linearity inverse LUT with the
table size and not the maximum backlight value. The maximum backlight
value can cause an out of bounds index for the BL linearity inverse LUT.

Change-Id: I35fb276f8f1cc6be3be158fa25e6442be438cbf0
Signed-off-by: Benet Clark <benetc@codeaurora.org>
msm: mdss: Fix error cases in AD config

The BL linearity LUT was not being copied correctly. This change allows
AD config to exit with errors correctly if the BL linearity LUT is not
passed correctly.

Change-Id: I491a7cc4b168b7691c65cbc2d2963f8a7a3f804d
Signed-off-by: Benet Clark <benetc@codeaurora.org>
msm: mdss: Sanitize read of panel properties

Check panel property's values properly before operating on
them.

CRs-Fixed: 562887
Change-Id: I26ce51e8b3a8e9328e7b6370b9c56d67fcdd1901
Signed-off-by: Mayank Chopra <makchopra@codeaurora.org>
msm: mdss: enable vsync event during continuous splash

Currently when continuous splash screen is enabled the vsync
event reports are delayed until first frame update. This blocks
boot animation. To fix this issue, after user space enables
vsync through vsync_ctrl, mdp driver will start sending vsync
events.

CRs-fixed: 567649
Change-Id: Ifb35e3479805e595d950ab7c38c26de201aa2d16
Signed-off-by: Ray Zhang <rayzhang@codeaurora.org>
Revert "msm: mdss: Turn off backlight while power off"

This reverts commit 6b9bcc740ad0355f74683d2ec2f5f0a7dba3b9c7
This patch will lead to backlight shutdown in recovery mode

Change-Id: I229aca313f74b10e2a38fffdc991ac6ae243e410
Signed-off-by: Shuo Yan <shuoy@codeaurora.org>
msm: mdss: fix the non-continuous splash screen use case

In the non-continuous splash screen use case, we need to
stop the display.  The display clocks are on before we
stop the display.

Change-Id: If8f76d4776fb64f4deb89e5b78c52ab54a56f02a
Signed-off-by: Xiaoming Zhou <zhoux@codeaurora.org>
msm: mdss: Remove additional clk refcnts in dual-dsi

When dual-dsi panel is attached to a device, both DSI controllers
are registered to mdss. But only one registration done notification
needs to be sent. Currently two notifications are sent and it leads
to an additional refcnt on mdp clocks which in turn prevents proper
suspend. Fix this by sending notification only once.

Change-Id: I29e3c92e9ab0cccd9314cc5428b4accc31b0d0d9
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>
msm: mdss: Support demo mode for post processing

Add demo mode feature for numerous post processing features. In dual pipe
case, demo mode allows for either the left or right pipe's feature to be
disabled to showcase its effects. Features supported include assertive
display, gamut mapping, panel gamma correction, inverse gamma correction,
dithering, picture adjustment (v2 only), and polynomial color correction.

Change-Id: I8bceeffc11967ff23497df7739e6f99c30d2b10f
Signed-off-by: Carl Vanderlip <carlv@codeaurora.org>
msm: mdss: Allow AD register programming in AD calibration mode

When in AD calibration mode, AD should still be programmed even though all
other post processing features should be temporarily disabled.

Change-Id: I15ab36c657d9936386ff24cdd343711e29e157bb
Signed-off-by: Carl Vanderlip <carlv@codeaurora.org>
msm: mdss: Block postprocessing updates during DTM

When calibration tool requests the fb driver to enter in
Display Tuning Mode (DTM), PostProcessing blocks should
not update the HSIC, Memory color, Six Zone colors, etc.
Updating them during DTM conflicts the update from
calibration tool.

Change-Id: I11fcac57a651581d85e771911f83b2fdd9c3c681
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
mdp3: Wait for proper vsync when updating display frame

This fixes an issue where we would report that dma is displaying
new frame, but in fact were really still displaying the old
frame.

Change-Id: I99dc89b2341481ea42f9cce451b9b2833dd1f700
Signed-off-by: Terence Hampson <thampson@codeaurora.org>
binfmt_elf.c: use get_random_int() to fix entropy depleting

Changes:
--------
v4->v3:
- s/random_stack_user()/get_atrandom_bytes()/
- Move this function to ahead of its use to avoid the predeclaration.

v3->v2:
- Tweak code comments of random_stack_user().
- Remove redundant bits mask and shift upon the random variable.

v2->v1:
- Fix random copy to check up buffer length that are not 4-byte multiples.

v3 can be found at:
http://www.spinics.net/lists/linux-fsdevel/msg59597.html
v2 can be found at:
http://www.spinics.net/lists/linux-fsdevel/msg59418.html
v1 can be found at:
http://www.spinics.net/lists/linux-fsdevel/msg59128.html

Thanks,
-Jeff

Entropy is quickly depleted under normal operations like ls(1), cat(1),
etc...  between 2.6.30 to current mainline, for instance:

$ cat /proc/sys/kernel/random/entropy_avail
3428
$ cat /proc/sys/kernel/random/entropy_avail
2911
$cat /proc/sys/kernel/random/entropy_avail
2620

We observed this problem has been occurring since 2.6.30 with
fs/binfmt_elf.c: create_elf_tables()->get_random_bytes(), introduced by
f06295b44c296c8f ("ELF: implement AT_RANDOM for glibc PRNG seeding").

/*
 * Generate 16 random bytes for userspace PRNG seeding.
 */
get_random_bytes(k_rand_bytes, sizeof(k_rand_bytes));

The patch introduces a wrapper around get_random_int() which has lower
overhead than calling get_random_bytes() directly.

With this patch applied:
$ cat /proc/sys/kernel/random/entropy_avail
2731
$ cat /proc/sys/kernel/random/entropy_avail
2802
$ cat /proc/sys/kernel/random/entropy_avail
2878

Analyzed by John Sobecki.

Signed-off-by: Jie Liu <jeff.liu@oracle.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Andreas Dilger <aedilger@gmail.com>
Cc: Alan Cox <alan@linux.intel.com>
Cc: Arnd Bergmann <arnn@arndb.de>
Cc: John Sobecki <john.sobecki@oracle.com>
Cc: James Morris <james.l.morris@oracle.com>
Cc: Jakub Jelinek <jakub@redhat.com>
Cc: Ted Ts'o <tytso@mit.edu>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Kees Cook <keescook@chromium.org>
Cc: Ulrich Drepper <drepper@redhat.com>
mdp3: Prevent deref of invalid pointer that contains err code

It is possible that mdp3_iommu_meta_put with a non null iommu_meta
that contains PTR_ERR value.

Change-Id: I440c78e324f558fec22d2db373dfd2c0e4d5fbb7
Signed-off-by: Terence Hampson <thampson@codeaurora.org>
msm: mdss: Support post processing blocks address access

Support MDP address read/write for post processing blocks
like PA, ARGC, PCC, IGC, dither, etc on all dspps,
layer mixers and source pipes for display calibration tool.
It checks the post processing blocks address ranges against
the base address provided in mdss dtsi.

Change-Id: Ief0ae097c542e4372d5690b5b8ca94530da54cba
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
msm: mdss: Support six zone and memory color access

Allow display calibration tool to access six zone and
memory color area on MDSS hardware for 8084 target.

Change-Id: I6c5e180448dc0218bdf6e552a12ced8914316c60
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
msm: mdss: Use MDP_SOLID_FILL to enable color on pipe

To enable constant color on a pipe, set MDP_SOLID_FILL in pipe
flag. This will do a solid fill on the pipe with the color
specified in bg_color.

CRs-Fixed:592032
Change-Id: I3201e2fa657a6fc6d0e7f51f8585366afc3d29a3
Signed-off-by: Mayank Chopra <makchopra@codeaurora.org>