Commit graph

567417 commits

Author SHA1 Message Date
Ingrid Gallardo
6a991a679e msm: mdss: add simplified prefill bw equation
Add support to calculate the mdp prefill bandwidth
with simplified equation.

Change-Id: Icb9fd738a7aced7d59b8d59a78691e7316ef31c1
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
2016-03-23 20:42:36 -07:00
Veera Sundaram Sankaran
a60d7c6ad3 msm: mdss: fix req availability check in dsi command commit
NULL check for req in dsi cmd list commit is misplaced, causing
race condition due to skipping of dsi cmd mdp busy check. This would
eventually result in underflow due to possible contention of using dsi
link. Fix the NULL check to avoid misbehavior.

Change-Id: I5999646d4db67efd0854b3db07e1d987e66c9cb5
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
2016-03-23 20:42:35 -07:00
Krishna Chaitanya Parimi
ec458f6feb msm: mdss: initialize AD calibration bl to current bl level
When AD calibration mode is turned ON, an ioctl is sent to
set the mode to calibration in driver. However this does not
set the calibration mode backlight. So the backlight value
would remain 0. If bl is not set during calibration then upon
suspend resume the bl will remain as 0 and nothing would
appear on display.

Now initializing the calibration mode bl level to the bl
level when calibration mode was turned on.

Change-Id: Iecee61dc69815b673deb8610a524b07c4f4b9261
Signed-off-by: Krishna Chaitanya Parimi <cparimi@codeaurora.org>
Signed-off-by: Ping Li <pingli@codeaurora.org>
2016-03-23 20:42:34 -07:00
Krishna Chaitanya Parimi
f954efe130 msm: mdss: Fix AD calibration mode resume backlight issue
AD when set in calibration mode will block all backlight
updates from frameworks. Hence during suspend/blank the
backlight would not be 0 but will be set to the value
set in calibration mode.

Now this is changed as during suspend the backlight is
set to 0 within driver itself. This complicates things by
causing backlight to remain 0 post resume in calibration
mode. Now changing the behavior so that backlight is set
to 0 during suspend and set to the calibration set value
upon resume.

Change-Id: Id0b3919a7034875b3f3a606d00f462ceb21f40ee
Signed-off-by: Krishna Chaitanya Parimi <cparimi@codeaurora.org>
2016-03-23 20:42:33 -07:00
Veera Sundaram Sankaran
8f293cab86 msm: mdss: cleanup obsolete ioctls from mdss
Remove few ioctls and changes related to it as they are obsolete now.

Change-Id: I26ad6609f8a1b3b2f8f549b82c330e5db7e5b44c
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
2016-03-23 20:42:33 -07:00
Anusha Koduru
0b9e9534fb mdss: dsi: fix DSI clk rate update during dynamic resolution switch
Current implementation updates the DSI link clock rate during UNBLANK.
By this time link rate is already set with a random value, which
might lead to unexpected behaviour. Update the clock during LINK READY
so that the new  values take effect.

Change-Id: Ib6d3f27b5607adb1d47ec5b8094af4f280424c2b
Signed-off-by: Anusha Koduru <kanusha@codeaurora.org>
2016-03-23 20:42:32 -07:00
Veera Sundaram Sankaran
ec20c566ee msm: mdss: fix wait idle case for few ioctls
Ioctls which modifies the commit data structures needs to wait for
kickoff before it is handled. The cursor and set/get metadata ioctls
were made to wait on pan idle, which makes it impossible to get through
when there are lot of panel updates. Move these ioctls to wait for
kickoff as these not necessarily needs the panel to be idle.

Change-Id: I417a88b434fcc8abd43654f3856bc7ca3639a50c
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
2016-03-23 20:42:31 -07:00
Ingrid Gallardo
0fa00f3046 msm: mdss: remove deprecated compression ratio support
Starting with the change: "msm: mdss: use compression
ratio factors passed by user space"; compression ratio
factors are now assigned and passed by user space, so
kernel side does not need to assign the compression ratio
factors anymore. This change removes the deprecated
kernel code that was assigning the compression ratio.

Change-Id: I93e7afefa99198d947746df4a6962d0bb3508375
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
[cip@codeaurora.org: Resolved merge conflicts]
Signed-off-by: Clarence Ip <cip@codeaurora.org>
2016-03-23 20:42:30 -07:00
Ingrid Gallardo
272da5e39e msm: mdss: use compression ratio factors passed by user space
Use the compression ratio factors shared by user space
to reduce the bandwidth calculations and vote for the
reduced throughput when compressed formats
are used.
Before this change kernel estimated the compression
ratio factors to reduce the bandwidth in the compressed
formats, after this change user space will set the
compression factors and kernel will use those for
bandwidth calculations.

Change-Id: I00fc0b9f526e7ff400740d48f42f6404737eae32
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
[cip@codeaurora.org: Resolved merge conflict]
Signed-off-by: Clarence Ip <cip@codeaurora.org>
2016-03-23 20:42:29 -07:00
Terence Hampson
f274a1ebec msm: mdss: compare destination roi to mixer height
Trying to compare layer height to mixer height if possible,
otherwise defaulting to fb var screen info.

Change-Id: Ic0471446e88a956c5120f6c30d00e3c6f391a3d4
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:28 -07:00
Veera Sundaram Sankaran
c040ba96c0 msm: mdss: add support for async position updates
Expose new ioctl for updating the layer position asynchronously.
Initially, pipes should be configured with async_update flag set
during the atomic commit, after which any number of position update
calls can be made. This would enable multiple position updates
within a single vsync. However, the screen update would happen
only after vsync, which would pick the latest update. Currently,
supported for video mode panels with single LM or dual LM with
src_split enabled. Only position updates are possible with no
scaling/cropping and each async layer should have unique z_order.

Change-Id: Ibb2804b59c6c980411396120e63167f18df5bc5b
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
[cip@codeaurora.org: Resolved out-of-order merge conflict]
Signed-off-by: Clarence Ip <cip@codeaurora.org>
2016-03-23 20:42:27 -07:00
Alhad Purnapatre
68f385d658 msm: mdss: hdmi: HDCP 2.2 changes to work with Trustzone driver
Make HDCP 2.2 work with Trustzone QSEECOM driver that handles interaction
with the HDCP secure app that actually runs HDCP authentication protocol.

The current HDCP 2.2 driver is designed to run with a Trustzone module in
userspace that uses sysfs nodes to communicate with this driver. With
Trustzone QSEECOM driver now available to communicate with HDCP secure app
in TZ, make use of its features to communicate with the secure app.

Change-Id: Ifd66785e40c28fd161b82477ebef2b5829005875
Signed-off-by: Alhad Purnapatre <alhadp@codeaurora.org>
2016-03-23 20:42:26 -07:00
Gopikrishnaiah Anandan
f08932c70f mdss: mdp: Update histogram start failure reporting
Userspace clients will enable the histogram and disable it as per the
algorithm requirements. If the process under which the client is
running crashes and restarts states of histogram between client and
driver is not in sync. In case the driver is not in sync with client it
should return EBUSY error to client. Client will stop and start the
histogram to maintain the sync.

Change-Id: I7b3c8d7890d8ca24ecf065e48a9ea5884cc886de
Signed-off-by: Gopikrishnaiah Anandan <agopik@codeaurora.org>
2016-03-23 20:42:26 -07:00
Gopikrishnaiah Anandan
4d9b8c2d45 mdss: msm: Add support for gamut map enable
Non-uniform mapping mode is configurable parameter exposed by MDP.
Driver should provide the option to gamut clients to configure the
mapping. Change updates the interface to expose the parameter and
programs the gamut registers based on user setting.

Change-Id: I71e7e0f7443da7856b0d03e6b2799f9380274893
Signed-off-by: Gopikrishnaiah Anandan <agopik@codeaurora.org>
2016-03-23 20:42:25 -07:00
Veera Sundaram Sankaran
5abc100e7a msm: mdss: fix SW TE for dynamic resolution change cases
The Tear check sync cfg height, in case of SW TE is calculated based
on panel's height and vertical porch values. Simulator panels has the
capability to change the panel resolution after bootup, which would
require recalculation of tear check height. Fix the sync cfg height to
be set right for all cases.

Change-Id: I5d27388a20d543b5655aa07ff6681001656a61c8
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
2016-03-23 20:42:24 -07:00
Padmanabhan Komanduru
b9fc91fb69 msm: mdss: handle DSI PHY regulator control for dual DSI cases
The DSI PHY regulator for both DSI0 and DSI1 is shared. So,
the regulator can be disabled during suspend only if both DSI0
and DSI1 are turned off, but both the DSI devices can be turned
on/off independently in case of dual DSI cases. Add change for
proper synchronization of DSI PHY regulator enable/disable.

Change-Id: I39b277d43e8b3bd1e7c475584da506566092c869
Signed-off-by: Padmanabhan Komanduru <pkomandu@codeaurora.org>
2016-03-23 20:42:23 -07:00
Kuogee Hsieh
1ca4a4b015 msm: mdss: dsi: add support for DSC command mode panel
Add required register programming in the DSI host driver to support
command mode panels that use Display Stream Compression (DSC) modes.

Change-Id: I316086e929f2424d56097e2f9d63a01de2d3fe8d
Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
2016-03-23 20:42:22 -07:00
Padmanabhan Komanduru
848551b362 msm: mdss: program PHY_GLBL_TEST_CTRL based on DSI configuration
DSIPHY_GLBL_TEST_CTRL register needs to be programmed based on the PLL
that will be driving the respective PHY which in turn depends on the
configuration of the two DSI devices. Add validity checks to program the
appropriate value to the register.

Change-Id: I294b2d0e95157b32e52e7fa9e1f3de77d9739e1c
Signed-off-by: Padmanabhan Komanduru <pkomandu@codeaurora.org>
2016-03-23 20:42:21 -07:00
Aravind Venkateswaran
bd37954d5d msm: ndss: dsi: fix PLL source configuration for branch clocks
The PLL source for the DSI clocks can be specified using the
pll_src_config DTSI binding. However, this binding is optional and
whenever it is not specified, the default configuration should be
programmed based on the underlying hardware configuration. If the
hardware configuration is split-dsi, then both branches should source
from the same PLL, otherwise they should source from their corresponding
PLLs.

Change-Id: Idc1c003fede7440bad10311fe1f3bc44cc627053
Signed-off-by: Aravind Venkateswaran <aravindh@codeaurora.org>
2016-03-23 20:42:20 -07:00
Aravind Venkateswaran
142b8c7784 msm: mdss: add support to configure DSI branch clock source
Based on the board configuration, the two DSI controllers can either
drive two independent panels or drive a single panel in split display
mode. DSI0 PLL can drive split display configuration ands it is not
supported by DSI1 PLL. DSI0 PLL can drive a single DSI panel on either
DSI0 or DSI1 controller whereas DSI1 PLL can drive a DSI panel only on
DSI1 controller. Based on this, it is necessary to configure the
source for the DSI link clocks dynamically. Implement this by adding
support for a new pll source configuration entry.

Change-Id: Ie57afbfe8cb14b80d0b52ed3825972ae34af27e2
Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
Signed-off-by: Aravind Venkateswaran <aravindh@codeaurora.org>
[cip@codeaurora.org: Removed .dtsi file updates]
Signed-off-by: Clarence Ip <cip@codeaurora.org>
2016-03-23 20:42:19 -07:00
Aravind Venkateswaran
db5a26a52c clk: msm: mdss: Export DSI1 PLL clocks
Add support for all the clocks provided by the DSI1 PLL in preparation
for supporting two independent displays using the two DSI controllers.

Change-Id: I9c9e4cddd23be869d9f16a5c3e1351a88f88699f
Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
Signed-off-by: Aravind Venkateswaran <aravindh@codeaurora.org>
[cip@codeaurora.org: Removed .dtsi file updates]
Signed-off-by: Clarence Ip <cip@codeaurora.org>
2016-03-23 20:42:19 -07:00
Aravind Venkateswaran
d455118544 clk: qcom: mdss: remove DSI1 PLL configuration from DSI0 PLL
In the current implementation, DSI0 PLL driver explicitly disables DSI1
PLL at numerous instances to work around a hardware issue that requires
explicitly powering down any unused PLLs whenever MDSS GDSC is toggled.
However, this is not needed anymore since each PLL can independently
power itself down as part of the GDSC notifier worker thread.

Change-Id: Ic56f0ce350dd9ad648f3b96baa753345a74897b0
Signed-off-by: Aravind Venkateswaran <aravindh@codeaurora.org>
2016-03-23 20:42:18 -07:00
Casey Piper
b786024cd8 clk: msm: mdss: add HDMI PLL sequence for MSM8996v2
MSM8996v2 does not share the same HDMI PLL sequence
as MSM8996v1. Update the HDMI PLL driver for MSM8996
to support the differing sequences.

Change-Id: Ibfdac25383e6504c707f2abe95b9fa2732283acf
Signed-off-by: Casey Piper <cpiper@codeaurora.org>
2016-03-23 20:42:17 -07:00
Ujwal Patel
759e9a0fd6 uapi: msm: mdp: add comment on how to fill roi
Add a comment specifying guidelines for user on how to fill roi
information when calling commit IOCTL.

Change-Id: Iaab026131baccace1d4236777ff68d5953b5342b
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>
2016-03-23 20:42:16 -07:00
Dhaval Patel
e2c6f023dd msm: clk: mdss: fix vco clk get rate API for msm8996
Incorrect get rate for n1 divider and vco rate
leads to wrong calculation of byte clock and pixel clock
during handoff for continuous splash screen. Correct
n1 divider should be read from register instead of
software because software structures are not set during
handoff. Incorrect vco calculation also provides
invalid vco rate. This change fixes both APIs to provide
correct rate for byte and pixel clock rate calculation.

Change-Id: I2b42490a58061cee429aaa777a43eaf7c384b6d9
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
2016-03-23 20:42:15 -07:00
Dhaval Patel
39206c4363 mdss: rotator: move buffer mapping in workqueue from caller context
Rotator driver maps the same buffer twice. First time in caller
context while second time in worker queue. Ideally, it should
map buffer single time in worker queue. Mapping it in caller
context during validation will block the client call and can
cause the delay. Moving it to worker thread fixes double
mapping issue for same buffer.

Change-Id: I17ebe188ace2e54714247fc87277f3da51a64d73
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
2016-03-23 20:42:14 -07:00
Padmanabhan Komanduru
31f25a7aee msm: mdss: add support for DSI shared data in the master DSI node
Some of the properties of the individual DSI controller nodes are
common between them. Instead of having duplicate entries, they can
actually be shared via. a common data structure which can be part
of the root DSI node. Add changes in the MDSS dtsi file and the DSI
drivers to support this.

Change-Id: I22dbc1d81678fea191b3f58bd8dcc667fafdfe6a
Signed-off-by: Padmanabhan Komanduru <pkomandu@codeaurora.org>
[cip@codeaurora.org: Removed .dtsi file updates]
Signed-off-by: Clarence Ip <cip@codeaurora.org>
2016-03-23 20:42:14 -07:00
Padmanabhan Komanduru
411d694bc1 msm: mdss: refactor MDSS DSI driver
Current DSI driver implementation treats the two DSI controllers
as separate devices. However, some use cases might require the
two DSI devices to be aware of the global configuration of the
display interfaces. For instance, the panel/board configuration
might require both the DSI controllers to work in tandem and
drive a split DSI panel or else drive two different panels
independently. Add a root DSI node in MDSS dtsi and the two
DSI controller nodes as the child nodes. Refactor the DSI
panel related dtsi files and DSI drivers to support this new
design. The DSI root node contains the global information needed
for the DSI controllers like the DSI h/w configuration needed to
drive the panel(s), the DSI register space ranges etc.

Change-Id: I3661adf9ce2ecbef83ae3267e4aae18e0f0c8d04
Signed-off-by: Padmanabhan Komanduru <pkomandu@codeaurora.org>
Signed-off-by: Siddhartha Agrawal <agrawals@codeaurora.org>
[cip@codeaurora.org: Removed .dtsi file updates]
Signed-off-by: Clarence Ip <cip@codeaurora.org>
2016-03-23 20:42:13 -07:00
Padmanabhan Komanduru
50fd186067 ARM: dts: msm: move the DSI lane map settings from panel dtsi
The DSI lane settings are dependent on the board h/w settings
and not dependent on the panel. Currently this setting is part of
the panel dtsi. Add change to move this from the panel dtsi to
the board specific dtsi files. Add corresponding driver changes
to parse the DT property correctly.

Change-Id: Ic2008eb7b0668945b0ed938dba87f94b203733eb
Signed-off-by: Padmanabhan Komanduru <pkomandu@codeaurora.org>
[cip@codeaurora.org: Removed .dtsi file updates]
Signed-off-by: Clarence Ip <cip@codeaurora.org>
2016-03-23 20:42:12 -07:00
Clarence Ip
5a2e3355e8 ARM: dts: msm: add the LAB/IBB regulator nodes to panel dtsi
Currently, the LAB/IBB regulators to supply power to the panel are
controlled in MDSS DSI drivers and the property to enable it is part
of MDSS DSI node. This needs to be ideally enabled/controlled through
the panel dtsi. Add support to control these regulators similar to
the other PMIC LDO regulators via the panel dtsi node for 8994, 8992,
8996 and 8952. Cleanup the existing code in DSI drivers related to
LAB/IBB control.

Change-Id: Ie504da64f7752625060717dbeb08f8da1c87c98e
Signed-off-by: Padmanabhan Komanduru <pkomandu@codeaurora.org>
Signed-off-by: Siddhartha Agrawal <agrawals@codeaurora.org>
[cip@codeaurora.org: Removed .dtsi files, replace
regulator_set_optimum_mode with regulator_set_load]
Signed-off-by: Clarence Ip <cip@codeaurora.org>
2016-03-23 20:42:11 -07:00
Padmanabhan Komanduru
089b71fcf9 ARM: dts: msm: add DSI PHY regulators to MDSS DSI node
Currently, we turn off the DSI ctrl/PHY regulators during suspend as
part of panel power control API which might cause the regulators to be
turned off before the DSI controller and PHY is disabled. Hence, add the
DSI PHY regulators to the MDSS DSI node for multiple chipsets and control
these regulators as part of DSI clock control API.

Change-Id: I134ad45155605db049088efb5d819e142bafdc12
Signed-off-by: Padmanabhan Komanduru <pkomandu@codeaurora.org>
[cip@codeaurora.org: Removed msm8996-mdss.dtsi from commit]
Signed-off-by: Clarence Ip <cip@codeaurora.org>
2016-03-23 20:42:10 -07:00
Padmanabhan Komanduru
b0e9f4abc4 ARM: dts: msm: specify DSI panel regulators in panel dtsi node
Regulators that are needed to supply power to the panel are currently
specified in the DSI controller dtsi node. This limits the support of
multiple panels on a single software build, since every panel may have
a different set of regulator supply configurations. Hence, add the driver
support to specify the panel regulators in panel dtsi file instead
of mdss dtsi file and update the panel dtsi files accordingly.

Change-Id: Icd512f0bcc353d4e856b9dbe5dead5a108f1318b
Signed-off-by: Padmanabhan Komanduru <pkomandu@codeaurora.org>
[cip@codeaurora.org: Removed .dtsi file updates]
Signed-off-by: Clarence Ip <cip@codeaurora.org>
2016-03-23 20:42:09 -07:00
Ujwal Patel
3f2675c9cd msm: mdss: clean-up terminology used for different bus bw votes
Current driver votes for bandwidth on two different kinds of buses,
data (AXI) and register (AHB). However terminology used to track these
voting is not consistent and easily lead to misunderstanding. Clean-up
some of these terminology to make driver code more readable.

Change-Id: I54d636125786876e8326d6c0279b5a76a1591ae9
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>
2016-03-23 20:42:08 -07:00
Ujwal Patel
fdec367b00 msm: mdss: modify bus bw vote lock and count strategy
Currently bus bandwidth can happen from 2 separate contexts where commit
context does not hold lock and blindly votes bandwidth. Rather use a
single bandwidth lock and count for all contexts. This also requires
fixing a bug during ctl stop where ctl power status needs to be changed
only after bus vote has finished.

Conflicts:
	drivers/video/msm/mdss/mdss_mdp.c
	drivers/video/msm/mdss/mdss_mdp_ctl.c

Change-Id: I4131b05195298d15a46101aa4ebb88ea2e80b3dc
Signed-off-by: Ujwal Patel <ujwalp@codeaurora.org>
2016-03-23 20:42:08 -07:00
Ping Li
25ee56238a msm: mdss: add sysfs node for AD backlight notification
This change adds a sysfs node for assertive display attenuation
backlight change notification. Any AD related backlight notification
will be posted to the ad_bl_event sysfs node, so userspace clients
can be notified if they poll on the same sysfs node.
It will simplify and optimize the previous notification ioctl
implementation.

Change-Id: I7a8f86563d5802a41dc200f5901a8d0bed1cf765
Signed-off-by: Ping Li <pingli@codeaurora.org>
2016-03-23 20:42:07 -07:00
Veera Sundaram Sankaran
64cafae38f msm: mdss: fix pixel extension calculation for scaling cases
The upscale and unity scale parameter for X direction pixel extension
is calculated and applied correctly only for plane 0. For other planes,
these parameters are taken from previous plane's Y direction
calculation, leading to corruption of images. Fix the calculation for
these parameters by separating the variables used for X and Y direction.

Change-Id: I066b014f2b55fc96afbf9424ebc679b409adb4c1
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
2016-03-23 20:42:06 -07:00
Gopikrishnaiah Anandan
eb79a2a969 mdss: mdp: sysfs node for ad notification
Assertive display(ad) feature needs to issue screen refresh when ambient
light or backlight changes. It needs multiple screen refreshes to ensure
that AD block strength is reached. Duration between each refresh should
be vsync interval. AD calc worker is scheduled from vsync handler which
can notify the AD userspace module via sysfs node

Change-Id: If9d688de0b5befec9adab262a6ec1182b2bd5a19
Signed-off-by: Gopikrishnaiah Anandan <agopik@codeaurora.org>
2016-03-23 20:42:05 -07:00
Adrian Salido-Moreno
514ee25d3c msm: mdss: rotator: ignore panel status for rotator fences
In case of rotator buf sync ioctl, the ioctl could be called on
frame buffer device for which panel is off. However rotator sessions
may still be active. In such cases the call shouldn't fail, thus move
check for panel off only when the target sync fence timeline is for
the panel.

Change-Id: Ice4557fcbe82df2761c65f67a0bf81a2d72fde75
CRs-Fixed: 837945
Signed-off-by: Adrian Salido-Moreno <adrianm@codeaurora.org>
2016-03-23 20:42:04 -07:00
Jeevan Shriram
31a9bc1fc8 msm: mdss: correct second control tearcheck enable base offset
After the commit cdc666d763b835dced549f2811561fdc86338bd4, titled
"msm: mdss: enable tearcheck after panel on for synchronization",
second control's tearcheck is never enabled due to wrong offset.
This change corrects the offset for enabling second control's tear
check block. Driver is also not disabling TE in the shutdown path,
handle the same in this change.

Change-Id: Id187705ddf49578fd2c41dba0fe9071656b17139
Signed-off-by: Jeevan Shriram <jshriram@codeaurora.org>
2016-03-23 20:42:03 -07:00
Terence Hampson
3e187f934f msm: mdss: add additional formats that rotator supports
Rotator hw supports RGBA4444 and RGBA5551 format. Enabling formats
in sw.

Change-Id: I7c6da0c054b6f68a6a01eaf94954c553f83b75dd
Signed-off-by: Terence Hampson <thampson@codeaurora.org>
2016-03-23 20:42:02 -07:00
Dhaval Patel
e5929d84db msm: mdss: add trace points for external API calls
Add trace points for buffer map/unamp and
msm bus scale request API calls to find
the actual latency.

Change-Id: Ic141af071f7edaa9814b4c341d7468e1d76e573b
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
2016-03-23 20:42:02 -07:00
Jayant Shekhar
2018df5c2e msm: mdss: Add debugfs support to change MDP max bandwidth
Based on various use-cases such as camera and flip, MDP bandwidth
limit can be changed. For debug purpose add support to change
these paramaters via debugfs. First parameter takes mode and
second paramter takes bandwidth limit for that particular mode.

E.g. echo 2 1700000 > <debugfs>/mdp/perf/threshold_bw_limit

Change-Id: I98456f4f00223136628b2d2300b5785af386b134
Signed-off-by: Jayant Shekhar <jshekhar@codeaurora.org>
2016-03-23 20:42:01 -07:00
Jayant Shekhar
1715b84a52 msm: mdss: Add support to select max MDP bandwidth
MDSS currently has fixed maximum bandwidth enabled in DT file.
But there are scenarios where this maximum bandwidth support
can change to enhance performance. Based on scenarios such as
camera use, or flip involved declare the max bandwidth for
usecase in DT and change accordingly based on usecase.

Change-Id: Icc85d75d7a60fe6f934a1fbd9d5077b620b2993d
Signed-off-by: Jayant Shekhar <jshekhar@codeaurora.org>
2016-03-23 20:42:00 -07:00
Gopikrishnaiah Anandan
17ab364131 msm: mdss: decouple histogram stop from control mixers
When histogram is started for a logical display we store the display
number as part of histogram info structure. When histogram stop is
called on a logical display control mixers might be turned off in case
of suspend usecase which will fail histogram stop ioctl. Since driver is
caching the display number, histogram for the dspp's which are attached
to logical display can be turned off without need for checking control
mixers.

Change-Id: I4f06f5aad562ff3a3df5449166b7d174d3e800eb
Signed-off-by: Gopikrishnaiah Anandan <agopik@codeaurora.org>
2016-03-23 20:41:59 -07:00
Gopikrishnaiah Anandan
c2e0191248 msm: mdss: tie histogram interrupt with commit
Histogram interrupts are generated when data flows through the dspp
pipes. For video mode panels if there is no commits from userspace
MDP pulls the data through the dspp pipes which will generate interrupts
at panel refresh rate. Post processing algorithms needs to be
interrupted only when there is a commit and histogram interrupt is
generated. Change clubs the histogram enable bit mask with commit to
reduce reduntant interrupts

Change-Id: I545fc26cbf9e95ad71ae2a837edc93fd3de04c68
Signed-off-by: Gopikrishnaiah Anandan <agopik@codeaurora.org>
2016-03-23 20:41:58 -07:00
Gopikrishnaiah Anandan
9f2bed0126 msm: mdss: sysfs node for backlight notification
Adding sysfs node for backlight notification will remove the need for
userspace clients to block on a ioctl. Exposing as a sysfs node will
allow the userspace thread architecture to be optimized.
Change updates the driver to signal via sysfs node for backlight
notification

Change-Id: I00752799ac81580f7ff7ee380b39d5bf43c3f8d3
Signed-off-by: Gopikrishnaiah Anandan <agopik@codeaurora.org>
2016-03-23 20:41:57 -07:00
Gopikrishnaiah Anandan
5a6204fd8c msm: mdss: Add sysfs node for histogram notification
Histogram is used by algorithms in userspace, current driver interface
is blocking ioctl call to read histogram. Moving away from blocking
ioctls in driver will reduce the userspace thread requirements.
Change adds a histogram sysfs node for each framebuffer which will be
utilized to notify the clients

Change-Id: Ia88c4d2ba3de8f96ebb5fb915be9b4cefc9471a3
Signed-off-by: Gopikrishnaiah Anandan <agopik@codeaurora.org>
2016-03-23 20:41:56 -07:00
Veera Sundaram Sankaran
92c335ebfc msm: mdss: add SW TE option for simulator panels
cmd mode simulator panels depended on terminator card for HW TE
generation. This change adds the capability of SW TE, that eliminates
the requirement of terminator card. The SW/HW TE modes can be selected
by passing the override string along with the override parameters in
the panel string passed by bootloader. With this change, any panel
which has a valid device tree file file can be booted up in simulation
mode with either HW/SW TE for command mode and no TE for video mode
panels.

eg:
- simulator single DSI cmd mode with SW TE
	1:dsi:0:qcom,mdss_dsi_sim_cmd:1:none#override:sim-swte
- simulator single DSI cmd mode with HW TE
	1:dsi:0:qcom,mdss_dsi_sim_cmd:1:none#override:sim-hwte
- Simulator dual DSI cmd mode with SW TE
	1:dsi:0:qcom,mdss_dsi_sim_cmd_0:1:qcom,mdss_dsi_sim_cmd_1
	#override:sim-swte
- JDI 1080p video mode panel in simulator mode
	1:dsi:0:qcom,mdss_dsi_jdi_1080p_video:1:none#override:sim

Change-Id: I4a0fdca9e22e72fe2cc2d7ad3a15e0a41a851266
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
2016-03-23 20:41:55 -07:00
Casey Piper
f14ca4d5d0 msm: mdss: hdmi: determine where HDCP keys are stored
Determine if the HDCP keys are stored in software
registers or hardware fuses on supported hardware.

Change-Id: I9492a458c38aaea4303d3387d79c01bb9beb3219
Signed-off-by: Casey Piper <cpiper@codeaurora.org>
2016-03-23 20:41:55 -07:00
Ingrid Gallardo
8837f78417 msm: mdss: add support to expose compression ratio factor
For bandwidth calculations, driver needs to know
compression ratio factors which depends on the pixel
format. This change adds support to share this
information with user-space.

Change-Id: I08aa8792c38bb85a8114a21cbaabe905bbfee289
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
2016-03-23 20:41:54 -07:00