Commit Graph

37 Commits

Author SHA1 Message Date
Nilaan Gunabalachandran
d92000cdd4 disp: msm: add resource caps structure and api changes
Create a data structure to maintain available hardware resources
and track capabilities. This data structure is used to send
the current available resources and caps information to
connector ops get_mode_info, get_modes and validate_mode to
process the display mode.

Change-Id: If38fc628ee5ab4729821f88c0050ab45375187b8
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-07-02 17:34:49 -04:00
Abhijit Kulkarni
dcea657cce disp: msm: sde: avoid connector state mode update
There is a race condition between sdm thread and display thread, when
sdm thread may be accessing the mode_info field while duplicating the
connector state, display thread may be updating the current mode info.
This would lead to the next commit using invalid mode and could cause
wrong hw configuration.
This change removes copying the mode_info in encoder struct while
atomic check phase and also removes accessing the connector mode_info
during mode_set. The encoder struct is now updated at the mode_set
with the cached connector mode.

Change-Id: I069ed592ec017ce4aa5c9c94b340bf94c5e1ebff
Signed-off-by: Abhijit Kulkarni <kabhijit@codeaurora.org>
Signed-off-by: Samantha Tran <samtran@codeaurora.org>
2019-07-02 12:57:31 -07:00
qctecmdr
d2ffb846ba Merge "disp: msm: sde: reset ctl during wr_ptr_irq timeout" 2019-06-28 04:27:31 -07:00
qctecmdr
8d38e0fb46 Merge "disp: msm: fix vsync wait for poms and dms" 2019-06-27 05:57:07 -07:00
qctecmdr
acf755573d Merge "disp: msm: dsi: DSI PHY V4 support of dynamic clock switch" 2019-06-27 03:34:31 -07:00
Veera Sundaram Sankaran
6da6eb6774 disp: msm: sde: reset ctl during wr_ptr_irq timeout
wr_ptr_irq timeout signifies that the MDP is stuck
on either the current or previous frame. Handle
ctl reset and fence signalling as part of this
timeout handling. This logic would help to recover
the HW faster in case of posted-start.

Change-Id: I09b3d21772df431f9fc4a58b2fd9b4fcac4a7de7
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
2019-06-24 15:33:56 -07:00
Dhaval Patel
7b5c2fff43 disp: msm: fix vsync wait for poms and dms
SDE RSC does not need to wait for vsync during
dms. It was removed unintentionally with commit
a74d2cf7fa ("disp: msm: add runtime_pm ops
support in drm driver"). However, Panel mode
switch still needs vsync wait based on
recommendation. This change fixes vsync wait
for both cases.

Change-Id: Ic9119132eb15a8c33f3841ba5df2624189d93395
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
2019-06-20 22:12:01 -07:00
qctecmdr
13a11e75b0 Merge "disp: msm: sde: add snapshot of SDE from 4.14 to 4.19" 2019-06-13 11:29:00 -07:00
qctecmdr
32548d1507 Merge "disp: msm: sde: fix rm/kms for handling all cont-splash cases" 2019-06-08 19:19:55 -07:00
qctecmdr
48b38ad05d Merge "disp: msm: allow DMS before cont-splash handoff" 2019-06-08 17:49:59 -07:00
Samantha Tran
d009254fda disp: msm: sde: add snapshot of SDE from 4.14 to 4.19
This change takes a snapshot from 4.14 to 4.19 as of
commit 47d149c31967 ("drm/msm/sde: Add null pointer
sanity checks").

Change-Id: Ib40428c562c3561c8a20d9849f16d13151496005
Signed-off-by: Samantha Tran <samtran@codeaurora.org>
2019-06-05 13:18:21 -07:00
Yujun Zhang
ecfc7d10e8 disp: msm: sde: Fix suspend-resume issue after switching dsi clk
Fixes suspend-resume not working after switching dsi clk for
video mode. While switching the dsi clk, FLAG_SEAMLESS_DYN_CLK
is set leading to enable dsi clks which causes extra refcount.
Add check for command mode.

Change-Id: I814eb9c87daf387b5d57c5a3dddf7ae1e60fe784
Signed-off-by: Ritesh Kumar <riteshk@codeaurora.org>
2019-06-05 16:06:47 +08:00
Yujun Zhang
39bc44163c disp: msm: dsi: unify dynamic clk support for command mode
Currently the dynamic bit clock switch trigger for command mode
is supported via sysfs node. This might lead to unnecessary
race conditions, when dsi driver is enabling the dsi bit clock
as part of commit and at the same time if bit rate change via
sysfs happens. So make the trigger happens via kernel mode set
call as done for video mode.

Change-Id: I17acb408d2b6dbd6fa41994e56262e31e43d088b
Signed-off-by: Ritesh Kumar <riteshk@codeaurora.org>
Signed-off-by: Yujun Zhang <yujunzhang@codeaurora.org>
2019-06-05 16:06:36 +08:00
Yujun Zhang
b0f2e2222e disp: msm: dsi: add support for dsi dynamic clock switch
This change adds support for dynamic switching of dsi clocks
to avoid RF interference issues. Also with dynamic dsi clock
switch feature coming into picture, now populate the supported
refresh rate as list instead of providing a range. Modify the
logic to enumerate all the modes in dsi driver, taking dynamic
bit clocks, resolutions and refresh rates into account.

Change-Id: I5b6e62bc935cf2234bdd96fcb3c7537b4e735fff
Signed-off-by: Sandeep Panda <spanda@codeaurora.org>
Signed-off-by: Ritesh Kumar <riteshk@codeaurora.org>
Signed-off-by: Yujun Zhang <yujunzhang@codeaurora.org>
2019-06-05 16:06:27 +08:00
qctecmdr
9d87e36a77 Merge "disp: msm: add changes missing during snapshots" 2019-06-04 23:42:23 -07:00
Samantha Tran
1ab07a4d7c disp: msm: add changes missing during snapshots
This change ports the missing changes from 4.14 to 4.19
that were missed. It includes changes up until
commit 0f8fb25421ff ("cnss2: Add device version to
SOC info structure").

Change-Id: Idfdfe891f146e389e3c65cc3fc4c98d93220e789
Signed-off-by: Samantha Tran <samtran@codeaurora.org>
2019-06-03 09:07:38 -07:00
qctecmdr
b84d2c5ad0 Merge "disp: msm: sde: dynamic lm reservation for secondary disp" 2019-05-31 16:20:33 -07:00
Veera Sundaram Sankaran
8b8fbfbeef disp: msm: sde: fix rm/kms for handling all cont-splash cases
Fix resource and splash buffer handling in resource manager
and sde_kms to support continuous splash to be enabled/disabled
independently in multiple built-in display usecase.

Change-Id: I446ea9b08a794e2b053c37f55b31e51404bbcf71
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
2019-05-31 15:58:40 -07:00
Veera Sundaram Sankaran
bce30d62b7 disp: msm: allow DMS before cont-splash handoff
Currently dynamic mode-switch is allowed only after
the cont-splash handoff is handled during the first
frame. Remove this restriction for cmd-mode alone as
it can handle the use-case.

Change-Id: I5f9dc758f50a91fec0b9f710c74f2ea78c4e75eb
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
2019-05-30 15:26:44 -07:00
qctecmdr
9c05197ef9 Merge "disp: msm: sde: use wr_ptr interrupt instead of ctl_start" 2019-05-24 09:38:19 -07:00
Nilaan Gunabalachandran
52855c704a disp: msm: sde: dynamic lm reservation for secondary disp
Primary and secondary displays should have first priority
when reserving lms. Static reservation can potentially block
higher resolutions for the required displays. This patch gets
the layer mixer requirement for primary or secondary display
if available. It reserves those layer mixers dynamically
for the respective display when connector is registered.

Change-Id: Id69dac4c72d6b20008049f4aeb71c0f97d0a426b
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-05-24 06:35:07 -07:00
Veera Sundaram Sankaran
6daf1c58e7 disp: msm: sde: use wr_ptr interrupt instead of ctl_start
SDE driver triggers the frame and waits for the
ctl_start interrupt for command mode display. This interrupt
provides confirmation that hardware has picked up the
frame. Retire fence signaling is associated with
this interrupt and it is sent at the rd_ptr interrupt
after ctl_start. Due to lut dma delay, ctl_start interrupt
may be trigger before rd_ptr or after rd_ptr. SW manages
this complexity and handle retire fence for different cases
with 500us threshold logic.

This change replaces the ctl_start interrupt with wr_ptr
interrupt by programming it to trigger at 1st write line
count. This is guaranteed to come every time and it is close
to rd_ptr interrupt. That allows retire fence trigger at
wr_ptr interrupt and simplifies the SW logic. CRTC commit
thread would be held slightly longer with this change
as the wr_ptr is always close to rd_ptr and after
ctl_start.

Change-Id: Ic47a8f82c854b4aded0d70c95af853b28a68ffd6
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
2019-05-23 10:29:30 -07:00
Samantha Tran
3be27eafcc disp: msm: snapshot of msm and sde driver
This snapshot ports changes from 4.14 to 4.19 into
the msm and sde layer. Snapshot was taken as of
commit 0f8fb25421ff ("cnss2: Add device version to
SOC info structure").

Change-Id: I59b799a78319c2db6930a2a10bc38976f8c09898
Signed-off-by: Samantha Tran <samtran@codeaurora.org>
2019-05-22 13:08:31 -07:00
qctecmdr
80aed77020 Merge "disp: msm: sde: avoid rc lock deadlock during esd failure" 2019-05-22 12:20:00 -07:00
qctecmdr
3638af7654 Merge "disp: msm: sde: log pp-line count in event logs" 2019-05-20 11:33:55 -07:00
qctecmdr
118d196a8d Merge "disp: msm: sde: reduce log level for invalid encoder master" 2019-05-19 20:49:35 -07:00
qctecmdr
89a6e5d512 Merge "disp: msm: fix out-of-bound access and NULL dereference" 2019-05-19 16:45:53 -07:00
Dhaval Patel
56e88a7fdc disp: msm: sde: avoid rc lock deadlock during esd failure
Each mode_set call makes sure that previous frame is triggered
and triggers the esd check if there is pp_timeout. This may
lead to deadlock between crtc commit and event threads. Crtc
commit thread acquires the rc_lock and triggers the flush_thread
API on event_thread. Event thread again tries to acquire the
rc_lock to wait for frame. This can be prevented by avoiding the
pre_kickoff call from esd_failure notification if it is generated
through pp_timeout.

Change-Id: I561fef0345976ab0cae61aab6718214c47fa1393
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
2019-05-17 15:39:16 -07:00
Samantha Tran
0cbfaf1a4b disp: msm: fix out-of-bound access and NULL dereference
Fix possible out-of-bound access and NULL pointer
dereference in SDE and PLL driver.

Change-Id: Ic5c34b3b4c3e983413a0351c38206cf3f3ab3b1f
Signed-off-by: Samantha Tran <samtran@codeaurora.org>
2019-05-17 11:30:48 -07:00
Veera Sundaram Sankaran
1e3d105dc0 disp: msm: sde: log pp-line count in event logs
Log ping-pong current line count during ctl-start
and rd-ptr interrupt. This will help in debugging
ping-pong timeout issues.

Change-Id: I58185330fe9e8a64f48d6da60c974b23a9e68b44
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
2019-05-15 15:36:06 -07:00
Veera Sundaram Sankaran
ef68f9d670 disp: msm: sde: reduce log level for invalid encoder master
Reduce the log level from error to debug for invalid
master encoder in encoder restore path during idle
power-collapse. This would avoid unnecessary logging
when concurrent writeback gets enabled after a
power-collapse event, the restore happens based on
encoder_mask attached in the crtc before the actual
enable call for the cwb encoder.

Change-Id: I54cd7de62f1a9030f68a963c8ed27ff098302e04
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
2019-05-15 14:34:19 -07:00
Lei Chen
21edecd3b1 disp: msm: Add support for seamless panel operating mode switch
DSI display may support video mode and command mode both and it may
support transition between these two modes.
This change adds seamless transition between these two modes for DSI
display by avoiding crtc enable/disable and panel power on/off
during modeset.

Change-Id: Id7ddaef7d1f0f7cc7d52283755bad53a246adec6
Signed-off-by: Lei Chen <chenlei@codeaurora.org>
2019-05-06 18:45:44 -07:00
qctecmdr
c4ae73b9b8 Merge "disp: msm: sde: update ds atomic check for pu and cwb" 2019-04-29 01:10:01 -07:00
Lakshmi Narayana Kalavala
78560ee888 disp: msm: sde: update ds atomic check for pu and cwb
This change fixes the destination scaler atomic check
to support PU with CWB disable without an additional
frame in between. It also fixes the destination height
calculation.

Change-Id: I93ae8471d2db0b4e2574d18a873d4d4e180cbcbb
Signed-off-by: Lakshmi Narayana Kalavala <lkalaval@codeaurora.org>
2019-04-24 15:22:26 -07:00
Dhaval Patel
a74d2cf7fa disp: msm: add runtime_pm ops support in drm driver
Add runtime_pm ops support in drm driver instead
of direct sde_power_resource_enable/disable call.
It allows drm driver to use runtime pm refcount logic
to track the resources instead of custom implementation.
The change also removes the NRT_CLIENT support from
sde_power_handle code to simplify it further.

Change-Id: Ib14692dca5876703d0a230da2512d731b69b8ebb
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
2019-04-24 13:27:48 -07:00
Nilaan Gunabalachandran
9b09b9af71 drm/msm/sde: Check for cur_master NULL dereference
Check if cur_master encoder exists before using the variable in
sde encoder. This will avoid possible NULL dereferences.

Change-Id: I003386cba392a0027f7e9e8441fd4671b57b9a03
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-04-22 16:35:26 -04:00
Narendra Muppalla
3709853456 Display drivers kernel project initial snapshot
This change brings msm display driver including sde,
dp, dsi, rotator, dsi pll and dp pll from base 4.19 kernel
project. It is first source code snapshot from base kernel project.

Change-Id: Iec864c064ce5ea04e170f24414c728684002f284
Signed-off-by: Narendra Muppalla <NarendraM@codeaurora.org>
2019-04-14 22:20:59 -07:00