Commit Graph

3581 Commits

Author SHA1 Message Date
qctecmdr
45435d6598 Merge "disp: msm: dp: skip mst display enable if payload is empty" 2023-05-31 15:48:31 -07:00
qctecmdr
2adf210808 Merge "disp: msm: dp: clear connected state if switch config fails" 2023-05-31 15:48:31 -07:00
Rajkumar Subbiah
2d4c6cf994 disp: msm: dp: clear connected state if switch config fails
During HPD High, the driver sets the CONNECTED state and then performs
a sequence of initialization operations. If any of them fails, it should
properly unwind the executed operations to restore the driver to its
initial state. This change adds error handling paths in the hpd high
handler to do just that.

Change-Id: I66a77ff73b7c11d0a59d80b8df3c4ea49a4ed3a6
Signed-off-by: Rajkumar Subbiah <quic_rsubbia@quicinc.com>
2023-05-29 14:41:06 -04:00
qctecmdr
a0778dcd49 Merge "disp: msm: sde: add support for TE level trigger" 2023-05-26 13:59:40 -07:00
qctecmdr
fc7ef746c3 Merge "disp: msm: dp: fix pbn value for MST RG calculation" 2023-05-26 13:59:39 -07:00
qctecmdr
31acaaa2f5 Merge "disp: msm: dp: change to internal lm bookkeeping" 2023-05-26 13:59:39 -07:00
qctecmdr
1a1a7d32d0 Merge "disp: msm: dsi: increase cmd dma timeout to 1200 milliseconds" 2023-05-26 13:59:38 -07:00
Amine Najahi
fea2f25ccf disp: msm: sde: add support for TE level trigger
During qsync frequency step down, it is possible for the changing
frame window to lead to frame buffers being transferred when it
is unsafe to update. Pineapple r2 hardware supports using the
panel's TE level, instead of the start window, to trigger the
frame transfer.

This change enables using TE level during QSYNC or AVR, if the
hardware supports it.

Change-Id: Ie675edaaeb80921c639905395b709f4c67134fc7
Signed-off-by: Amine Najahi <quic_anajahi@quicinc.com>
2023-05-26 09:42:03 -07:00
Yahui Wang
e280657f7f disp: msm: support 8bit and 10bit bpp switch
Support 8bit and 10bit bpp switch for display.

Change-Id: Ia5fcb330df95618596377773d0598be2b5609de1
Signed-off-by: Yahui Wang <quic_yahuiw@quicinc.com>
2023-05-25 10:15:23 +08:00
Rajkumar Subbiah
3260a80dab disp: msm: dp: skip mst display enable if payload is empty
During MST display enablement, the time slots for the display are
calculated during mst atomic check, which is then used in the
enable path. But if for some reason the payload wasn't allocated
successfully, then the enable path will have the time slots set to
0 which causes a send video timeout and also the missing payload
could result in null pointer dereferencing in step2 of mst payload
addition.

This change checks for this situation during pre-enable and returns
an error so the enable does not continue ahead.

Change-Id: If139707537b7a6dba169841ac82841851b4c09cb
Signed-off-by: Rajkumar Subbiah <quic_rsubbia@quicinc.com>
2023-05-24 15:38:59 -04:00
Andrew Bartfeld
ed36c21587 disp: msm: dp: change to internal lm bookkeeping
Previously we were updating internal layer mixer allocation
bookkeeping during every mode validation regardless of whether
the mixers were already designated in use, resulting in double
counting of in-use layer mixers.

This change prevents modification of these values if the given
connector's mode has already been previously validated so valid
modes can be returned properly.

Change-Id: Iea5dccfbc4087cc76f186101d38b605792326b16
Signed-off-by: Andrew Bartfeld <quic_abartfel@quicinc.com>
2023-05-23 15:42:10 -07:00
GG Hou
8360bd82c9 disp: msm: sde: disable CWB in quad pipe
Disable CWB in quad pipe for quad LM CWB not supported
to avoid out of bound access.

Change-Id: I7e64cf132489401f91621ccde31cba68c8076d28
Signed-off-by: GG Hou <quic_renjhou@quicinc.com>
2023-05-23 04:55:54 -07:00
Rohith Iyer
b8634f10bd disp: msm: dsi: increase cmd dma timeout to 1200 milliseconds
Change increases cmd dma timeout to 1200 milliseconds from 200 milliseconds.
There are video mode panels which can support one frame per second, if pixel
data transfer is active, then our command transfer timeout should be atleast
1000 msec.

Change-Id: I3d650d787fa6557ce474aca977906b99af1f1cbc
Signed-off-by: Rohith Iyer <quic_rohiiyer@quicinc.com>
2023-05-22 16:11:30 -07:00
qctecmdr
ae50686e33 Merge "disp: msm: sde: relax the EPT + modeswitch validation check" 2023-05-22 13:37:55 -07:00
qctecmdr
002c8e6f63 Merge "disp: msm: sde: update qos cpu mask to avoid defective cores" 2023-05-22 13:37:55 -07:00
qctecmdr
ca183b89c1 Merge "disp: msm: sde: move EPT delay from prepare_for_kickoff" 2023-05-22 13:37:55 -07:00
Andhavarapu Karthik
86724a1df9 disp: msm: sde: update qos cpu mask to avoid defective cores
CPU qos_mask populated from devicetree can have defective cpu cores
included. This change identifies and replaces the defective cores
in the qos mask with the next possible working cpu cores.

Change-Id: Ie6bad11ff36f8e2486ef568b67b3fe024f9786c7
Signed-off-by: Andhavarapu Karthik <quic_kartkart@quicinc.com>
2023-05-22 22:26:29 +05:30
qctecmdr
8ba837f763 Merge "disp: msm: sde: avoid vbif level and RP remap programming for virtual planes" 2023-05-19 08:01:53 -07:00
qctecmdr
9afc43bcbc Merge "disp: msm: dsi: Adjust DSI priority level" 2023-05-19 08:01:53 -07:00
Veera Sundaram Sankaran
c4b13a146e disp: msm: sde: relax the EPT + modeswitch validation check
Remove the validation check that rejects the concurrency of
Expected Present Time update during modeswitch, as it is
expected to get an updated EPT value during the switch.

Change-Id: Ia94aedc4ea39b9c72fb0db17e91a09a77086563b
Signed-off-by: Veera Sundaram Sankaran <quic_veeras@quicinc.com>
2023-05-18 16:28:12 -07:00
Veera Sundaram Sankaran
a086d338bf disp: msm: sde: move EPT delay from prepare_for_kickoff
Move Expected Preset Time delay from prepare_for_kickoff phase to
just before encoder kickoff. This will ensure the delay is done
towards the end of frame trigger and keeps minimal s/w programming
after the delay. This will help in cases where other unexpected
system delays occur, while coming out of sleep.

Change-Id: Ia04a9ab0455db8082b3f9f03d02db2cec5e17db5
Signed-off-by: Veera Sundaram Sankaran <quic_veeras@quicinc.com>
2023-05-18 16:27:34 -07:00
Rohith Iyer
29538faf70 disp: msm: dsi: Adjust DSI priority level
Sets DSI priority level to 7 before any commands are triggered.
This DSI priority setting is recommended by systems team as DSI 
and Lutdma uses same Xin for fetch.

Change-Id: Ife6dee5ed51874818168d92728f76108495b8727
Signed-off-by: Rohith Iyer <quic_rohiiyer@quicinc.com>
2023-05-17 11:03:52 -07:00
GG Hou
ee2ee3b129 disp: msm: sde: update flush mask in fence error case
Add a new clear_flush_mask ops in sde_hw_ctl_ops.
Flush mask update to cancel the fence error frame with
the new ops.

Change-Id: I8d03d8e83a05a652789fb38e885a3c8497e4d262
Signed-off-by: GG Hou <quic_renjhou@quicinc.com>
2023-05-14 23:58:37 -07:00
GG Hou
5f4735e2ce disp: msm: sde: fence error handling for wb and cwb retire fence
Fence error handling for wb and cwb retire fence.
Signal the retire fence for the fence error frame.

Change-Id: I0f73195c50edab4b8aefb58cea342214be87584c
Signed-off-by: GG Hou <quic_renjhou@quicinc.com>
2023-05-14 23:57:59 -07:00
GG Hou
85015a84cb disp: msm: sde: reset lutdma when fence error occurs
Reset lut dma when fence error is seen to reset the already
submitted queue.

Change-Id: Iba9ab33a2e80bdaba6b1d4ccff086e3a46f8374d
Signed-off-by: GG Hou <quic_renjhou@quicinc.com>
2023-05-14 23:57:22 -07:00
GG Hou
d2812ee4e7 disp: msm: add support for display clients to register for fence error
Add framework for display submodules like PP, DSI, DP to register
for fence error and call the client callback funtion when fence
error occurs.

Change-Id: I70cc6b01907177e6c4238c4398fe2c085a000322
Signed-off-by: GG Hou <quic_renjhou@quicinc.com>
2023-05-14 23:55:51 -07:00
GG Hou
54209fb4d0 disp: msm: sde: sw fence error handling
Sw fence error handling addresses following:
a. out of order handling
  - For cmd panel, signal the release fence and retire fence once
    sw fence error detected.
  - For vid panel, signal the fence error frame release fence and
    retire fence once sw fence error detected, hold the release
    fence of last good frame till next good frame.
b. avoid BW decrease vote
c. lut dma reset
d. cancel kickoff

Change-Id: Ic496c532a26d80e0ef0074624ef6ace01c4ab2f0
Signed-off-by: GG Hou <quic_renjhou@quicinc.com>
2023-05-15 14:54:03 +08:00
Akash Gajjar
8227b2ac26 disp: msm: sde: avoid vbif level and RP remap programming for virtual planes
Each rectangle is listed as an individual DRM plane, and since
they share a common VBIF register, there is no need to re
program the QOS remapper for the virtual plane.

Change-Id: I7af6aca1953cd61e622ef5b15353d5ea20fd73cd
Signed-off-by: Akash Gajjar <quic_agajjar@quicinc.com>
2023-05-15 11:01:02 +05:30
GG Hou
a658fb17b7 disp: msm: sde: dma fence out of order handling in fence error case
Handle out of order dma fence signalling and propagation of fence
error. Out of order fence signaling is required only in Video mode.
For example, in case of N, N+1, N+2 frames where N, N+2 are good
frames and N+1 is frame with fence error. The release fence signal
sequence in video mode would be N+1, N, N+2.

Change-Id: I8b6f88cfeee945e28571b765f24ffea22fad23b8
Signed-off-by: GG Hou <quic_renjhou@quicinc.com>
2023-05-14 20:15:49 -07:00
GG Hou
725c7a0f3d disp: msm: sde: add support for hw fence error handling
Register callback function to hw fence driver and implement the
callback funtion.

As part of fence error handling, address out of ordering of HW
fences, SW override for release fence signal and handle BW voting
in both cmd and video mode.

Change-Id: I22902762b4cc09a5f5a20cf0dd01fc336a0f0cb4
Signed-off-by: GG Hou <quic_renjhou@quicinc.com>
2023-05-14 20:13:58 -07:00
GG Hou
97b1afdda8 disp: msm: add property to handle fence error in driver
Add a new property CRTC_PROP_HANDLE_FENCE_ERROR for userspace
to enable or disable fence error handling.

Change-Id: I72370f405c5299c603b0d673720c28a68c00807a
Signed-off-by: GG Hou <quic_renjhou@quicinc.com>
2023-05-14 20:12:02 -07:00
qctecmdr
26ef97e2a5 Merge "disp: msm: dp: update main link training params" 2023-05-12 16:46:38 -07:00
Rajkumar Subbiah
4e82bfb0fa disp: msm: dp: fix pbn value for MST RG calculation
The DP MST driver calculates the PBN value for each mode during
mode enumeration. This PBN value is later used to calculate slot
count and also MST RG parameters. But if DSC and/or FEC is enabled,
then the slot calculation needs the PBN with overhead, but
RG calculator needs the one without. But currently, the driver is
using the PBN with overhead for both. This double counting of the
overhead for RG calculation causes MST FIFO overflow for certain
usecases.

This change fixes this by caching both PBN values during mode
enumeration and using the PBN value without overhead as input
to RG calculation.

Change-Id: Id58e91068c25202e6528a793ab736bc51732961f
Signed-off-by: Rajkumar Subbiah <quic_rsubbia@quicinc.com>
2023-05-11 22:48:10 -04:00
qctecmdr
ed49f6e356 Merge "disp: msm: sde: fix update of current perf bandwidth values" 2023-05-11 03:45:46 -07:00
qctecmdr
0ba41c9277 Merge "disp: msm: sde: avoid incorrect register writes in blend stage clear" 2023-05-11 03:45:46 -07:00
qctecmdr
0b4314dad4 Merge "disp: msm: dp: fix race condition during mst sim hpd" 2023-05-10 20:18:58 -07:00
qctecmdr
5da4bfb834 Merge "disp: msm: dp: configure aux switch only on state change" 2023-05-10 20:18:58 -07:00
qctecmdr
1addbbdc2c Merge "disp: msm: dp: null check before accessing mst panel" 2023-05-10 20:18:57 -07:00
Rajkumar Subbiah
fb4c097428 disp: msm: dp: fix race condition during mst sim hpd
When IRQ HPD is simulated for DP MST, the driver updates the EDID in port context
for all the ports in an effort to refresh the context with the new port count.
But currently this operation is not synchronized with other debugfs operations
and also the edid read operations on the existing port. This can cause the
sim driver to update or delete the edid data while the edid data is being
read on an existing port, which would result in an edid read failure on the
DRM driver.

This change synchronizes these operations to avoid these race conditions.

Change-Id: I692af092583ed12b3da8c6587a74ec97d98fdfec
Signed-off-by: Rajkumar Subbiah <quic_rsubbia@quicinc.com>
2023-05-10 16:18:05 -04:00
Prabhanjan Kandula
200f6c09dd disp: msm: sde: avoid incorrect register writes in blend stage clear
While clearing all blend stages, avoid writing blend config
registers for invalid dummy layer mixers introduced for dcwb.
These dummy mixers are SW only representation, these mixers
do not have respective blend config register space defined in HW.
Currently blend stage clear logic clears other undefined and
some valid registers like CTL_x_SW_RESET_OVERRIDE which is not
intended. This change limits accessing blend config registers
based on actual HW layer mixer count by ignoring dummy mixers.

Change-Id: I3a61fb6d5522b041fd6f10305b84dae449b4f2c7
Signed-off-by: Prabhanjan Kandula <quic_pkandula@quicinc.com>
2023-05-10 12:56:35 -07:00
Prabhanjan Kandula
d994b9e580 disp: msm: sde: fix update of current perf bandwidth values
In Current SDE driver, perf update check avoids bw update
in RSC state transitioning from CLOCK to SOLVER and updating
cached cur_perf bw values with out actual update to bus causes
bw update miss until usecase change trigger a new bw values
from client.

Below is the sequence of events in issue scenario.
-> wakeup frame from suspend, start with max bw voting and
	framedone successful
-> RSC state updates to CLOCK state because of delay in next
	incoming frame
-> Next frame perf update with paramschange, bw update is
	skipped as new bw  < cur bw and RSC is in CLOCK state
-> RSC updates SOLVER state after above step and commit is flushed
-> Bw update after frame is also avoided because RSC is in SOLVER
	but cur_perf is updated with new bw value.
-> from next frame if bw is same as perevious frame, voting is skipped.
	until change in bw values, vote of max bw in first frame is left.

This change fixes updating cur_perf values only when actual
bus update is intended.

Change-Id: If3ea4f178b94e9e59cd8ca563fa3510dffcc15a5
Signed-off-by: Prabhanjan Kandula <quic_pkandula@quicinc.com>
2023-05-10 12:56:25 -07:00
Shamika Joshi
42d9137a04 disp: msm: sde: fix min fps in EPT calculations
In non-qsync panels when min FPS is not published in DT,
the default min fps is set to 10 FPS. This change handles mode
switch cases, when panel FPS drops below 10 FPS by updating
min FPS to panel FPS for Expected Present Time calculations.
As part of the change, reduce 2ms from EPT to account for
scheduling delays after schedule_timeout.

Change-Id: Idc206f39adfb3517b4ea2cfa303fe53182a8e63e
Signed-off-by: Shamika Joshi <quic_shamjosh@quicinc.com>
2023-05-09 10:27:03 -07:00
qctecmdr
b02c68b75c Merge "disp: msm: sde: avoid concurrency while calculating max mode width" 2023-05-08 15:24:22 -07:00
qctecmdr
ea39f24f67 Merge "disp: msm: sde: fix out of bounds memory access" 2023-05-08 15:24:22 -07:00
qctecmdr
6ce26bb091 Merge "disp: msm: dsi: add new function to cleanup post command transfer" 2023-05-08 11:44:03 -07:00
qctecmdr
190dc72bf9 Merge "disp: msm: dsi: handle case where panel sends more bytes than requested" 2023-05-08 11:44:03 -07:00
qctecmdr
2368cac3d8 Merge "disp: msm: dsi: Send Qsync commands asynchronously to avoid frame drops" 2023-05-08 11:44:03 -07:00
qctecmdr
a0eb3b7090 Merge "disp: msm: sde: propagate the error code in dual display TUI cases" 2023-05-07 22:46:00 -07:00
Saurabh Yadav
8f73dc7e9d disp: msm: sde: fix out of bounds memory access
Change-Id: I74324fc1032086ac4362a059a9f76a6dcdc19193
Signed-off-by: Saurabh Yadav <quic_sauyad@quicinc.com>
2023-05-05 00:09:17 -07:00
Rajkumar Subbiah
5fb27733a7 disp: msm: dp: configure aux switch only on state change
The driver currently does not cache the current status of the aux switch
and calls the switch configure on any hpd event. So when there are
back to back disconnect notifications, it ends up calling switch
disconnect multiple times. But this is disrupting other operations
since the switch driver restores default settings on any call to
update settings.

This change caches the switch state and reconfigures it only on a
configuration change.

Change-Id: Ieeeaf5ac3bf8a7771b3118735422365cf2ee1f7b
Signed-off-by: Rajkumar Subbiah <quic_rsubbia@quicinc.com>
2023-05-04 17:48:06 -04:00