When two clients call prm_gpr_send_pkr concurrently, g_prm.status will be
set to 0 for both clients. When client_A returns some error, g_prm.status
will be some error value and not cleared for Client_B. When audio_prm_callback
returns correct value for Client_B, g_prm.status is some error value which causes
prm_gpr_send_pkt fails for Client_B by mistake.
Move g_prm.status and g_prm.state into mutex_lock to resolve this issue.
Change-Id: Ie028533e6590bfd59b2fa08a496bbffc8793e5f6
Signed-off-by: Meng Wang <quic_mengw@quicinc.com>
Audio notify probe is defer and PDR state change is not happening before
the clients calls to audio_notifier_register(). Due to this the
service_data[service][domain].state remains as UNINIT_SERVICE (where service is
PDR domain is ADSP) and due to this audio_notifier_reg_client() return success
without registering to PDR service, which is incorrect. To avoid this, will
defer the client probes when the audio notify probe is incomplete.
Change-Id: Ib96bdb24dd92ea8b81a0201a7b48e917c7b1403c
Signed-off-by: Prasad Kumpatla <quic_pkumpatl@quicinc.com>
Correct the condition check of apm ready status during
prm_send_pkt, loop should exit if apm is ready or retry
count exceeds max count.
Change-Id: I0c32731cb3696ef388a0d17d873a8b1485b54805
Signed-off-by: Ritu Sharma <quic_ritushar@quicinc.com>
select param id vote against sleep when enter to securezone with the help of
mixer ctl from pal.
Change-Id: Icb0d6aba4b13edc0658e676eb89c996d440e9971
Signed-off-by: Prasad Kumpatla <quic_pkumpatl@quicinc.com>
Send codec register's and its value to enable/disable EAR PA
when codec duty cycling is enabled.
Change-Id: I6ce7183bda3dd2d02829d280d27e5a5573e3efcc
signed-off-by: sarath varma ganapahiraju <ganavarm@codeaurora.org>
During SSR, GPR will receive adsp down notification
first and set to SUBSYS_DOWN mode. Sometimes before
audio_prm received adsp down notification, prm_gpr_send_pkt
is called but it will get stucked in spf_core_is_apm_ready
for 30s and device crash happens. In audio_prm, before
checking if spf is ready, check if both prm and gpr are ready
to avoid getting stucked.
Change-Id: I851c140a07162e4fcf20353002ef0130441ca1db
Signed-off-by: Meng Wang <mengw@codeaurora.org>
This reverts commit 8b3578665b as
it would cause NOC issue.
Move clk reset and snd_event_notify from PD notification to
ssr_enable function to make sure these are done after GPR is
up.
Change-Id: I784ad03093846434313967bcf18c946b3ef18bfc
Signed-off-by: Meng Wang <mengw@codeaurora.org>
During SSR, prm_gpr_send_pkr may request g_prm.lock and
audio_prm_probe may reinitiaze g_prm.lock. When prm_gpr_send_pkr
unlock g_prm_lock, warning log will be there.
Move g_prm.lock init and destroy to module_init and module_exit.
Change-Id: Id410e55f9dee7c0dcb487591cda8fd21e01c7255
Signed-off-by: Meng Wang <mengw@codeaurora.org>
GPR will deregister and register to audio notifier during
SSR. When ADSP up notification comes to pinctrl LPI before
GPR is registered to audio notifier. Pinctrl LPI will
reset core vote clks however GPR is not masked as up yet
which will causes audio hold clk mutex_lock for long time
and cause kernel panic.
Add workqueue for audio_prm and pinctrl_lpi to avoid hold
clk mutex_lock for long time to resolve this issue.
Change-Id: Idcd7c7d18709dbd5ae85e19eb2abfbed009ffab1
Signed-off-by: Meng Wang <mengw@codeaurora.org>
When ADSP crashes, prm driver can get audio PD down notification from
audio notifier in one thread while prm device instance is being removed
in another thread. This leads to two threads acquiring two locks
(audio notifier & prm) in reverse order. Update audio_prm_remove function
to deregister audio_notifier without acquiring prm lock.
Change-Id: I76dda54340973dc8c4005c741b273dfbdbb1610d
Signed-off-by: Patrick Lai <plai@codeaurora.org>
audio_notifier driver has been changed to be a platform driver.
Most of initialization steps have been moved to probe function
now. Client should also call audio_notifier_register in probe
function correspondingly. Update audio_prm driver to reflect
the new call sequence.
Signed-off-by: Patrick Lai <plai@codeaurora.org>
Change-Id: I378638d403f230ed20d5275e097ec3ee52f653b7
Wait for spf_core_is_apm_ready before sending first command to
spf after bootup and after SSR.
Change-Id: I7c3a7fbb9e190310554ae716937fd6a0d036ce6f
Signed-off-by: Ritu Sharma <ritushar@codeaurora.org>
Few Fixes on the drivers we are making are
1. snd_event is not resetting client info on deregister.
2. audio_prm is not providing the snd event up notification
3. gpr_lite reversing registration seq to avoid race condition
4. pinctrl-lpi reversing reg seq to avoid race condition.
Change-Id: I749de8874b33a528cb6b386d753f5d594139a577
Signed-off-by: Bharath Tirunagaru <bharatht@codeaurora.org>
Ensure that the mutex is not signalled twice.
Also update resp_recieved variable to false before
the command is sent. This helps ensure that the
prm driver does not miss wake up signal issued
from prm_callback.
Change-Id: Ief9274768ef38095e0cadaf8e1e4b1f0dc5350ad
Signed-off-by: Taha Azzaoui <tazzaoui@codeaurora.org>