From 3014e29f5765fabd91c2f58534bb7b718c9e7ef5 Mon Sep 17 00:00:00 2001 From: Chandana Kishori Chiluveru Date: Mon, 7 Aug 2023 00:18:14 -0700 Subject: [PATCH] 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 --- drivers/slimbus/qcom-ngd-ctrl.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/slimbus/qcom-ngd-ctrl.c b/drivers/slimbus/qcom-ngd-ctrl.c index 66023283470f..e0aacccd50c3 100644 --- a/drivers/slimbus/qcom-ngd-ctrl.c +++ b/drivers/slimbus/qcom-ngd-ctrl.c @@ -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",