slimbus: qcom-ngd-ctrl: Mark capability_timeout to false during timeout

In High stress test case scenarios, BAM interrupt is getting delayed
causing timeouts for slimbus transfers. If TX timeout happens driver
treating next BAM callback is for previous delayed IRQ and returns
without handle. This is resulting to capability exchange timeouts
for next power_on sequence.

Fix this by marking capability_timeout to false during power off so that
after power_on BAM IRQ's handled properly.

Change-Id: Iae1b794010a97ea20ac6bc6d80bcca63ba318ea3
Signed-off-by: Chandana Kishori Chiluveru <quic_cchiluve@quicinc.com>
This commit is contained in:
Chandana Kishori Chiluveru 2023-08-07 00:18:14 -07:00
parent 8a32dea381
commit 3014e29f57

View File

@ -1831,6 +1831,11 @@ static int qcom_slim_ngd_ssr_pdr_notify(struct qcom_slim_ngd_ctrl *ctrl,
mutex_lock(&ctrl->suspend_resume_lock);
mutex_lock(&ctrl->tx_lock);
ctrl->state = QCOM_SLIM_NGD_CTRL_SSR_GOING_DOWN;
/*
* Mark capability_timeout to false here to handle
* BAM IRQ's from clean state.
*/
ctrl->capability_timeout = false;
SLIM_INFO(ctrl, "SLIM SSR going down\n");
pm_runtime_get_noresume(ctrl->ctrl.dev);
SLIM_INFO(ctrl, "SLIM %s: PM get_no_resume count:%d\n",