During rapid suspend/resume usecases assertive display is being turned
on with backlight level zero. When on command is received with backlight
level zero driver bails out with out turning on AD and doesn't signal
the client that worker queue has stopped processing which results in a
timeout for on command. Change will ensure that client is signalled if
driver is skipping the processing of AD due to backlight being zero.
Change-Id: Iaa6229f10ce54f44ec64c175f67ef7584ad4c8b2
Signed-off-by: Gopikrishnaiah Anandan <agopik@codeaurora.org>
For bandwidth calculations, rotator driver needs
to know the compression ratio factors which
depends on the pixel format. This change adds
support to share this information between
user-space and rotator driver.
Change-Id: I6163317514328610a836c34fd9ca75c3e753b50f
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
The clk status register and vbif status based on xin-id
is used to check if pipes are idle. VBIF checks cannot be done
for cursor pipes as the same xin-id is shared between dsi, cursor0
and cursor1. Avoid vbif status check and fix clk status check for
cursor pipes.
Change-Id: I9e0a185beffd4e732c1b5dc61822cc94b3735a27
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
To assist with profiling and debugging, traces and additional
debugging logs have been added.
Change-Id: I39529dc52fe99de704268170a294bc4391ec2871
Signed-off-by: Terence Hampson <thampson@codeaurora.org>
Prior to this patch it was possible for rotator wq to write
to memory that had been freed in close session. Close
session now offloads the close work to wq if it still has not
completed the work.
Change-Id: I4b48071f930b912a098094d7de2b2081dac4c2e5
Signed-off-by: Terence Hampson <thampson@codeaurora.org>
When calculating the plane sizes the buffer height is what should
be passed into mdss_mdp_get_plane_sizes.
Change-Id: I3e4bab0fbfed1e2f34dbe757768a72c9a7916919
Signed-off-by: Terence Hampson <thampson@codeaurora.org>
When booting up in recovery mode, mmap is called without iommu attach.
This would result in device panic as iommu fails when buffer mapping is
done without attaching the respective iommu domain. Fix the issue by
delaying the mapping to a later point, during the commit.
Change-Id: Idbe4f6ca5557774b5add56c064ea6b05a67d530f
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
One of the condition checks in ad_input ioctl is to check the input
mode is not MDSS_AD_CALIB_MODE. The current code missed one pair
of brackets and made the check invalid. Correct the check to fix
the bug.
Change-Id: I82a083fe8a1bef6c57a01e20e02fdd14f8c09bde
Signed-off-by: Ping Li <pingli@codeaurora.org>
In the current implementation, as soon as the ping pong timeout
happens, driver dumps the relevant logs for debugging and panic.
It is possible to recover from this situation without panic by
performing MDSS control reset and panel write pointer reset. This
change tries to recover from pingpong timeout. If the recovery
is not successful for 10 consecutive frames, uevent is sent to
HAL layer for performing blank and unblank of display driver.
Change-Id: Iadc929a79a62bbf222b9022af5cf04f870079ded
Signed-off-by: Jeevan Shriram <jshriram@codeaurora.org>
When ESD related panel failures are detected, the recovery process
involves blanking and unblanking the panel. In such cases, it is
required to restore the backlight level as there may not be an explicit
call from the userspace to update the backlight.
Change-Id: Idd84a628cf2a1e37121b94d3c5cc11d45a78fdab
Signed-off-by: Aravind Venkateswaran <aravindh@codeaurora.org>
There are instances where the mdp wants to reset to full screen
especially during frame timeouts. Add event to s/w reset the dsi core
and reset the panel's ram write coordinates to full screen.
Change-Id: I43e5cb12126837330f3ed72386f87f5c7fabd2c0
Signed-off-by: Siddhartha Agrawal <agrawals@codeaurora.org>
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>
Signed-off-by: Naseer Ahmed <naseer@codeaurora.org>
Signed-off-by: Jeevan Shriram <jshriram@codeaurora.org>
When pingpong timeout is received, it could be due to some bad
configuration on MDP pipeline. In order to recover and have clean
HW for next frames, perform SW reset on the faulting ctl path. Also
make sure all the pipes in the bad configuration are halted
properly and does not have any residue transaction for the new
frames.
Conflicts:
drivers/video/msm/mdss/mdss_mdp_pipe.c
Change-Id: I9a6c6cb6d004fd65c24a7fefe7457ee68af9273a
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>
Signed-off-by: Naseer Ahmed <naseer@codeaurora.org>
Signed-off-by: Jeevan Shriram <jshriram@codeaurora.org>
Due to various reasons wait4pingpong timeout can be observed and
this usually results in split screen behaviour for the end user.
Split screen is manifested because for a given frame only half of
the pixel data was sent and then some kind of hang was observed.
So unless the panel and display pipeline is restarted, next frames
will start from the location where it hanged. Improve user behavior
by resetting the display pipeline including panel by sending panel
dead event to user-space. Upon receiving this event user-space should
issue blank and un-blank which should recover the display pipeline.
Change-Id: Iec674a61229cbc037d24cf4f62ceb02a977b219c
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>
Signed-off-by: Naseer Ahmed <naseer@codeaurora.org>
Signed-off-by: Jeevan Shriram <jshriram@codeaurora.org>
FrameBuffer driver is tracking each fb_open and fb_release
call with process id and file descriptor node. This is
duplicate logic to track single call. This change removes
process id based framebuffer driver call tracking to
reduce the complexity. File descriptor is different for
each call. That's the main reason for choosing it to
track the calls.
CRs-fixed: 716379
Change-Id: Ida1728d3878aeedf486bebef0f6f70c1e68d006e
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
Remove a redundant update of the output format when setting up
the AVI Infoframe content.
Change-Id: I065b310272c4b32dc9fafdd6e2d386cfa1952eac
Signed-off-by: Tatenda Chipeperekwa <tatendac@codeaurora.org>
Add xlog for ctl flush bit configuration and
non realtime vbif debug node.
Change-Id: Ife7790286e16291067da3b295ecc1d035bf71fd6
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
Calls to hist irq enable and disable are encompassed with a
spin_lock mdp_lock. This is not needed as all histogram irq
programming is independent of other MDP irq programming and
simultaneous access is restricted using hist intr lock. The
enable/disable irq calls made are further protected by one
mdss_lock spin_lock for preventing simultaneous access to
enable and disable of MDP irqs.
Change-Id: I2ec63e35fc3eca953e9ac21f7052c705656d899b
Signed-off-by: Krishna Chaitanya Parimi <cparimi@codeaurora.org>
Signed-off-by: Gopikrishnaiah Anandan <agopik@codeaurora.org>
This reverts commit 832b482b621b ("msm: mdss: handle mmagic mdss
axi clock for msm8996 target"). SMMU driver adds the vote for
mmagic mdss axi clock vote which will take care of MDP and
DSI use cases. No need to put vote from individual module.
Change-Id: I858f28eb88deb34a612050d913459e62cc0955a8
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
[cip@codeaurora.org: Removed msm8996-mdss.dtsi changes]
Signed-off-by: Clarence Ip <cip@codeaurora.org>
Replace dma_map_sg/unmap_sg with msm_dma_map_sg_lazy
/msm_dma_unmpa_sg to avoid buffer unmapping till
the time it is free.
Change-Id: I0559238301882a89d25f3cf99a60140c9e9c1bdf
Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
The rationale for open session is to accurately vote for bw and
clk rates based on configuration provided. Prior to this patch it
was possible to call open session with one configuration, but
provided an entirely different rotation configuration as work to
be completed.
Change-Id: I82c95c290cffa75ea7b09ea4a021e9e436782c06
Signed-off-by: Terence Hampson <thampson@codeaurora.org>
The width provided to mdss_mdp_get_plane_sizes, which is used for
calculate stride, was using destination region of interest
width instead of buffer image width.
Change-Id: Ib585999207860fc85adeb1a9b23a6ba31dc543e2
Signed-off-by: Terence Hampson <thampson@codeaurora.org>
For command mode panels current code calculations adjust the mdp
clock rate based on the minimum dsi pixel clock rate. This is
wrong and can lead to power issues since this rate considers
the blanking times which are not required for the mdp clock
calculations.
This change optimize the calculations by only considering the worst
width that could be processed by the mdp without blanking periods
and consider the time expected for the transfer by adjusting
the mdp clock in order to meet the performance requested; this
time can be tuned through the panel configuration.
Change-Id: Ib25df0e8f749d3ffc1d9059d5d7eac27e0f0b81e
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
Add sysfs node to allow audio HAL to acknowledge every connect/disconnect
event. This makes audio HAL and HDMI driver to be in sync with respect to
notifications and avoid any fast plug-in/out notification issues.
Change-Id: I13634bb0efb8222cdbd86afa6723781f682632b3
Signed-off-by: Ajay Singh Parmar <aparmar@codeaurora.org>
In order to handle different use-cases, mixer ROIs and/or dst_x
of a pipe is modified and re-adjusted. In one of these use-cases, when
source split is disabled, re-adjustment was missing causing HW hangs or
unexpected layer positions. Fix these adjustments.
Change-Id: I7cda887874aad97bca16b63ca5a9eac303fa63a4
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>
Fix missing assignment for the mdp ib bandwidth vote
calculation that was causing to skip the ib factor
and resulted in the wrong ib vote calculation.
Change-Id: I0289dc94040416e42543c192ad88ef246483c0d4
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
Adjust mdp bandwidth vote to meet the recommended
system settings for 8996.
Change-Id: I0901dc211fe8dac366e3602a45656aacc48683d3
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
[cip@codeaurora.org: Removed msm8996-mdss.dtsi file from change]
Signed-off-by: Clarence Ip <cip@codeaurora.org>
During blending operation, bottom color is known as border color and it
is same size as mixer dimensions. Default color is black but it can be
configured to different color. This is very useful for debugging purpose.
Add support to program border-color through debugfs as per following
guidelines.
echo code > <debugfs>/mdp/bordercolor/colorN
where
code: 12bit color value in decimal
colorN: color0, color1, color2
Change-Id: Ia3e8791713f5aa309a95c867445995ced028dd8d
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>
Starting with patch 2551ce16a5d44a3b03d0885b499924f6d218c78e, msm: mdss:
add async support for hw cursor, flush logic was modifed. However it
introduced an issue where if mixer configuration is skipped then
secondary flush is skipped. This can cause issues. Fix the flush logic
by ensuring that secondary flush is not skipped.
Change-Id: Iee8b9ca80353b2fdb096e64b12c865cd10f0dd08
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>
Fix 32bit compilation issues in DSI and HDMI pll driver.
Also avoid udelay of more than 2ms as it gives a fake
__bad_udelay reference at link-time on 32bit build.
Change-Id: I2681c0fb2a7d69ee8a3f9f6d18164c3cb482d2f7
Signed-off-by: Vishnuvardhan Prodduturi <vproddut@codeaurora.org>
Signed-off-by: Sandeep Panda <spanda@codeaurora.org>
Add support to bring up HDMI PLL on bridge chips with an external
1.8V supply by modifying the existing MSM8996v3 sequence.
Change-Id: I6c893f25e7bcf2900d0aa83d42ef314aab4b5746
Signed-off-by: Tatenda Chipeperekwa <tatendac@codeaurora.org>
[cip@codeaurora.org: Resolved merge conflicts]
Signed-off-by: Clarence Ip <cip@codeaurora.org>
Reset pll_verf_cfg1 to default value of 0x10 before pll
start for msm8996 based on hardware recommendation.
Change-Id: I95a89c18de4f7eb65a8ea0a8e4810560ddb0b44f
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
These PLL codes are stored in memory in bootloader, so that pll driver
can use these pre-calibrated values to lock to a new frequency when
dynamic refresh rate feature is enabled.
Change-Id: I527e03aa3efcb3904dd6057cd2e63356062436ca
Signed-off-by: Jeevan Shriram <jshriram@codeaurora.org>
Before completing SW calibration of HDMI PLL on
msm8996 v2, poll C READY register for an increased
period to ensure that we do not mistakenly perform
software calibration when it is not needed.
Change-Id: I7ec25665700ecf20b9fe2337eb01015b1e156b9b
Signed-off-by: Casey Piper <cpiper@codeaurora.org>
When using 4k resolutions at 60fps, the PLL
ready bit will take slightly longer than other
video modes. Increase the timeout value to
ensure that the PLL lock is successful. Also
modify the lane mode values to improve Shmoo
margin with low core voltage.
Change-Id: I9d65535b941e755fe706e4dd61cb357a7a62cdc2
Signed-off-by: Casey Piper <cpiper@codeaurora.org>
In the V3 revision of MSM8996, there is a different
recommended power on sequence. Update this sequence for
MSM8996V3 only with the new sequence and calculations.
Change-Id: I29612a3a4c9d148df61169c091015079ada6b41c
Signed-off-by: Casey Piper <cpiper@codeaurora.org>
Enable PLL resource only once in prepare. The current driver enables and
disables PLL resources multiple times during the course of prepare
routine.
Change-Id: I9fbf58e7e509dda55d8ec01ec7d305ccf1691f94
Signed-off-by: Vinu Deokaran <vinud@codeaurora.org>
DSI SSC enabled through dtsi. Both down spread and
center spread are supported. Default is down spread
when SSC enabled.
Change-Id: I4c5ef632e5442ef610444ea5439d4bb78541791b
Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
Update SVS mode and driver level settings for
MSM8996v1 PLL locking sequence, based on Si
characterization.
Change-Id: Ic25e89f62b222847eef491a1c4138434ab2b38fe
Signed-off-by: Casey Piper <cpiper@codeaurora.org>
Set up pll master/slave status base on both pll
GLBL_TEST_CTRL and CLKBUFLR_EN pll registers value.
Change-Id: Ic75e77d5fccb88613ebe435f97a39f5d745fb264
Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
When audio driver requests the cable status, return that
the cable status is connected only when HDMI is powered.
This prevents audio from accessing HDMI registers when
HDMI clock is off.
Change-Id: Icc5016df731725de25b4ca86e2ac3632ab89d5bf
Signed-off-by: Casey Piper <cpiper@codeaurora.org>
Current code does not increase the retire count during the
create fence. This results in the vsync handler not getting
created to report the vsync during kickoff.
Change-Id: I81373487142a6f501a58027a26a49a9949c56ee0
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
This change adds compat layer support to the atomic commit
ioctl for postprocessing.
Change-Id: I211f27d885aca0d8088c2baf14025ebf083fedfd
Signed-off-by: Benet Clark <benetc@codeaurora.org>
This change adds support for SSPP postprocessing using the
atomic commit ioctl. The configuration given as part of the
ioctl will be cached in the same pipe res as before, and the
register programming sequence will be called from the pipe
setup as before.
Change-Id: Ida8209f80e55e9d5009b5df4e55f787b4a85ddc0
Signed-off-by: Benet Clark <benetc@codeaurora.org>
As per the new qos strategy, overhead fudge factors are not needed and
thus remove related logic. Also as per the new qos implementation,
user-space program is responsible to passing on compression ratio when
they setup the pipeline. So cleanup current driver logic which makes
decision based on data path.
Change-Id: I3d4f7ab3749b5b8595ea322a0b5b25ba3187b660
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>
Currently rotator driver is using input compression ratio for output.
This is not correct because it is possible to have different input and
output formats which changes compression ratios. Similarly for WFD, use
output compression ratio passed by user-space.
Change-Id: I63650bcbf9f02ddf3310aacdc27f009381775481
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>
Currently there are two different data structure representing
multiplication factors. Replace internal one, mdss_fudge_factor, and
with the one shared with user-space, mult_factor.
Change-Id: I9e0dcc092b4f9033cbfcd7e185e642c922e29a27
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>
Checking if HDCP is enabled will ensure that HDCP 2.2
is enabled, in which case hdcp ops will be available.
Removing redundant check for hdcp ops. This prevents an
error log when EINVAL is unnecessarily returned to
mdp_intf.
Change-Id: I3f63dbd70651b15b241df9f3ebd4c1aab231fced
Signed-off-by: Casey Piper <cpiper@codeaurora.org>
Rotator was releasing all open rotator sessions whenever
pm_suspend was called. This resulted in rotator trying to access
memory that was freed after resume was called. We are now only
cancel all rotator request (rotator work items) on pm_suspend.
Change-Id: Ib63e49213e6fbdec216888e4e7d3fb29defa3903
Signed-off-by: Terence Hampson <thampson@codeaurora.org>
[cip@codeaurora.org: Resolved merge conflict]
Signed-off-by: Clarence Ip <cip@codeaurora.org>