msm: mdss: Add commit handler to writeback display

Add support for a "vsync handler" for writeback displays to be able to
schedule tasks to be run as soon as the frame has completed.

Change-Id: I8c6945a6e914e307de67b2ec6df25f4509a50da7
Signed-off-by: Carl Vanderlip <carlv@codeaurora.org>
Signed-off-by: Sree Sesha Aravind Vadrevu <svadrevu@codeaurora.org>
Signed-off-by: Pravin Tamkhane <pravint@codeaurora.org>
Signed-off-by: Ping Li <quicpingli@codeaurora.org>
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
msm: mdss: Call wait4comp after commit for wb intf

Writeback path uses the comp event allocated on
stack to wait for ISR done. It crashes if
ISR tries to set the comp event after kickoff
thread timeout. This change removes the comp
event usage for writeback interface and starts
to use the wait4comp API like video/command
mode interfaces.

CRs-fixed: 555036
Change-Id: I74994a0cbe4039c6d3d4a51d573d343751182bff
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
msm: mdss: increase height constraints for panel resolution

MDP is able to support higher resolution and is only limited in height
by the MDP clock rate. There is already check in place for the MDP clock
requirement, however need to update phase step calculation to handle
proper overflow conditions for these higher resolution according to
hardware constraints based on potential overflow while scaling with some
phase steps. At the same time hardware is able to handle some conditions
that are currently failed, so enable these to allow more cases that can
go through MDP.

Change-Id: I4c5a569e115302f05db7c525c0f8a76ed1738521
Signed-off-by: Adrian Salido-Moreno <adrianm@codeaurora.org>
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
mdss: display: Add support for dynamic FPS

Add sysfs entry for dynamic FPS update mode. Add support to
change FPS in the following scenarios:
1. Store the FPS and change the clocks only when Suspend/resume
   happens. This is the default configuration.
2. Change the FPS immediately by updating the clocks. Video
   mode engine is disabled and then enabled when clock rate
   is updated.

CRs-Fixed: 488453
Change-Id: I1722d54d9fbfdfbd7d22e02d8776a0f60dc86141
Signed-off-by: Chandan Uddaraju <chandanu@codeaurora.org>
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
msm: mdss: Fix DSI event handler for dynamic FPS configuration

Commit 1c3fce18 introduced a bug which resulted in the dynamic
fps configuration function being called in response to the
command list kickoff event. This results in incorrect failure
logs getting printed whenever DSI operates in command mode.

CRs-Fixed: 565171
Change-Id: I57359f624c2d6ddaa1a4c2fd7a5946ce9112ca16
Signed-off-by: Aravind Venkateswaran <aravindh@codeaurora.org>
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
msm: mdss: fb: Copy & send unsigned value for notify update

Copy unsigned long from userspace and modify the data fields
before copying back unsigned long data to userspace. This
keeps the datatypes of all operands homogeneous without
data leaks from kernel to user space.

CRs-Fixed: 526286
Change-Id: Ie4673563170c3459019dd6a5f1f55376f6e560c7
Signed-off-by: Krishna Chaitanya Parimi <cparimi@codeaurora.org>
Signed-off-by: Manoj Rao <manojraj@codeaurora.org>
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
msm:mdss: Add support for show blank sysfs entry

Currently there is no support for show blank sysfs entry
in mdss. Hence, added this entry to check if panel is
power on or off.

Change-Id: Ifa50bf373590556f88b8f8196353dffefe2d2559
Signed-off-by: Jayant Shekhar <jshekhar@codeaurora.org>
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
msm: mdss: delay freeing buffers for additional vsync

There are cases where if commit happens very close to vsync or in other
uncommon conditions, where MDP will continue fetching from old buffer
address when unmap of the buffer happens. In order to avoid such
scenarios keep a reference of buffers for an additional commit before
unmapping to avoid potential iommu page fault.

Change-Id: Ied61b4851e2d410d71360ad0c119ef21009f91a1
Signed-off-by: Adrian Salido-Moreno <adrianm@codeaurora.org>
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
msm: mdss: Fix mdss_dsi_cmd_mdp_busy timeout error

Make MDSS clock ON before sending DCS command  to fix
mdss_dsi_cmd_mdp_busy timeout error.

Change-Id: I78a5931715f7a8803af77cd43c6191c225bcecd8
Signed-off-by: Pawan Kumar <pavaku@codeaurora.org>
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
msm: mdss: push wait for fences and ping pong done as late as possible

All the configuration up until MDP flush is double buffered. This means
we are able to do all hardware programming without settings taking
effect until flush happens. Perform all programming, wait for fences
and wait for previous frame is done just before the flush in order to
reduce the time between last frame done and kickoff of next one.

Change-Id: I1fd0c7a65309a3b148c8efef61819bfe9a248f29
Signed-off-by: Adrian Salido-Moreno <adrianm@codeaurora.org>
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>
msm: mdss: Modify SMP requirement for BWC decompression

BWC SMP buffer allocations are different from BWC fetch strides.
The Detile write of BWC is segmented into 16 algined segments for
every line buffer. This has to be taken into account and based on the
format the buffers need to be channeled.

Change-Id: I168014709bd81bfb189ce8cb3d1224f911838ba7
Signed-off-by: Sree Sesha Aravind Vadrevu <svadrevu@codeaurora.org>
Signed-off-by: franciscofranco <franciscofranco.1990@gmail.com>