User maybe send null commit with invalid frame buffer
to kernel, so early splash's handoff should wait for
one valid commit coming with active fb.
CRs-Fixed: 2225630
Change-Id: I5ef0809791d697be264787ebe7a6ec58704cb310
Signed-off-by: Guchun Chen <guchunc@codeaurora.org>
when mode-set is called, HDP core is not enabled yet and scrambler
is not working. Move scrambler setup to pre-enable stage will fix
this problem.
Change-Id: I85d0ac22c6b789a9c0f6288b06cabf3225c20b45
Signed-off-by: Camus Wong <camusw@codeaurora.org>
Early RVC will keep running even if all display's splash
in bootloader are stopped. So kernel splash handoff
mechanism needs to be modified to match the scenario.
CRs-Fixed: 2225630
Change-Id: I0e00403f6cae0401ea23465f78cf092abfa2a611
Signed-off-by: Guchun Chen <guchunc@codeaurora.org>
Read sde registers like layer mixer and ctrl information
from bootloader when early splash is enabled in bootloader.
These information will be updated to kernel resource
manager to let bootloader and kernel use the same hardware
setting.
CRs-Fixed: 2225630
Change-Id: I0e971de1992b380e30933f476b1a7e185ce0ad96
Signed-off-by: Guchun Chen <guchunc@codeaurora.org>
Signed-off-by: Camus Wong <camusw@codeaurora.org>
When kernel operates hw ctls, early RVC in bootloader
can also co-exist to update hardware registers. So it's
needed to care the reserved pipe by early RVC before
kernel starts to handle ctl setup.
CRs-Fixed: 2225630
Change-Id: I2df06350a44bd128dfb89cc0668c41d2edfb26a6
Signed-off-by: Guchun Chen <guchunc@codeaurora.org>
GPU hardware may take longer time to process the complex
workload rendering. 2 seconds might not be enough to
finish the processing. Increase this timeout to 10seconds
for allowing GPU to render complex scene.
Change-Id: Iab3462e2bcddc8d303a6012a632d465d1508ebf8
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
Signed-off-by: Rahul Sharma <rahsha@codeaurora.org>
To achieve glitch-free purpose for early RVC case, the pipes are set
to be unavailable to user Apps. So after splash handoff is done, kernel
needs to tell user Apps the update via this uevent. User Apps will get
this event and start further operation accordingly.
CRs-Fixed: 2225630
Change-Id: I96f023d72dea9c359730d0313e65e87cf9dc1fbc
Signed-off-by: Guchun Chen <guchunc@codeaurora.org>
This patch is to support early splash on triple displays
including DSI-HDMI displays and native HDMI display, for
auto products.
CRs-Fixed: 2225630
Change-Id: I4de17eabbf2b2caf1354390f327ba7b761dc313f
Signed-off-by: Guchun Chen <guchunc@codeaurora.org>
Signed-off-by: Camus Wong <camusw@codeaurora.org>
When early RVC is enabled in bootloader, the pipes on the display
which RVC is on should not be available to uers' Apps. That means,
user should not touch and allocate the pipe for other Apps before
RVC exits. For this purpose, this patch reads the reserved pipe
information from device tree, and reports pipe availability to
user from kernel side.
In additional, user's layer mixer stage will decrease by 1 to
let RVC's layer stays on top before it exits.
CRs-Fixed: 2225630
Change-Id: Id4530afb82da52aecdf5aa48c8fbd59313da236b
Signed-off-by: Guchun Chen <guchunc@codeaurora.org>
hdmi->power_on is not properly set for pluggable platforms
leading to an incorrect return value from cable_status() call.
This partially reverts some changes from two previous commits
touching hdmi->power_on
Change-Id: Icd2d331eaed72950ab027424aaf9e1e6b901a205
Signed-off-by: Navid Bahrani <nbahrani@codeaurora.org>
SDE plane src/dst size is uninitialized and programmed to hw when
only color format is changed. This change will only configure hw
when src/dst size is calculated.
Change-Id: I5953f899a2c503b1d8f2577c28a67711b9ed9a67
Signed-off-by: Camus Wong <camusw@codeaurora.org>
Signed-off-by: Rahul Sharma <rahsha@codeaurora.org>
This change will wrap the 'hpd_off' flag with pluggable displays.
In non-pluggable display case 'hpd_off' flag prevents disabling
of HPD clocks and hence display subsystem doesn't got into suspend
state.
Change-Id: I28ade8fb60a60a15f1d23009de63bbf9f10c7c77
Signed-off-by: Rahul Sharma <rahsha@codeaurora.org>
Signed-off-by: Suprith Malligere Shankaregowda <supgow@codeaurora.org>
If the splash clean up is trigger, the MDP core power on call should
be skipped. MDP core already turned on in sde_kms_hw_init() if splash
handoff enabled.
Change-Id: Ie19c4eb2d0455b0c19615e3bb29aae4b4c6c8abf
Signed-off-by: Camus Wong <camusw@codeaurora.org>
Signed-off-by: Rahul Sharma <rahsha@codeaurora.org>
Signed-off-by: Suprith Malligere Shankaregowda <supgow@codeaurora.org>
This change fixes an unclocked hdmi register access while going
to suspend state.
When splash is enabled on HDMI interface & we are going to turn
on the hdmi bridge power. Context of sde_hdmi connector is found
to be NULL because connector was not initialized yet and we never
called sde_hdmi_core_enable which enables hpd clocks.
Now when going to suspend system would be calling clock unprepare
for clocks which were never enabled. Hence hdmi clock gets unbalanced
and resulted in unclocked access to one of the hdmi register during
disabling vblank.
Adding struct sde_hdmi as a member of struct sde_hdmi_bridge and remove
dependency on sde connector to get the hdmi display object.
Change-Id: If96324fd5152ab0e721dfd38e93a68321a615455
Signed-off-by: Camus Wong <camusw@codeaurora.org>
Signed-off-by: Rahul Sharma <rahsha@codeaurora.org>
Signed-off-by: Suprith Malligere Shankaregowda <supgow@codeaurora.org>
Store the last MDSS IRQ status value to help identify the source
of any erroneous IRQs that might cause an IRQ storm. Also, check
return codes on IRQ mapping or handling and report any unhandled
IRQs to the IRQ system.
Change-Id: I585c97c01736216556eb389bda79548c1fda2b64
Signed-off-by: Lloyd Atkinson <latkinso@codeaurora.org>
Take the callback spinlock before checking whether the callback
table list is empty. This resolves a race condition where the
callback list could be empty during the servicing of an
interrupt.
Change-Id: I8d59c0211526173ce98c8ca2dac36ec4743dc8f8
Signed-off-by: Lloyd Atkinson <latkinso@codeaurora.org>
Signed-off-by: Lakshmi Narayana Kalavala <lkalaval@codeaurora.org>
Update the sde_dbg_dump function to only dump event log
entries up to the time the dump is initiated, and increase
the number of recorded event log entries.
This places a limit on the total number of entries that are
output to the dmesg log even if more entries would have been
added while the dump is executing (e.g., interrupt events),
while still allowing the extra events to be recorded properly.
Change-Id: I66f850d21a2d0217f9049facffce074831b7e17d
Signed-off-by: Clarence Ip <cip@codeaurora.org>
Signed-off-by: Lakshmi Narayana Kalavala <lkalaval@codeaurora.org>
This change adds debugfs nodes for debugging underruns,
after this change following commands are supported:
1. To enable the underrun ftrace:
echo 1 > /d/tracing/events/sde/sde_encoder_underrun/enable
2. To enable feature that disables the ftraces once the
underrun happens:
echo 1 > /d/dri/0/debug/dbg_ctrl
3. To enable the panic in the device when underrun happens:
echo 2 > /d/dri/0/debug/dbg_ctrl
4. To enable both of the above options:
echo 3 > /d/dri/0/debug/dbg_ctrl
Change-Id: Id9f407edb0908a5f8454f08d63c356dc8f04d353
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
Signed-off-by: Jayant Shekhar <jshekhar@codeaurora.org>
Signed-off-by: Lakshmi Narayana Kalavala <lkalaval@codeaurora.org>
In concurrency test, smmu map failure appears in a low possibility.
This is caused by virtual address conflict. Display driver calls
different smmu map APIs to do map with the same domain, while the
virtual address allocation happens separately, one in dmp-mapping.c,
and another one is in msm_gem_vam.c. This could not gurantee the
virtual addresses by different callers are different in the same
mmu domain, if they are the same, the virtual address will possibily
be mapped twice, hence conflict happens.
The change is to fix this:
1. Remove the map calling for early splash buffer from msm_smmu_map.
2. Introduce one new map API early_splash_map/unmap, dedicated for
memory mapping for early splash usercase.
CRs-Fixed: 2198827
Change-Id: I8e632f1971998a14c362b5bf0ae9a5522a5a1bff
Signed-off-by: Guchun Chen <guchunc@codeaurora.org>
Pointer should be checked after returning from function or being
passed from other function. So add checker for this to avoid NULL
pointer dereference.
Change-Id: Ie86f47230b50433e08259ee5f6bbb52bedf749b1
CRs-Fixed: 2202957
Signed-off-by: Guchun Chen <guchunc@codeaurora.org>
Local variable in function should be initialized before using it.
Change-Id: I061b10913182ed11b7a8cdb1baab900ac7e10ea6
CRs-Fixed: 2202957
Signed-off-by: Guchun Chen <guchunc@codeaurora.org>
Add checker to confirm the pointer is not NULL first, to avoid
NULL pointer dereference happens.
Change-Id: Id9060725037be235303bbc0a82d91d3d2008245c
CRs-Fixed: 2202957
Signed-off-by: Guchun Chen <guchunc@codeaurora.org>
Initialize DRM/KMS enumeration properties to the first
defined value rather than 0 since enumeration properties
are meant to store the actual value rather than simply
an enumeration index.
Change-Id: I23dd62308a2d3a45c763090b6f0557634ed49d63
Signed-off-by: Clarence Ip <cip@codeaurora.org>
Remove additional release fence offset to fix deadlock between
graphics and display when only two buffers are used.
Change-Id: Ifc94dae28484e13fae6cb9a7dfd19c1cb13c7c20
Signed-off-by: Camus Wong <camusw@codeaurora.org>
Display thread processes the work assigned by HAL for
screen update. Current logic selects the thread priority
to default and causes the frame drop. This patch moves
the display thread to realtime priority to process the display
work items at realtime. Event thread must follow the
display thread priority to avoid frame_pending counters
beyond 2.
Change-Id: I9154b749550cee52da1d16d22a8418676325e769
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
Signed-off-by: Lakshmi Narayana Kalavala <lkalaval@codeaurora.org>
Add shutdown sequence in msm driver to turn off
all connectors/bridge gracefully. That will allow
the graceful shutdown for dsi panel.
Change-Id: I055bd57a45706478c785b7a3c41bf7623dd8d2e7
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
Signed-off-by: Lakshmi Narayana Kalavala <lkalaval@codeaurora.org>
Add the missing CDM block length parsed by the hardware catalog
into the hardware block data structure so that the debug dump
region can be properly registered.
Change-Id: I395164960484ede34a781785b4ed0e2a60ef0e50
Signed-off-by: Lloyd Atkinson <latkinso@codeaurora.org>
Signed-off-by: Lakshmi Narayana Kalavala <lkalaval@codeaurora.org>