In the existing implementation, display driver assumes only one pipe
can be staged on a layer mixer during overlay handoff. Starting from
MDSS v1.03, layer mixer can support two pipes staged at the same stage.
This change handles the case for two pipes on layer mixer at same
staging level. If more than two pipes are staged on a layer mixer, it
is invalid.
Change-Id: Ie6fa42e7a5b555de53fc4a3801e89447c3b1f90f
Signed-off-by: Jeevan Shriram <jshriram@codeaurora.org>
Exit cleanly in the case of failure in writeback driver
to support probe defer scenarios.
Change-Id: I8c8b5099ea649e98b99093cf8b9c3a06d55f8b57
Signed-off-by: Casey Piper <cpiper@codeaurora.org>
Some tools like MMI need know whether panel is working
correctly or not, so add a panel_status node in sysfs.
Signed-off-by: Ray Zhang <rayz@codeaurora.org>
Change-Id: I2f5da3c850f83230476f0cd66f2bf11b9234ed32
While turning off autorefresh feature, there are some frames
that do not get transmitted causing timeouts. This change gracefully
exits autorefresh feature while new frames are pushed.
Crs-Fixed: 773221
Change-Id: I66ecf13133723ff5fad465755d50c6eb1ec0e52a
Signed-off-by: Siddhartha Agrawal <agrawals@codeaurora.org>
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>
Use ctl mutex offlock to synchronize between control
stop and BTA ESD status check function to prevent any
race condition.
Change-Id: I841e03a066b6e9e193ba9c6deae20d5527d4a20f
Signed-off-by: Jayant Shekhar <jshekhar@codeaurora.org>
During DSI data lane recovery sequence, we poll on the MDP line
count to enter the active region before performing the DSI
recovery operation. Sometimes, the overflow error can occur just
when the display enters suspend state. This causes the DSI
event thread to enter a continuous while loop causing watchdog
kill due to kernel logs flooded with the below error.
mdss_mdp_video_intf_recovery: line count is less. line_cnt = 0
Avoid check for the line count in such cases.
Change-Id: I4159ae639edc9b0e2cd0f09b97ba6fbd640737d4
Signed-off-by: Padmanabhan Komanduru <pkomandu@codeaurora.org>
When transitioning from LP3 power state to LP2 power state, reset
the flag to indicate that the interface is active again and can accept
updates. This ensures that all the interface clocks are correctly turned
back during the subsequent display update.
Change-Id: Ia3e90a5e9da7432529a9dd5ca3c5690b8d6c2af0
Signed-off-by: Aravind Venkateswaran <aravindh@codeaurora.org>
For command mode panels, current code configures the HW
to transfer a frame and returns the commit context
without waiting for transfer to finish. As an example,
after kicking off frame N transfer, commit context doesn't
wait for Frame N's transfer to finish. By doing so, it
allows SW to configure/queue frame (N+1) and improves the
performance. But before frame (N+1) is kicked off, SW needs
to make sure that frame N is finished otherwise it may lead
to tearing and/or unknown behavior. This is achieved by
calling wait4pingpong routine. But this optimization has a
side effect when debugging critical issues. If for some
reason, frame N had a bad HW configuration and it had
HW hang then wait4pingpong during frame (N+1) will timeout.
This timeout will lead to HW register dumps but this
register dump is related frame (N+1) and not frame N.
This gives incorrect debug information. To overcome this
side effect, allow wait4pingpong's timing to change using
debugfs.
Setting this node to true will make the driver
to run this processing in a synchronous way,
setting it to false will return the driver to
normal asynchronous operation:
echo 1 > /<debugfs>/mdp/serialize_wait4pp -> sync
echo 0 > /<debugfs>/mdp/serialize_wait4pp -> async (default)
Change-Id: Ief25232b65cf3dfec7c2147120dac57d0f54d22f
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
[cip@codeaurora.org: Use debugfs_create_u32 for wait4pp]
Signed-off-by: Clarence Ip <cip@codeaurora.org>
Add support to initiate the dump from a work item
so the driver can dump from an interrupt context.
Change-Id: I51a9719884c826713cc4c9abe926205eaac4d721
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
Add gamma correction support in mdp3 driver via
MSMFB_MDP_PP ioctl. The ioctl has been extended to
program luts corresponding to histogram based
outputs and gamma correction based on flag.
The gain corresponding to gamma correction and
the histogram based output are combined in driver
and applied to hardware.
Change-Id: Ie875b4a9f4f4c752ad9a811ad68aff1c5110d57b
Signed-off-by: Krishna Chaitanya Parimi <cparimi@codeaurora.org>
MDP3 LUT programming has incorrect RGB order as per HW. The
correct order is to have color0 for green, color1 for red
and color2 for blue. Correcting color order in mdp3.
Change-Id: Ie7b6ab7f83e18495e83a05102e288fee6841e3ab
Signed-off-by: Krishna Chaitanya Parimi <cparimi@codeaurora.org>
Fix ret value for error case in framebuffer
allocation api and use integer instead of
unsigned int for sscanf api.
CRs-fixed: 790640
Change-Id: Ib7fa217334365b8194571e220740a769597636e0
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
For the new versioned PP framework with config payload pointers,
the Disable operation should be highest priority and allow a
feature to be disabled without requiring a config payload. Gamut
Mapping had no check to see if Disable operation was present before
throwing error for a NULL payload. Now, Disable op is checked first.
Change-Id: Ia644316dcd8f86d6f85b06f4a8aed99873c54e4d
Signed-off-by: Benet Clark <benetc@codeaurora.org>
The table size definition was incorrectly defined previously, which
caused the Gamut Mapping tables to be missing values. The table size
definition has been redefined, in order to include the missing values.
Change-Id: I0adf546c52c40f7a251f3aa977864ba116822d93
Signed-off-by: Benet Clark <benetc@codeaurora.org>
Clamp control enable register is different on 8996 target.
Update DSI software to handle it based on DSI version.
Change-Id: Iac61ac0a03397633154d2fe1bf44bcaaeeab1c52
Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
Fix chroma plane size requirement for bit stream and meta data
for NV12 ubwc format.
Change-Id: Icae966ea296cc34673492d7adae0094303e92a0d
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
This header file is required by userspace components for compilation.
Signed-off-by: Ian Maund <imaund@codeaurora.org>
[cip@codeaurora.org: Resolved merge conflict]
Signed-off-by: Clarence Ip <cip@codeaurora.org>
smmu v1 is not supported in 3.18. Remove smmu v1 specific
changes in display.
Change-Id: I9deb060b6d3539acb9ee4b3fa05f491e0fc1db43
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
[cip@codeaurora.org: Resolved merge conflict]
Signed-off-by: Clarence Ip <cip@codeaurora.org>
When open session is called, input and output format validation takes
place. In order to properly validate, we need to know if the session
contains rotation. This rotation information is passed using the flag.
Change-Id: Ie8bf4c6639aa0d671ac044a2581132bc97b68242
Signed-off-by: Terence Hampson <thampson@codeaurora.org>
Value will be used to validate and identify which rotator
session request item is a part of.
Change-Id: Id62719c4d37c9a2f690cb57fa1ca2826310d1da8
Signed-off-by: Terence Hampson <thampson@codeaurora.org>
Change rot_180 and rot_270 flags to be a combination of few other
flags, as those would summarize the respective operation. This
would adhere more to how hardware behaves and also allows more
combinations.
Change-Id: Ib8e6e9e01710b773284e3ec496c689b8d786502c
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
Define the new rotation API for the mdss rotation driver.
Change-Id: Ief25e7e6c7716db8183cb49e41cbd447b7cdfbfc
Signed-off-by: Xiaoming Zhou <zhoux@codeaurora.org>
Fast forward msm_mdp.h file for 3.14 kernel upgrade. Commit
history is not essential for future debugging.
Change-Id: Id9525ef3361c7f73b5c341a29e7a3e91b8037fa7
Signed-off-by: Terence Hampson <thampson@codeaurora.org>
Use appropriate SOC name. Also replace all
instances of thulia with kryo.
Change-Id: I3d21e3534fdf113190882c84ee5426ee929da131
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
[cip@codeaurora.org: Always build mdss_mdp_pp_v1_7.c]
Signed-off-by: Clarence Ip <cip@codeaurora.org>
Current xlog dumps the entire registers ranges
mapped in memory. This entire range can be
reduced to only the meaningful offsets to help in
debugging and avoid overflows in the debug buffers.
This change adds support to only dump the registers
ranges specified.
Change-Id: Iecf7f5eaa909b0365ea599ae094c7f184c0ae8b8
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
(cherry picked from commit 899cf5dbc528b13bd488038215356c5bea5b591c)
[veeras@codeaurora.org: Resolve merge conflict in mdss_dsi.c]
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
reg dump func is specifically used by xlog, so it should be static in
xlog file.
Change-Id: I14570e174b215d7ea5f77f0b333f65956b549222
Signed-off-by: Huaibin Yang <huaibiny@codeaurora.org>
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
Update obsolete mdss block names to new ones for xlog register dump.
Change-Id: Iae8859c42df45577bfccd5a939669742f8395ca2
Signed-off-by: Huaibin Yang <huaibiny@codeaurora.org>
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
When MDSS_XLOG_DBG entries are inserted into code, these entries are
always logged regardless enable status. This helps use xlog in quick
debugging and none of these entries should be merged.
Change-Id: Iebcf6cb7fc32bc77281e2f02a354f35357ff6d88
Signed-off-by: Huaibin Yang <huaibiny@codeaurora.org>
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
Add iommu xlog flags and handlers. MDSS_XLOG_IOMMU is dedicated to
iommu issues. The fault handler, if installed, dumps mdp registers to
ram, dump xlog entries to kernel log and panic the system.
Change-Id: I7d703c5958104fb3dc2c30a7fc1e59508c8d0ca3
Signed-off-by: Huaibin Yang <huaibiny@codeaurora.org>
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
(cherry picked from commit a3cfbff0abb7ff9f906df76a7ff68007d7f1fc3f)
[veeras@codeaurora.org: Resolve merge conflict in mdss_mdp.c]
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
xlog entries may be called before debugfs nodes are created, so
spinlock intitialization should be done during compile time.
Use ktime APIs to avoid other crashes during early boot time.
Change-Id: I5dc8e066b56d26934fd4c324c03e5f1ec3b4a6f3
Signed-off-by: Huaibin Yang <huaibiny@codeaurora.org>
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
Make overall dump facility more reliable and more useable for
debugging: write xlog info to stdout; only un-logged and un-dumped
entries will be dumped out each dump; add func line number, pid and
time stamp difference for each entry; add index for each entry dump.
Format of the log is as follows:
name:line=>[entry:timestamp:delta][pid]:params
Where:
name: Name of the caller function
line: Line in the source file
entry: Index in the circular buffer
timestamp: time when log was taken
delta: time difference with previous log
pid: process id
params: parameters used to log information
(these are specific to each log)
Change-Id: I32853ef7e27cc8ac34775ff492d60c801df61dba
Signed-off-by: Huaibin Yang <huaibiny@codeaurora.org>
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
[cip@codeaurora.org: Use debugfs_create_u32 for xlog panic]
Signed-off-by: Clarence Ip <cip@codeaurora.org>
For 8994, dsi clock lane may get stuck at hs mode. It
needs manual control of clock lane to avoid it.
Force clock lane to HS mode before kick off and clear
it after completion.
CRs-Fixed: 774612
Change-Id: I8182489d2d5eaf041b4869af71155378dd3aea99
Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
(cherry picked from commit 5d9e1ace6123d8f5a1ac8f0eb62e9fd8c841d5f8)
[veeras@codeaurora.org: Resolve merge conflict in mdss_dsi_host.c]
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
When horizontal line time of BLLP is too short to finish
sending dcs command packet, overflow error is reported
mistakenly. The remaining packet data will get transmitted
at next line. Therefore this overflow error can be ignored.
CRs-Fixed: 769898
Change-Id: I2239bd6bf432a1144f0f5b65bf1d82127dd4cfff
Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
xlog buffer helps capture debug events, however, due to its small
size, one set of xlogs cannot solve all problems. It would be helpful
that when a specific issue happens, only one set of xlogs specific to
that particular issue is dumped and other irrelevant events can be
ignored. Accordingly different event handlers can be registered as
well for different issues.
echo 0x00 > <debugfs>/mdp/xlog/enable -> disable
echo 0x01 > <debugfs>/mdp/xlog/enable -> enable default xlogs
echo 0x80 > <debugfs>/mdp/xlog/enable -> enable all xlogs
echo 0xff > <debugfs>/mdp/xlog/enable -> enable xlogs regardless flags
Change-Id: Id1bf2a6f2009afdc63d74add652ce2722a3173a4
Signed-off-by: Huaibin Yang <huaibiny@codeaurora.org>
debug_log is an unnecessary global structure that is actually only
related to xlog debugfs nodes. Those variables that control xlog
behaviors should be in the local xlog file.
Change-Id: I8e2a37e72d849b09e5c8afb8b2170adf9516e215
Signed-off-by: Huaibin Yang <huaibiny@codeaurora.org>
Due to wrong base io address, ldo_cntrl is not properly
configured. Fix this bug to get suspend/resume working.
Change-Id: I708d645f33a05a0bf8d68be0909c43fc628d293e
Signed-off-by: Huaibin Yang <huaibiny@codeaurora.org>
In order to avoid multiple mappings of same buffer handle, we check for
any existing handles that are already mapped within writeback. However
current checks are based on file descriptors, and these may be reused
for a new buffer handle, and in turn we end up having wrong assumptions
of the actual queued buffer while performing the writeback commit.
Fix this by getting the actual ion handle mapped to the file descriptor
and look for this handle instead.
Change-Id: Ib800dc4000ce8353ed16c7e779cda21644696ec8
Signed-off-by: Adrian Salido-Moreno <adrianm@codeaurora.org>
Adding notify update init and notify update deinit calls which
ought to be called when the notify update thread is being
started and exited in userspace. The need for these is to ensure
that during exit sequence of the notify update thread there is
minimal wait due to ioctl being blocked in driver. The wait
completions will not be reset if deinit has been called and will
need an init call for them to start working. So when we are
exiting the notify update thread, any block that might happen
due to either a concurrent or a later notify update call is now
handled properly so that the block is either returned early or
is not allowed respectively.
Change-Id: I8212bf058285f5929ebc85d41d6bb12b50e388d9
Signed-off-by: Krishna Chaitanya Parimi <cparimi@codeaurora.org>
Use FB_BLANK_NORMAL flag for LP1 power mode and FB_BLANK_VSYNC_SUSPEND
flag for LP2 power mode. This better aligns with the definition of
these power modes since display updates are suspended in LP2 power
mode while updates can still occur in LP1 power mode.
Change-Id: Ica132e38dd1d0bb96368a1bbb51143100f0352cc
Signed-off-by: Aravind Venkateswaran <aravindh@codeaurora.org>
Add cmd_mutex when doing s/w triggered BTA to make sure this operation
does not race with DCS commands.
Change-Id: I888e06a8175691938aebc7a51c2c693d582ce23d
Signed-off-by: Huaibin Yang <huaibiny@codeaurora.org>
Set TMDS_BIT_CLOCK_RATIO bit in the SCDC port based on the bit rate
for the current mode. This bit has to be set before the TMDS clock is
turned on.
Change-Id: I315e00a032a1465974431e09ed2918ff353cb6de
Signed-off-by: Vinu Deokaran <vinud@codeaurora.org>
Signed-off-by: Casey Piper <cpiper@codeaurora.org>
When source split is enabled, a layer mixer can have two pipes staged
on a same z_order, or stage. To support this, pipe on the right side of
the blending is recognized as right_blend. Current validate ioctl path
is missing implementation for this use-case which is causing unexpected
behaviour when source split is enabled. Fix this by bringing a logic to
identify pipe as a right blend.
Change-Id: Ia117afbad993d9d60f28f1ea6641b780ba866783
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>
Invalid port calculation is causing wrong ab/ib
vote on rt(RealTime) and nrt(NonRealTime) clients.
This change fixes it and provides correct ab/ib
vote for nrt clients.
Change-Id: I6b7f63721237b63fa12457b96e47852913597d9f
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
Invalid stride, format configuration and destination configuration
causes corruption for RGB565 and RGBA8888 UBWC format at
input and output level. This change fixes them for input path
and output path.
Change-Id: I77cc20409bbb7c95fd0f3bdac9e61b305fddc811
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
Assertive display calibration mode can co-exist with MDP based
post-processing features, only the backlight changes need to be
blocked when AD calibration mode is enabled.
Change-Id: I9c2932e4fa305a9d53cb4dcca11b877f298b4a23
Signed-off-by: Ping Li <pingli@codeaurora.org>
HW problem where panic was being asserted
continuously when BWC was enabled and causing
CPU throttling is fixed in thulium, so this
patch disables BWC workaround for this target.
Change-Id: Ie418dcfb75c6af06f3cdfe530da7d78e5d6c8ca8
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
Program CDP for thulium target as per
recommendation. This disables CDP on source
pipe and WB block when used in rotation
operations for v1.
Change-Id: Ia77f80d15033b20edd64e73f6fe98467aabb88f1
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>