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>
For the ab calculation, add the overhead
and compression factors for the bandwidth vote.
Change-Id: Id1cb8d7c12e24d7c4dcce145ce0ca00e4966049c
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
Adjust ib vote to calculate it as the maximum
per-pipe bandwidth of the real time clients.
Change-Id: I1596b7dd8e1304985ac3ab49581d9083c64a2b9d
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
Currently the HDCP enabling logic checks only to see if HDCP 1.4 is
available. Added support for also checking to see if HDCP 2.2 is available
and enable HDCP encryption if either 1.4 or 2.2 is available.
Change-Id: I84c87ac6cb52025dbab28f2a99c4787bd75ce7bf
Signed-off-by: Alhad Purnapatre <alhadp@codeaurora.org>
As per current implementation, every successful OVERLAY_SET IOCTL should
return destination format for that request. Now there is a driver based
optimization where if back to back OVERLAY_SET IOCTLs request same
configurations then driver avoids extra register writes. However this
optimization doesn't return correct destination format which violates the
IOCTL spec and may result in inefficiencies. Fix this by returning correct
destination format for this optimization.
Change-Id: I792e2f44f17bceb1efc7b1d389db84478581c474
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>
Current rotator driver allows more sessions than actual number of rotator
hardware. This requires virtualization when number of active sessions are
greater than number of rotators. In the current implementation,
synchronization bug is getting exposed if one rotator has two or more
sessions, all these sessions are actively using shared rotator in
interleave fashion and one of the session is using optimized path where
back to back configuration is same. This leads to unexpected results and
device hang. Fix this by maintaining proper ownership and hand-off when
one session is finished using given rotator and other one picks up.
Change-Id: I1f2e7376a01f248d11253bf5b6153ab236f07b19
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>
Separate the per pipe mdp clock calculation from
the bandwidth calculation within the function
that computes the pipe performance.
Change-Id: I40cb9c786bf32523cbc5982a494e439f586cc43f
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
Prior to parsing mdp ctl info we need to parse wfd mode.
When wfd mode is shared we create a virtual ctl within
mdss_mdp_ctl_addr_setup. The default value for wfd is shared;
So we are always creating virtual ctl. If wfd is in fact
not shared the value was updated afterwards and the virtual
ctl never is used.
Change-Id: Ie24f224c9ea9bed1704e8688e97bf61c022ae9fa
Signed-off-by: Terence Hampson <thampson@codeaurora.org>
Starting in MDPv1.7, configuration of the panic signal
is per pipe. This needs some specific luts to be
programmed on each pipe. Adding support to configure
these luts, which are enabled and tuned through
device tree.
Change-Id: I8af08e8458f8136e9767ccfea27489ce2976a437
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
QFPROM offsets have changed on targets with
new HDMI core. Check for the version and
update the offsets respectively.
Change-Id: Ie017571c9291a060c5911b4ba3bc5399d2317c01
Signed-off-by: Casey Piper <cpiper@codeaurora.org>
This change adds support to set the qos lut
for each real time and non real time rotator
read clients.
Qos lut is configurable through dtsi, so it
can be adjusted per chipset.
Change-Id: I423265032c4a618039cdcfdad0a1f963f45ae5c6
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
Get the panel backlight info from the correct bl_mfd.
Change-Id: Icc4568eb4ae9f4091f7ccf5f60e97bfd7f745420
Signed-off-by: Ping Li <pingli@codeaurora.org>
Previously, any backlight change to panel will trigger assertive
display (AD) feature to conduct screen refresh calls. This will
trigger unnecessary screen refresh if AD is enabled together with
CABL feature. This change modifies the backlight notification
mechanism to notify AD only when the Android brightness level
is changed.
Change-Id: I5647269b9651d3a17d896e4047f01b7a244581a4
Signed-off-by: Ping Li <pingli@codeaurora.org>
When the VIG source side pipes are reconfigured from YUV to RGB data,
the sharpening/smoothing QSEED block is sometimes still enabled, but
it is only allowed for YUV data. This change adds a specific check if
the source format is YUV before proceeding with sharpening/smoothing
enable.
Change-Id: I5ba39f6910bb41eaed898726c9c1419699371784
Signed-off-by: Benet Clark <benetc@codeaurora.org>
During the pipe setup function, we copy any PP related parameters from
userspace to the pipe cache. We currently do not clear the cache
beforehand. In cases where the pipe is being reconfigured, stale, invalid
values might still be present in the cache since the last time the pipe
was configured. These values need to be cleared before accepting a new
config.
Change-Id: I0d9a51052bb738f599f386d39cb9de5509aae7ac
Signed-off-by: Benet Clark <benetc@codeaurora.org>
Writeback uses rotation smmu on thulium target for buffer
mapping. Selecting wrong context bank is leading to
writeback failure on this target. This change fixes the
context bank selection for writeback use cases.
Change-Id: I23369bb43cc3fd05457fb003ee58bba21eeaa192
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
Initialize the return value before using or returning to user space
to avoid returning uninitialised values to user space.
Change-Id: Iac43744830d725cf69120603befc3e4dd758d031
Signed-off-by: Ping Li <pingli@codeaurora.org>
When there is no data available for pixel extensions from user end,
calculate software pixel extensions with zero initial phase.
Change-Id: I8876b27e4265b39374d5520684028aaaf005d7e8
Signed-off-by: Jeevan Shriram <jshriram@codeaurora.org>
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
mmagic ahb clock vote is handled through bus driver
on thulium target. Any module which uses AHB clock
has to add its vote on mmagic ahb clock. This
change adds this vote for MDP, DSI, SMMU and
HDMI modules.
Change-Id: Ibd8d7e7396f26dc13a0b7700c01c3d3dba839ae4
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
Invalid input/output format error checks in rotator module
is causing rotation request failure or wrong error message
print. This change fixes such invalid checks in rotator
module.
Change-Id: I0f5f19b65c6017dd16deaa09715d29335e551b01
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
MDP, DSI, HDMI and PLL modules turn on mdp gdsc independently.
It is illegal to turn on mdp gdsc without turning on mmagic
gdsc on thulium target. This change adds mmagic vote
for these modules.
Change-Id: I765fcc42477b9e46d0da48cb0cf5b298f58b7815
[veeras@codeaurora.org: As part of 3.18 upgrade,
remove msmthulium-mdss-pll.dtsi, msmthulium-mdss.dtsi changes
from this gerit]
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
Fix NV12 UBWC buffer support by setting YUV format
bit in format register and correct plane address.
Change-Id: I013e0855ae6c2f990d0d5d6386b9949f475c0ad1
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
This reverts commit 37eb5c3f566e8fe554815b45e58b1992730f3e38.
Storing UBWC planes in UBWC buffer format configures the
wrong stride for meta planes and bitstream planes. It also
tries to set the buffer address on each data_check call. This
sets invalid Y bitstream address.
Change-Id: I8e91f25a22ed9db278d7a334c4732d709566a32a
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
CEA-861-F specification defines new video formats which are supported in
the hdmi 2.0 specification.
Change-Id: I5bf017835ea7c5e472e91c0d663f6f0083a87854
Signed-off-by: Vinu Deokaran <vinud@codeaurora.org>
During split display case, the 2nd dsi ctrl's phy/pll registers are
programmed at same time as 1st ctrl programmed since both controller
share pll0. Therefore they have to be reset at same time also.
Change-Id: Ifb2007c4efd619cd5f08a0fc64fd66f22d62efcd
Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>