Commit graph

567417 commits

Author SHA1 Message Date
Tatenda Chipeperekwa
38be49e8b7 msm: mdss: hdmi: Remove redundant update of output format
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>
2016-03-23 20:43:19 -07:00
Dhaval Patel
bdcc37921b msm: mdss: add flush bit and nrt vbif in xlog
Add xlog for ctl flush bit configuration and
non realtime vbif debug node.

Change-Id: Ife7790286e16291067da3b295ecc1d035bf71fd6
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
2016-03-23 20:43:18 -07:00
Krishna Chaitanya Parimi
7b34ad7222 msm: mdss: do not use mdp_lock for hist irq enable/disable
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>
2016-03-23 20:43:17 -07:00
Dhaval Patel
8244623d47 Revert "msm: mdss: handle mmagic mdss axi clock for msm8996 target"
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>
2016-03-23 20:43:16 -07:00
Olav Haugan
06dfea5c32 msm: mdss: use delayed unmap for smmu mappings
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>
2016-03-23 20:43:15 -07:00
Terence Hampson
f7de3df39b mdss: rotator: validate rotator work item against session
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>
2016-03-23 20:43:15 -07:00
Terence Hampson
f8669530b3 msm: mdss: rotator: calculate the correct wb stride using img width
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>
2016-03-23 20:43:14 -07:00
Ingrid Gallardo
e5fb82c808 msm: mdss: add support to set the minimum mdp transfer time
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>
2016-03-23 20:43:13 -07:00
Ajay Singh Parmar
00649dd712 msm: mdss: hdmi: add audio notification acknowledge feature
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>
2016-03-23 20:43:12 -07:00
Ujwal Patel
db3c867d38 msm: mdss: fix dst_x adjustments when source split is disabled
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>
2016-03-23 20:43:11 -07:00
Ingrid Gallardo
9fac1ce233 msm: mdss: fix wrong mdp ib vote calculation
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>
2016-03-23 20:43:10 -07:00
Ingrid Gallardo
9842d19071 msm: mdss: adjust mdp bw vote according to recommendation for 8996
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>
2016-03-23 20:43:09 -07:00
Ujwal Patel
a88c5d35b9 msm: mdss: add support to change border color through debugfs
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>
2016-03-23 20:43:08 -07:00
Ujwal Patel
129d5ad772 msm: mdss: fix secondary ctl flush issue on command mode panels
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>
2016-03-23 20:43:08 -07:00
Vishnuvardhan Prodduturi
45c2d389ad clk: msm: mdss: fix 32 bit compilation issues
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>
2016-03-23 20:43:07 -07:00
Jeevan Shriram
d2cb90a1d5 clk: mdss: shadow clock implementation for dynamic refresh rate
This change implements shadow software mux and clocks for updating
dynamic refresh registers through 14nm DSI PLL calculations.

Change-Id: I461402a249d842d1fb2a8e9ecf82c2c87a37691c
Signed-off-by: Jeevan Shriram <jshriram@codeaurora.org>
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
2016-03-23 20:43:06 -07:00
Clarence Ip
6411de18e9 clk: msm: mdss: add HDMI PLL sequence for external 1.8V supply
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>
2016-03-23 20:43:05 -07:00
Dhaval Patel
362d5932a4 msm: dsi-pll: update pll ref config before start for msm8996
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>
2016-03-23 20:43:04 -07:00
Jeevan Shriram
d8020310ae clk: msm: mdss: read pre-calibrated PLL codes from dfps memory
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>
2016-03-23 20:43:03 -07:00
Casey Piper
5848442527 clk: msm: mdss: Increase polling timer before SW calibration
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>
2016-03-23 20:43:03 -07:00
Casey Piper
5d2eca04c7 clk: msm: hdmi: Increase PLL ready bit timeout
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>
2016-03-23 20:43:02 -07:00
Casey Piper
45ebb6f6ed clk: mdss: hdmi: enable PLL value calculations for MSM8996V3
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>
2016-03-23 20:43:01 -07:00
Vinu Deokaran
c41b5b1cc5 clk: msm: mdss: enable pll resources once in prepare
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>
2016-03-23 20:43:00 -07:00
Kuogee Hsieh
f1f853212f msm: mdss: add support of dsi pll SSC for 8996
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>
2016-03-23 20:42:59 -07:00
Casey Piper
fc534490e0 clk: msm: mdss: update HDMI PLL locking sequence for MSM8996v1
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>
2016-03-23 20:42:58 -07:00
Kuogee Hsieh
466f6c1dbe msm: mdss: add pll master/slave auto detection for 8996
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>
2016-03-23 20:42:58 -07:00
Casey Piper
e0e29754fe msm: mdss: hdmi: return cable status only when HDMI is powered
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>
2016-03-23 20:42:57 -07:00
Ingrid Gallardo
a76691661c msm: mdss: fix to increase the retire count during create fence
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>
2016-03-23 20:42:56 -07:00
Benet Clark
b20fdef9ad msm: mdss: Add atomic commit compat support for PP
This change adds compat layer support to the atomic commit
ioctl for postprocessing.

Change-Id: I211f27d885aca0d8088c2baf14025ebf083fedfd
Signed-off-by: Benet Clark <benetc@codeaurora.org>
2016-03-23 20:42:55 -07:00
Benet Clark
f423ac1538 msm: mdss: Add atomic commit PP support
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>
2016-03-23 20:42:54 -07:00
Ujwal Patel
0732ef8123 msm: mdss: modify BW overhead and compression ratio related logic
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>
2016-03-23 20:42:53 -07:00
Ujwal Patel
d3203f5247 msm: mdss: fix compression ratio for logic for rotator and wfd
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>
2016-03-23 20:42:52 -07:00
Ujwal Patel
3889592e19 msm: mdss: replace mdss_fudge_factor with mult_factor
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>
2016-03-23 20:42:52 -07:00
Casey Piper
df4fbba733 msm: mdss: hdmi: remove check for hdcp ops when starting hdcp
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>
2016-03-23 20:42:51 -07:00
Clarence Ip
29ab5f439b mdss: rotator: fix pm_suspend to no longer release rot sessions
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>
2016-03-23 20:42:50 -07:00
Dhaval Patel
9d6a6f1951 msm: mdss: skip optional property logging in DSI driver
Move error messages to debug messages for optional
properties in DSI driver.

Change-Id: Ie5175cbe647351a6f35914262b1893ef162b7ed3
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
2016-03-23 20:42:49 -07:00
Dhaval Patel
71ab9b2d78 msm: mdss: override DSI hw configuration
MSM8996/8994/8992 is configured for split display
configuration as default option. However, bootloader
can override this configuration to single dsi by
selecting a single dsi panel on one of controller
and set "none" to another controller. This requires
hardware override.

Change-Id: I3e585079548e92f6d576615059987321dfad132a
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
2016-03-23 20:42:48 -07:00
Gopikrishnaiah Anandan
54a956d002 msm: mdss: Support split mode configuration
For destination split panels driver should allow the client to enable
the post processing features for entire screen or one of the slpit
sides. Change adds support in post processing driver to allow the
clients to configure feature in split mode panels.

Change-Id: I2c84aa488205aaa17b5abd3bc26b975361967bba
Signed-off-by: Gopikrishnaiah Anandan <agopik@codeaurora.org>
2016-03-23 20:42:47 -07:00
Jeevan Shriram
eefb8d69cd msm: mdss: enable clamp control configuration during clock on/off
Enable MMSS clamp control configuration during clock on and off cases
on DSI v1.04. This clamp configuration helps in retaining PHY register
configuration when the MDSS gdsc is toggled.

Change-Id: I403417442aedd394d4e8d7c4d20c361c2130dbb1
Signed-off-by: Jeevan Shriram <jshriram@codeaurora.org>
2016-03-23 20:42:46 -07:00
Jeevan Shriram
dce26f3485 clk: mdss: remove configuring phy registers during pll disable
DSI driver needs to disable pll and enable clamps before entering into
low power state. Since the PLL disable is configuring GLBL_TEST_CNTRL,
CLK_BUF PHY registers to 0, these registers are not restored after the
clamps are disabled.  This change avoids configuring these registers
during PLL disable and gets disabled during dsi off.

Change-Id: Ia577099679f23cb9d0d42417863b6b3ad3af635b
Signed-off-by: Jeevan Shriram <jshriram@codeaurora.org>
2016-03-23 20:42:45 -07:00
Casey Piper
19ccabc6b7 clk: msm: mdss: increase VCO frequency to above 8.9Ghz
For some resolutions on MSM8996 V2, PLL can become
unlocked at high operating temperatures. To prevent
this, use a VCO frequency of at least 8.9Ghz for bit
clocks of at least 282Mhz.

Change-Id: I409f286d23a924eab8bcd204638602e530597d77
Signed-off-by: Casey Piper <cpiper@codeaurora.org>
2016-03-23 20:42:45 -07:00
Dhaval Patel
ed2f52f863 mdss: mdp: fix smmu power rail handoff configuration
mdss smmu driver turns on the power rail during probe
and leave it on for continuous splash screen scenario.
It avoids extra refcount during attach for this scenario
by relaying on MDP handoff status. However, MDP handoff
status is updated before context banks are attached for
video mode panel. This adds extra refcount to power rails
and leave them on always. This fix moves the power rail
handoff to smmu structure instead of relying on MDP
status.

Change-Id: Ifc98c0e3812c7b78224f0167886dcb49dba3b267
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
2016-03-23 20:42:44 -07:00
Terence Hampson
41521b0bd6 mdss: rotator: fix rotator bus bw vote
Was using do_div improperly, this resulted in 0 bw vote from
rotator.

Change-Id: Iac1803631b674d6931b0dcbe45d65fd4740c36c9
Signed-off-by: Terence Hampson <thampson@codeaurora.org>
2016-03-23 20:42:43 -07:00
Benet Clark
cde1a1f673 msm: mdss: Copy only error code back to userspace after atomic commit
Previously, the atomic commit ioctl copies the entire kernel layer list
to the userspace layer list structure. The only parameter modified
during atomic commit should be the error code, and therefore, the
only value needed by userspace after the atomic commit ioctl returns.
Copying the kernel layer list structure causes the userspace to have
stale kernel pointer references to scale and PP info structures.

Change-Id: Ia8e96af21f7d9594a47d1503f3afef50a767971f
Signed-off-by: Benet Clark <benetc@codeaurora.org>
2016-03-23 20:42:42 -07:00
Benet Clark
ecb794adf5 msm: mdss: Fix atomic commit compat layer copy
The compat layer for atomic commit is incorrectly using compat
pointers. This change adds correct support for copying all
nested compat pointers in the atomic commit structure. It also
returns the correct error value when copy_from_user fails.

Change-Id: If35a00583cfed105a16ffa547813c386314bff9b
Signed-off-by: Benet Clark <benetc@codeaurora.org>
2016-03-23 20:42:41 -07:00
Benet Clark
8f2a3654ec msm: mdss: Clean up PP framework for unchanged PP features
When creating the framework for handling PP versioning, all PP features
were given interface update and space in the framework for handling
versioning. However, the CSC hardware will not change, and
therefore will not need any updates. This change removes the framework
update done for CSC.

Change-Id: Idc6c0b7ea62717ff1d1f2e4c827481e5db1976a8
Signed-off-by: Benet Clark <benetc@codeaurora.org>
2016-03-23 20:42:40 -07:00
Benet Clark
717a16b47b msm: mdss: Return error when Gamut table size is invalid
Previously, the gamut caching code was not returning an error value when
an invalid table size was passed. This change will return error during
caching if the table size is invalid.

Change-Id: I212b345239543943670c2f03a0fc8376d31d1e86
Signed-off-by: Benet Clark <benetc@codeaurora.org>
2016-03-23 20:42:39 -07:00
Sushil Chauhan
92049f8139 uapi: msm: mdp: Add color space in mdp_input_layer
MDP needs color space value to configure CSC matrix correctly. So
add color_space member in the mdp_input_layer structure.

Change-Id: I47ca556f8cfa8ef6c95fb0d77ef1510e3830a286
Signed-off-by: Sushil Chauhan <sushilchauhan@codeaurora.org>
2016-03-23 20:42:39 -07:00
Ingrid Gallardo
2707818973 msm: mdss: update panel timings in upstream driver during vblank
During the controller configuration, some of the panel
timings could have been updated by the driver.
This change updates the panel information shared with the
upstream driver to keep updated the panel settings
that have changed after the controller setup.

Change-Id: I4d050d74f1aec50dbc294357ba0dace7c0940a16
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
2016-03-23 20:42:38 -07:00
Ingrid Gallardo
910aad149c msm: mdss: expose prefill factors to user space
Add factors for prefill calculations to the
capabilities exposed to the display driver
user space.

Change-Id: Ib479a5514978c8dec2376be4f2510bafb460af10
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
2016-03-23 20:42:37 -07:00