Commit Graph
33 Commits
Author SHA1 Message Date
Nilaan Gunabalachandran c577e924d0 disp: msm: sde: poll for rsvp nxt after idle
During mode enable after idle, rsvp next would be set without
rsvp cur. Back to back test only should be serialized, but currently
this would be possible right after idle. This is established by
commit 11aab5f9c382 ("disp: msm: sde: Fix null dereference errors").
This change updates the condition to poll for rsvp next clear
during this usecase as well.

Change-Id: I300254967cbec69fff8b31545b8d659afc56f283
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2021-07-15 16:05:52 +05:30
Nilaan Gunabalachandran 7ae1b25472 disp: msm: dsi: make panel commands async for vid to cmd switch
Optimize pre mode switch panel command by transferring async. This
removes the time waited until subsequent dma_done irq.

Change-Id: I2e2516fdd641e85d1f1b221a6ea7999c868edf00
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2020-03-19 15:46:16 -04:00
Nilaan Gunabalachandran 450e03c0c2 disp: msm: dsi: maintain validated dsi msg flags
This change fixes the usecase where dsi msg flags validated only
during command transfer. This fix maintains the flags between
transfer and trigger calls. It also adds a new async override
flag to be used to bypass validate function.

Change-Id: Ie12acd3d7b01099bba65ca37cec61091408b81c5
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2020-03-19 15:46:16 -04:00
Nilaan Gunabalachandran cbde86eac0 disp: msm: sde: add tracking for if perf_mode is changed
Perf tuning mode can be updated through debugfs and this should
be used to reflect the core clock rate.

Change-Id: I313d079f0b8013f43f4b293c6400f34eaf56b6d2
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2020-03-13 15:16:03 -04:00
Nilaan Gunabalachandran df172c1eba disp: msm: sde: reduce complexity in sde_core_perf_crtc_update
Reduce cyclomatic complexity for core perf crtc update.

Change-Id: I7e110aefc64387ab40f11daf0624b9da29838fbf
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2020-03-13 12:31:56 -04:00
Nilaan Gunabalachandran 6fa1cab469 disp: msm: increase delay times while waiting to turn off rscc clocks
RSC is timing out while checking for power control register,
increasing wait times only after a poms, removes this issue.

Change-Id: I4a324eb3c87e7dfb84d9a8b0a11597327d206a74
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2020-01-22 13:43:12 -05:00
Nilaan Gunabalachandran 7768f21e15 disp: msm: sde: fix failure in perf mode clk update through debugfs
Setting perf tuning mode through debugfs during suspend can
result in underflow. Ensure that we are able to set rates,
or reset values and return to remain in normal mode.

Change-Id: Ib88de888690086d982b023b017083fee4e4d2091
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2020-01-09 15:51:37 -05:00
Nilaan Gunabalachandran 8b606a8651 disp: msm: sde: check new connector state for secure context
During wb use case, if any of the input buffers are secure,
the output buffer must also be in secure. In order to
successfully check if output buffer is secure context,
kernel needs to access new connector state.

Change-Id: Ia0124418eac35cf6d3301603e39ed45b971e2665
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-12-22 17:59:23 -08:00
Nilaan Gunabalachandran 3fa550dc41 disp: msm: sde: fix frame event signal for cwb
Submit a cwb frame event signal to notify the crtc that cwb
is completed. Currently cwb also uses the same frame done
event as primary. When a single cwb commit is completed, because
cwb is on a slower path there is a race condition in which the
subsequent frame done event for primary clears the refcount.
This fix isolates the events and removes this situation.

Change-Id: Ic3e18302eb8a497cbd7a00f271de2ab320576c83
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-12-22 17:59:11 -08:00
Nilaan Gunabalachandran d804b9eb6a disp: msm: sde: update last power event handled correctly
Update triggered power event to last event correctly,
regardless of whether a callback is called.
Add event log to see debugfs clock rate change.

Change-Id: Ifa9c1ffb450f50a3928eb44362723b6d495b2354
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-12-16 16:35:43 -05:00
Nilaan Gunabalachandran f8a79ea418 disp: msm: sde: check input & output buffer for secure context
During validate, kernel should check if input buffer frame
buffer for wb conn is in secure context. If so, the output
buffer must also be secure context, or fail validate before commit.

Change-Id: I38e50f8b2ac71c8532d9d44df08850bf33180c41
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-12-06 16:40:24 -05:00
Nilaan Gunabalachandran 19006e244e disp: msm: sde: check power event before set clk rate
Clock rate can be set from debugfs, and this can attempt to
set clock rate even when display power is not enabled.
Set clock rate should check the last power event first.

Change-Id: Ibf01753a288e5a3003928664c99aa6dbf26350d6
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-12-05 09:19:59 -05:00
Nilaan Gunabalachandran 810738f232 disp: msm: sde: null check for kms device
Check if kms device objects exist before attempting to
create memory space.

Change-Id: Idc0cbfd0ce116dab8005f72ba231dcb8c82254ca
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-11-04 13:21:41 -05:00
Nilaan Gunabalachandran 1195a394b1 Revert "disp: msm: sde: update splash resource allocation for dual display"
This reverts commit dbb1a3eee9.
This change causes regression in populating cont splash data for RM.

Change-Id: If239eb921e022fcad54033ae3c7e9e4c3dc54736
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-10-30 10:47:47 -04:00
Nilaan Gunabalachandran 423fb3468d disp: msm: sde: update clk rate for perf mode
This updates the mdp clock rate immediately,
instead of waiting for the next frame trigger.

Change-Id: I5d58a1f1200fff143b363e89e8c49f6e7d8d14c7
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-10-30 10:47:24 -04:00
Nilaan Gunabalachandran dd84cf72f4 disp: msm: sde: remove dspp blocking
RM blocks an lm path with dspp from being allocated if a dspp is
not required by topology. This can restrict using all lms to full
availability. LM preference already ensures dspp
assignment is completed to required built in displays.
This change removes blocking conditions.

Change-Id: Ifec6f27d4d10a9ea061780ed5f9e9601b893d5a0
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-10-20 17:39:05 -07:00
Nilaan Gunabalachandran 47b493a29a disp: msm: sde: add spinlocks to handle_frame_done call
By adding spin locks around the handle frame done, a race
condition, between the wait for idle of one frame, and the pp
done of the next frame, is mitigated.

Change-Id: I78650fc9688b22db6d314b9bed023e0ddad20dbf
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-10-08 11:44:03 -04:00
Nilaan Gunabalachandran d5e0182a1e disp: msm: sde: add pending flush for merge3d
While disabling merge3d block, pending flush mask
needs to be set for merge3d.

Change-Id: Ic7baea278ac62ac1203aad8a33c40874704c85a1
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-09-24 09:57:19 -04:00
Nilaan Gunabalachandran 08116fb279 disp: msm: sde: convert event logs to verbose
Reduce event logs to verbose only because they do not need
to be logged every frame.

Change-Id: I753154dc4b13cfce1382615b02e8fc7e489a5993
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-08-02 11:41:55 -04:00
Nilaan Gunabalachandran 65816e932b disp: msm: Decouple techpack components
Decouple each subcomponent by checking config flags during
compilation.
Add handling inside rotator debug to decouple event logging.

Change-Id: I3ac60444f9d18e20c28232324023e561a7aa4f96
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-07-29 09:57:06 -07:00
Nilaan Gunabalachandran 1e06ddddc3 disp: msm: sde: Add event log for uidle veto enable
Print uidle status fal10 enable bit as part of checking status.

Change-Id: Ibe00216ac22bb31fbe0925db3abc1d5dc4371ad3
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-07-23 16:22:16 -04:00
Nilaan Gunabalachandran 962d240b95 disp: msm: sde: reserve dscs considering hw pairs
RM does not currently check dsc pairs while reserving, but
this could lead to an incompatible pair being allocated. The
hw restrictions are populated from dtsi and checked during
rm reservation.

Change-Id: If561e2bd64c7643ed9ee71a255242eab84576673
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-07-23 15:55:15 -04:00
Nilaan Gunabalachandran 233ded8506 disp: msm: sde: consider num DS for mixer width
Helper function is returning the width of single mixer. During
atomic crtc check, the number of destination scaler is not
considered before width check and can fail possible higher
resolutions. The mixerwidth should be taken as a multiple of
num_ds_enabled.

Change-Id: Id9e5e0ccf0cebb54d2a242e039d8dc3676b3729f
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-07-23 12:20:41 -04:00
Nilaan Gunabalachandran e87d8f7cc5 disp: msm: sde: Secondary display lm preference with lm pair
When secondary display preference is determined and 2 layer
mixers are required, the preference must check LM pair mask
to meet hw restrictions.

Change-Id: I22845be84f95659a58be98ff11afa4e652fb16e3
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-07-15 11:22:09 -04:00
Nilaan Gunabalachandran 98434934c6 disp: msm: dp: filter modes based on sde resource availability
Not considering the currently available sde resources and
caps while filtering/validating a mode will report unavailable
modes and result in an atomic commit failure.
DP should calculate the number of required lms and verify
if lms/3dmux are available before a validating a mode.

Change-Id: Idadcc655c30f5a831c47cf22b60085052b5b9fcd
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-07-02 17:34:55 -04:00
Nilaan Gunabalachandran c7bf5c0293 disp: msm: sde: track available hw resources
Track available hw resources using a common data structure in
the sde_rm object and pass available hw resource info to
interface drivers to make informed decisions in preparing
or filtering display modes.

Change-Id: I05649623233b0f531582e8c90d1ef92c7fceded4
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-07-02 17:34:54 -04:00
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
Nilaan Gunabalachandran c6092f3e66 disp: msm: sde: log intf framecount in event logs
Log hardware interface framecount during te and vblank irqs for
command and video mode panels, respectively. This will help in
debugging any missed frames.

Change-Id: Ie86f686c4cc12de6a1f31aa47d4c7a5b8a68ea55
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-06-26 11:54:51 -04:00
Nilaan Gunabalachandran 14d6b4a342 disp: msm: sde: use high bandwidth threshold for crtc check
SDE curently uses two different bw thresholds, depending on
video and command mode panels. The lower threshold that was
being used with video mode caused perf check to fail, even
though it was still a valid functional use case. The driver
should always use the higher max bandwidth when checking
core crtc performance.

CRs-Fixed: 2470842
Change-Id: I59b85dd320ce5fcb94848d4cd4ce6d1eaf7abeaa
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-06-21 09:48:16 -04: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
Nilaan Gunabalachandran ce0fef975e disp: msm: sde: handle cont-splash & check only rm reserve
On the first commit, cont splash flag is still enabled on
encoder, but connector is not yet attached. When a check-only
rm reservation is made, it does not get released due to
cont-splash check. If cont-splash is enabled, rm should
not check for connector, but directly release rsvp_nxt.

Change-Id: I79be3c1bb20b74ce4a95786c90f3accfb587d7f2
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-04-29 09:33:25 -07:00
Nilaan Gunabalachandran 1dc7985514 disp: msm: sde: Enable lutdma support for QSeed3Lite
By enabling the sspp feature map configuration for qseed3lite,
the existing support for lutdma is used for register writes.
This will reduce the costly AHB based register write.

Change-Id: I49ba374c7317283f867bb737dc7415ea39f17b91
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
2019-04-24 15:02:44 -04: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