It is possible that the ULPS entry request can potentially overlap with
the last DCS command that was sent out on the link. This is more likely
if the DCS command was sent in LP mode. In such cases, the panel could
see some issues in the LP transmission which may trigger an error when a
BTA is done subsequently. To address this, ensure that the lanes are
idle by checking that all active FIFOs are empty and the all active data
lanes are in stop state.
CRs-Fixed: 961817
Change-Id: Ia2575f06762f6bc847f64fb70e96a275712d9135
Signed-off-by: Aravind Venkateswaran <aravindh@codeaurora.org>
In the current implementation, ULPS entry/exit requests are placed
whenever DSI link clocks are disabled/enabled. However, certain
optimizations can be done avoid unnecessary transitions such as for
cases when clocks are turned off briefly prior to panel
initialization/uninitialization, and then turned right back on to send
the panel on/off commands. Add these optimizations and avoid ULPS
configuration for such cases.
CRs-Fixed: 961817
Change-Id: Ie6c666b91e86697c37e0a557f9ba47811392ae90
Signed-off-by: Aravind Venkateswaran <aravindh@codeaurora.org>
When HDMI is selected as the primary interface, we want to
retain the HDMI clock state after a successful handoff to ensure
that the interface continues to send data to the sink. We achieve
this by maintaining the HDMI PHY status when we detect that
handoff is in progress.
Change-Id: I0aaefc96d63b9eaf3928c11b5dab51cce99e1dc3
Signed-off-by: Tatenda Chipeperekwa <tatendac@codeaurora.org>
Update the panel power state after the HDMI transmitter core is
powered on for all HDMI use cases (external and primary). This
will enable other entities (e.g. Audio driver) to query the correct
power state during boot up.
Change-Id: Ie6765880e9e9d9d6f087c1726d331ef2dd632cad
Signed-off-by: Tatenda Chipeperekwa <tatendac@codeaurora.org>
This reverts commit b591582c5b5bf2ddee5e3857629bd7f39b8bdffa
("msm: mdss: hdmi: tear down audio at bootup if already started").
The programming sequence to tear down audio (as implemented on
MSM8994 platform) included directly writing to LPASS registers.
However, on 8996, TZ does not allow access to LPASS registers
from the APPS side.
Change-Id: I19c6c0d5f5019ea78463a2d0fbdbddd92edf7ab0
Signed-off-by: Tatenda Chipeperekwa <tatendac@codeaurora.org>
During boot-up, if continuous splash screen is enabled, handoff
will populate the controller and other structures after reading
hardware info. If there is a resolution switch, clear the
handoff data so that the data can be reconfigured with new
resolution info.
Change-Id: Ia524136283711e95879936603bb53c5e8f263ea6
Signed-off-by: Ajay Singh Parmar <aparmar@codeaurora.org>
Signed-off-by: Tatenda Chipeperekwa <tatendac@codeaurora.org>
Set the VCO rate properly during handoff. This VCO rate can be
used during suspend-resume to reconfigure the PLL.
Change-Id: Ib67d68f28aa5bd3a09bf7bcc5802ee3b7af342ee
Signed-off-by: Ajay Singh Parmar <aparmar@codeaurora.org>
Signed-off-by: Tatenda Chipeperekwa <tatendac@codeaurora.org>
Initialize the splash enabled flag when HDMI is primary.
This is required during probe time so the HDMI driver can
add pin-control vote, enable regulators, enable GPIOs and
enable clocks.
Change-Id: Iaaf3d983512619bda753b12e3d80ee8efe32d810
Signed-off-by: Tatenda Chipeperekwa <tatendac@codeaurora.org>
HPD (Hot Plug Detect) can be powered on or off by down stream
device like MHL or slimport driver based on cable connection
triggered by user. In response to that, HDMI transmitter power
on and off is triggered in a different thread. There can be
a race condition with transmitter power on/off and HPD power
on and off with fast plug in/out. Protect these functionalities
using mutex to avoid such race conditions and keep the HDMI state
machine in valid state.
Change-Id: I7fa8de10b96ca3cf674a0b7cf83b0f96cc177509
Signed-off-by: Ajay Singh Parmar <aparmar@codeaurora.org>
Add atraces tag to track atomic commit. This would be helpful
in analysing systraces to isolate any delays during validate
and commit cycle.
CRs-fixed: 930504
Change-Id: I204e620283926b03f3e956731145b99d81b29e6d
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
Fix writeback to use 2 LM for resolution width more than 2048.
And update the pinfo and var data structures when the writeback
output resolution is changed.
CRs-fixed: 930504
Change-Id: Id096511a26845a962c30c6ebf2102ffcb0c18a5f
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
In the current implementation, the existing feature flag to send DCS
commands only by the left controller is parsed only for command mode
panels. Extend this support to include video mode panels as well.
Change-Id: I32c5d96b514a8c4cb90fd320d589fe4252e92133
Signed-off-by: Naseer Ahmed <naseer@codeaurora.org>
The ctl_stop and vsync_handler both can run in two different
threads. That can lead to race condition in vsync handler.
-> Core 0: vsync handler thread checks the ctl power status
and get preempted by other priority task.
-> Core 1: processes the ctl_stop and power off the display
device.
-> Core 0: Vsync handler task gets chance to run again and
tries to access the ctl->op members.
The third step leads to invalid structure member access because
display is already powered off. This race condition should be
fixed by moving all power state checks inside mutex lock.
Change-Id: I452c9026074acda2d00954e530fc491d395f106b
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
There is a race condition between ESD thread and commit thread
which causes false ESD detections. This change prevents the
condition.
Change-Id: I67a480f7251348fc86be01fe8d5414857f53bc75
Signed-off-by: Naseer Ahmed <naseer@codeaurora.org>
Remove obsolete dsi fifo error status check based on
CMD_MDP_FIFO_UNDERFLOW and check the correct status from
DLNx_HS_FIFO_UNDERFLOW bits in dsi fifo status register.
CRs-Fixed: 961817
Change-Id: I3664e51ffa0fc729e949d85c3d543ec338444a9d
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
In the current implementation adv regulator get is called
from DBA driver but regulator enable or disable is never getting
called. So because of this there is power leakage in the
HDMI path. This change fixes the issue by properly configuring
the adv regulator in DBA driver.
CRs-fixed: 965732
Change-Id: If73d48fc1b34811e8b7ec4fbce91f43b5bb9285d
Signed-off-by: Sandeep Panda <spanda@codeaurora.org>
var->transp.offset is 0 for xRGB format, but currently
code allows only 24, which results in check var failure.
Add this to allow 0 also as transp offset value for xRGB.
CRs-Fixed: 969012
Change-Id: Ie52d9363e4e94bf1e3d1cecb5f391687383042b7
Signed-off-by: Jayant Shekhar <jshekhar@codeaurora.org>
When panel read command API fails, propagate the error up so that
the caller can take any necessary actions.
CRs-Fixed: 960973
Change-Id: I397f4d47c6343abbab12833a47b753dc3bdb98f0
Signed-off-by: Aravind Venkateswaran <aravindh@codeaurora.org>
Enable DDC power module and corresponding GPIOs before EDID read,
write, HDCP authentication and SCDC communication with sink to
avoid any DDC read or write failures.
Change-Id: Ia88c616d7a6149c3be190b5fbab22444448aea5d
Signed-off-by: Ajay Singh Parmar <aparmar@codeaurora.org>
Fix pixel clock value overflow when reading from the
dtsi. This fixes the frame rate calculations for 120 fps
panels; wrong frame rates were leading to low bandwidth
and mdp clock calculations, increasing the transfer
times and reducing the fps.
Change-Id: Ia41aae433f89e8970318224562b00cf0cb56767b
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
Remove dead code of sysfs node implementations which are not being
used to avoid any possible compliance issues related to sysfs nodes.
Change-Id: Ida43cbd04c7b8ec6ad79e9a4c66a7725920ba116
Signed-off-by: Ajay Singh Parmar <aparmar@codeaurora.org>
Fix HPD (hot plug detect) state with respect to rest of the system
in different use cases like cable connect/disconnect, runtime
suspend/resume, PM suspend/resume, framework stop/start and sysfs
node hpd enable/disable. Set the switch nodes to correct states
in above cases. Protect event handler, sysfs node handler, ISR
work with mutex as there can be race condition between PM events,
framework events and hardware interrupts.
Change-Id: I223602753985d7022a3394fc5f5821e6e36ab2cd
Signed-off-by: Ajay Singh Parmar <aparmar@codeaurora.org>
MDSS hardware capability node turns on clock and
check the hw revision every time client calls the
read operation. This is not required because MDSS
driver reads the revision information during MDP
driver probe.
Change-Id: I2db424f7aa1af5c5b006023f70516c2d83fe5372
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
In current implementation we are ignoring check revision
failure for ADV7533 probe which might be because the chip
itself is not connected to platform. Due to this we are not
disabling the power supply even though chip is not connected
and going ahead causing power leakage. This change fixes the
same.
Change-Id: I2181aba5978a4364d741a96f659771204fe5a2ee
Signed-off-by: Sandeep Panda <spanda@codeaurora.org>
Currently, MDP and VBIF settings are not getting programmed
after resuming from suspend due to which it gets reset to
default settings. Fix this to ensure these settings are
programmed after resume.
Change-Id: Ice00d2eaac7adde9583c9a89e8b794e3e889361d
Signed-off-by: Jayant Shekhar <jshekhar@codeaurora.org>
The DSI clocks need to sourced out of the correct DSI PLL depending
on the h/w configuration. The current assumption is that the
clk_set_parent operation on DSI branch clocks is necessary for
targets which support 2 DSI PLLs. However, there is a possibility
that the DSI clock source needs to be set even for single DSI
targets if the clock driver implements multi-parent based
approach for DSI RCG clock structures. Add change to take care
of this.
Change-Id: Ib399a8264d0d9919701c70ed6a77d50a69ec386c
Signed-off-by: Padmanabhan Komanduru <pkomandu@codeaurora.org>
Do not toggle the HPD circuitry during HDCP re-authentication as
this has undesirable side effects such as failure to detect cable
disconnection event. The HDCP engine already has a dedicated
software interface used to reset during HDCP re-authentication.
Change-Id: I76be51ea286fadabefc436613b420c4d6ac1946a
Signed-off-by: Tatenda Chipeperekwa <tatendac@codeaurora.org>
Avoid clock off from delayed off when kickoff
is pending. This sequence is leading to mdp
clocks off and on which adds extra delay in
kickoff cycle.
Change-Id: Ia30ec3ac3c2e7602a32c9eb789cd85d4736b6c60
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
There can be race condition possible between Early touch
event thread and kickoff thread. For ex:
-> Eary touch event: Turns on clock and schedule the off
after 4 vsync cycle.
-> Kickoff thread: Leaves the clock on
-> Second touch event: Reschedule the clock off workque
The second touch event call scheduling the clock off
after 4 vsync cycle. On loaded system, kickoff thread
might get intruppted and get chance to rerun after
4 vysnc cycle. The clocks will be turned off for such
use cases before PP done ISR.
Change-Id: I85923146645379be1e3ccc578fc795306cd987ad
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
Fix possible overflow while copying config id
in DSI driver.
Change-Id: I0432ddc43c62f5b25a8197f2fc06ea45e4c2738a
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
During early wake up notification, add the request
to update the fps to the default value, so we can
avoid this latency during the first frame update
after Idle.
Change-Id: I796a6ecba19f451e0f5e202c29e4de0d62a8cd5a
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
Add support for FPC without psci for cpus in DT. This mode helps reduce the
latency associated with entering Fast Power collapse by not incurring the
latency of terminating in the PSCI driver in Secure EL1.
Change-Id: I1209b62d45d10b74bd36756c4ddefa137fb571a5
Signed-off-by: Archana Sathyakumar <asathyak@codeaurora.org>
FPC using PSCI is entered from PSCI layer that is in Secure EL1.
Switching of EL layers incur additional latency, making FPC slower.
Issue wfi within hypervisor for cpu only sleep. This makes FPC much
faster than entering from PSCI layer.
Change-Id: Icf4c5f2484fdda79c991b842cb3a3185b638bfdb
Signed-off-by: Archana Sathyakumar <asathyak@codeaurora.org>
The attributes are updated to generate non-negative residency values. The
numbers do not affect the residency values.
Mode | Time Overhead | Energy OverHead | SS Power
WFI(C1) | 60 | 15000 | 200.0000
FPC(C4) | 180 | 39740 | 198.0000
Best Mode below 60 us is Active
Best Mode below 550 us in WFI
Best Mode above 550 us is FPC
Mode | Total Time Overhead | Energy OverHead | SS Power
L2 CG(D1) | 85 | 65000 | 195.0000
L2 GDHS(D3) | 180 | 89070 | 180.0000
L2 FPC(D4) | 1000 | 441000 | 160.0000
Best Mode below 85us is Active
Best Mode below 550us is WFI
Best Mode below 11500us is GDHS
Best Mode above 11500us is FPC
Mode | Total Time Overhead | Energy OverHead | SS Power
E1-M1 | 120 | 60000 | 192.0000
E3-M2 | 150 | 69000 | 160.0000
E4-M3 | 1200 | 1380000 | 72.0000
Best mode below 120 us is Active
Best mode above 11500us is FPC
Change-Id: I4ba5d1361d7a9ff72531c4921e2941c56e935484
Signed-off-by: Archana Sathyakumar <asathyak@codeaurora.org>
Enable CE clocks before calling SCM. This is required to
check if MDTP is activated during recovery and to update the DIP
as required in case it is.
Change-Id: I01907d7cebae007c7f6a33d4bf29b3e4fc6e493c
Signed-off-by: Reut Zysman <rzysman@codeaurora.org>
Signed-off-by: Amit Blay <ablay@codeaurora.org>
on 32 bit architecture xpu violations are happening because of mappings
in PK map regions. Flush the PKMAP and fixmap mappings to make sure that
there are no duplicate mappings for MBA regions. On 64 bit architecture
these functions turn out to be do while 0;
Change-Id: I9f5dc20c292688bf09d137ae7722820ae51a7d60
Signed-off-by: Arun KS <arunks@codeaurora.org>
Fix the LDO configuration and voltage update sequence.
While at it, add additional debug logging.
Change-Id: I15dbbfdf18e8694920f1344cfcd3176ffa0f7c3e
Signed-off-by: Anirudh Ghayal <aghayal@codeaurora.org>
Reset spline resampler after audio playback is completed
to clear the FIFO and avoid any noise being generated.
Change-Id: I30ed6a337c3bb08f6197f7ee575b323f0b0acfac
Signed-off-by: Phani Kumar Uppalapati <phaniu@codeaurora.org>
Update mbhc impedance detection parameters namely, LDO control
and Nshift, to get better accuracy for headphone left and right
impedance values.
Change-Id: I8b3271ee9af91b9e921957998e0fb074ffdebe86
Signed-off-by: Phani Kumar Uppalapati <phaniu@codeaurora.org>
Certain headsets have threshold on microphone for detection.
Currently mbhc driver takes about 3 to 4 seconds to detect those
headsets. Reduce delay in detection for threshold headsets by
increasing micbias to 2.7v.
Change-Id: I744bafb78560f39806d656c98582d8162fa10dfd
Signed-off-by: Phani Kumar Uppalapati <phaniu@codeaurora.org>
The generic pin control configuration for mdss should not
have gpio output settings. This change removes them so that
gpio output can be controlled in the driver.
Change-Id: I84c69571256ae5f1a11cdfe05d0ac90c49ec3d55
Signed-off-by: Naseer Ahmed <naseer@codeaurora.org>
Additional bound checks for parameters that are used
to calculate target buffer address.
Change-Id: Ib4a00a51c761dc7751a19e6ee7f55cacac97860f
Signed-off-by: Naseer Ahmed <naseer@codeaurora.org>
Framer is responsible for clocking slimbus, and when it reboots, state
of all associated data channels is reset to be consistent with HW
state.
Change-Id: Ie74ace2b20ad6c255440ff6ce593f7d5503bf388
Signed-off-by: Sagar Dharia <sdharia@codeaurora.org>
G-Link SMD Transitional XPRT resumes RX operation only when a receive
intent is queued. This leads to a communication stall if the receive
intents get re-used and is not queued.
Resume the RX operation in G-Link SMD Transitional XPRT if a receive intent
is re-used. Also access the intent_req flag exclusively to avoid any race
condition.
CRs-Fixed: 938394
Change-Id: I5a1fdc7ee35070a42659c8e701d73ee2de8d6d05
Signed-off-by: Karthikeyan Ramasubramanian <kramasub@codeaurora.org>
If a bulk message times out due to interrupt starvation, a late
coming interrupt may access structures that are not valid.
Improve timeout error handling by resetting variables, and changing
relevant logging.
Change-Id: Ie0ee2fd9c2ce1628c69e1975fe713a2a26d9e716
Signed-off-by: Sagar Dharia <sdharia@codeaurora.org>
CP_CACHE_FLUSH interrupts can storm on very rare occasions.
Check for this interrupt storm and do nothing when it occurs
rather than thrashing the CPU which can occasionally bring the
system down.
Change-Id: I0528ad4fec43abfaeeba1499d0b0e51e14b09f0d
Signed-off-by: Carter Cooper <ccooper@codeaurora.org>
Fix plug removal detection by enabling electrical removal
irq when headset/headphone accessory is removed from the
other end of extension cable.
Change-Id: I585a81e6c01b4ddd249f76614fb933beea3755fc
Signed-off-by: Phani Kumar Uppalapati <phaniu@codeaurora.org>
Add smp related files like platsmp, headsmp and
hotplug. Copied from the below caf link
https://www.codeaurora.org/cgit/quic/la/kernel/msm-3.18/
tree/arch/arm/mach-msm?h=caf/3.10/msm-3.10
&id=5724b421fc2db7413048fe5b18135d481d68597a
Change-Id: I2b0be05f939dd97efa6bd187f65f6805d73cb64e
Signed-off-by: Venkatesh Yadav Abbarapu <vabbar@codeaurora.org>