msm: mdss: control backlight level during blank and unblank events

Add code to set the backlight level to zero for blank event
and restore the backlight level to its previous value during
unblank event. This will fix any unexpected panel flicker
that might show up on the screen during panel ON sequence.

CRs-Fixed: 649073
Change-Id: I871a067b0cc40d893b8b7e5a25103ebb914f9b7a
Signed-off-by: Chandan Uddaraju <chandanu@codeaurora.org>
Signed-off-by: Benet Clark <benetc@codeaurora.org>
msm: mdss: Allow display commit in DCM state for CMD panels

Allow display commit in DCM state for command mode panels. QDCM
tool requires explicit display kickoff during the calibration
stage in which the panel power is turned off.

Change-Id: Id6c7a0becf488ad2bfe9652b05d781384109f5c4
Signed-off-by: Zohaib Alam <zalam@codeaurora.org>
msm: mdss: Provide an exclusive access to SSPP op_mode

IGC/SPA/QSEED effects are supported by PP module and
calibration service. User is not able observe the effect
when both modules try to enable/disable the effect
at the same time. This change provides calibration
service an exclusive access to SSPP_SRC_OP_MODE on
all source pipes and VIG_OP_MODE on all VIG pipes
during tuning state.

Change-Id: Ice50f579fcb900f673c52a6b17f40aeb3a0e0a66
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
msm: mdss: Provide an exclusive access to QSEED2 block

Calibration tool and pp module uses the QSEED2 block on
VIG pipe to set the sharpness. This sharpness effect
is overwritten when both modules tries to update it
at the same time. Hence, it is required to provide
an exclusive access to QSEED2 block when target is in
display tuning mode.

Change-Id: I41b85313e529a3cca70de7e652c3abb7d4defbca
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
msm: mdss: update layer mixer access for calibration tool

Calibration tool should have register access on all layer
mixers connected to DSPP pipe and WB path. It should
also have control layer register access to read
the current layer mixer configuration.

Change-Id: If2cc86c2e6f470e090746a400b16cb540948c3e9
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
msm: mdss: fix pp setup on SSPP pipe in rotation scenario

mfd is not updated on controller when pipe is setup
for rotation scenario. However, post processing module
check it for all use cases that leads to pp update
failure SSPP pipe. This change avoids the extra checking
and allows pp module to update SSPP pipe in all use
case scenarios.

Change-Id: I8718e67ca49067c9af7b492da7cdb1344e826389
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
msm: mdss: Fix DTM state entry check in pp module

DTM state should be updated if framebuffer structure
is accessible for the pipe. Wrong check fails the
DTM state update and does not provide an exclusive
access to PP blocks on SSPP.

Change-Id: I170182c2d59c5f09d1cb911f61f3e0a1af91b067
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
msm: mdss: distinguish between mdp and dsi bus votes

For DSI read or write commands, they will also go through
axi bus.  Earlier, we were only voting for the mdp bus bandwidth.
In the case where the mdp bus bandwidth vote is 0 and there is
a DSI transaction, it will result in DSI hang.

Change-Id: Iafd9e06ae2050665392c6c74fece8f20cb6d44b1
Signed-off-by: Xiaoming Zhou <zhoux@codeaurora.org>
msm: mdss: enable MRPS command for short read commands

Currently, we specify the size of payload that the panel needs
to send back via the MRPS command only for DCS/Generic long
read commands. Enable the MRPS command to be sent for short
commands also based on the return length of the payload expected.

Change-Id: I634a8e5d12a8ea8d0a8118f360aef27610b21c9c
Signed-off-by: Padmanabhan Komanduru <pkomandu@codeaurora.org>
msm: mdss: Avoid unclocked register access with dsi_event_thread

In the case when ESD status check fails with DSI ACK
errors, there is a chance of unclocked register access when
DSI_INTR_CTRL register is being set.

Change-Id: I629b4ec642a86369b6ed693bdc6f8b4260ec1f5d
Signed-off-by: Vineet Bajaj <vbajaj@codeaurora.org>
msm: mdss: Turn off backlight while power off

Turn off the backlight while shut down panel as it
could show white flicker depending on the panel.

Change-Id: Ic5d4e97e70c87e5b6e956e27a766136610d6f345
Signed-off-by: Shuo Yan <shuoy@codeaurora.org>
msm: mdss: add error check for iommu attach API

Iommu device attach api returns error code if it fails.
MDP driver will check this error code and fall back to
recovery path if device attach fails.

Change-Id: I2b9d2d3aa16bc814739e466e9fc5a2c51c7b2b4b
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
Signed-off-by: Vineet Bajaj <vbajaj@codeaurora.org>

Conflicts:
	drivers/video/msm/mdss/mdss_mdp_overlay.c
msm: mdss: Dynamic FPS using VFP.

Using Fixed fps and v_total for BW calculations, it
results in underrun if dynamic fps and v_total is used.
Dynamic FPS change should be Mutex protected for
synchronization between read/write so that multiple
processes don't change fps at the same time. Line
count should be checked to make sure we have sufficient
lines before we start programming FPS. Do not configure
new fps when vsync timeout happens. Add support for
FIFO empty recovery.

CRs-Fixed: 651333

Change-Id: Icff48a7f85755484a321f0de26d4816f895c367e
Signed-off-by: Justin Philip <jphili@codeaurora.org>
Signed-off-by: Nirmal Abraham <nabrah@codeaurora.org>

Conflicts:
	drivers/video/msm/mdss/mdss_dsi.c
	drivers/video/msm/mdss/mdss_dsi_host.c
msm: mdss: IOMMU ref count implementation

Currently MDP is attaching/detaching iommu based on
bus bandwidth requests. This can lead to performance
issues, so implement ref count on iommu such that
iommu is attached where needed.

Change-Id: Ic4d35e2dc7f83291d1ab93d3e0109a2d69c98844
Signed-off-by: Jayant Shekhar <jshekhar@codeaurora.org>
Signed-off-by: Vineet Bajaj <vbajaj@codeaurora.org>

Conflicts:
	drivers/video/msm/mdss/mdss_mdp.c
msm: mdss: add tracing events in mdss driver

Add tracing points in key points in driver.

Change-Id: Ie31e27be4890e2e7cd573c00dbf3f66fa9c62060
Signed-off-by: Adrian Salido-Moreno <adrianm@codeaurora.org>
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
Signed-off-by: Vineet Bajaj <vbajaj@codeaurora.org>

Conflicts:
	drivers/video/msm/mdss/mdss_mdp_ctl.c
	drivers/video/msm/mdss/mdss_mdp_intf_video.c
msm: mdss add bw related events for command mode panels

Add events to observe when bandwidth is requested,
when bandwidth is needed and when bandwidth is released
for command mode panels.

Change-Id: I56b8ce28683696bee50e9cd10351076c49e4a84c
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
Signed-off-by: Vineet Bajaj <vbajaj@codeaurora.org>

Conflicts:
	drivers/video/msm/mdss/mdss_mdp_intf_cmd.c
msm: mdss: add systrace begin/end trace events

Adding trace points for systrace at various points in
the driver.

Change-Id: I4783fd2982bddb7f111de9e064bcaff153eb1ce1
Signed-off-by: Adrian Salido-Moreno <adrianm@codeaurora.org>
Signed-off-by: Vineet Bajaj <vbajaj@codeaurora.org>

Conflicts:
	drivers/video/msm/mdss/mdss_mdp_ctl.c
msm: mdss: Check null-pointer dereferencing and buffer overflows

Add checks before possible null-pointer dereferencing. Add checks to
prevent buffer out-of-bounds access.

Change-Id: I17419c82654c4ad2d18c7f88e34447cf333450bb
Signed-off-by: Mathew Karimpanal <kjmathew@codeaurora.org>
Signed-off-by: Beeresh Gopal <gbeeresh@codeaurora.org>
msm: mdss: Check ctl power on status before BTA status check

Control path power on status should be checked before BTA status
check else command sending failure and IOMMU page faults during
bootup can be observed if ESD is enabled for device. Currently
IOMMU is not powered on when commands are being sent.

Change-Id: Ice66f38e79755eb14843fc63afe058e4bab2f0e2
Signed-off-by: Jayant Shekhar <jshekhar@codeaurora.org>
msm: mdss: Wait for vsync before iommu attach during cont splash

During first borderfill commit in splash cleanup, wait for vsync
before iommu attach to prevent IOMMU page faults during bootup.

Change-Id: I68b7162d090513b082cbd4c0013731cedc0ebdbe
Signed-off-by: Jayant Shekhar <jshekhar@codeaurora.org>
Signed-off-by: Vineet Bajaj <vbajaj@codeaurora.org>