summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven Cahail <scahail@codeaurora.org>2015-12-03 13:41:45 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 21:13:26 -0700
commit3035a7709cdc0b55decb9d0fa43cbc7e9c0d9065 (patch)
treeb7de04dc84a9824c44a4729be14b7c5255b0b80d
parentea74beeae9c5d82213b7faf94464a850aa550810 (diff)
soc: qcom: glink: Introduce RX intent request timeout in SSR
The G-Link SSR driver currently does not specify a timeout for requesting RX intents. If the remote processor is not responding, the glink_tx() call for sending the SSR notification could wait forever for an RX intent and block SSR processing for the entire system. Introduce a 500ms timeout, and restart the remote processor in question if an intent is not queued within that time. This unblocks SSR processing in addition to resetting the remote processor. Change-Id: I2b00afa4e9a1b81355eedcfd7cc786afb058bee7 Signed-off-by: Steven Cahail <scahail@codeaurora.org>
-rw-r--r--drivers/soc/qcom/glink_ssr.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/soc/qcom/glink_ssr.c b/drivers/soc/qcom/glink_ssr.c
index 9f56f4b3135f..4952e12ffe3c 100644
--- a/drivers/soc/qcom/glink_ssr.c
+++ b/drivers/soc/qcom/glink_ssr.c
@@ -26,6 +26,7 @@
#include "glink_private.h"
#define GLINK_SSR_REPLY_TIMEOUT HZ
+#define GLINK_SSR_INTENT_REQ_TIMEOUT_MS 500
#define GLINK_SSR_EVENT_INIT ~0
#define NUM_LOG_PAGES 3
@@ -642,6 +643,7 @@ static int configure_and_open_channel(struct subsys_info *ss_info)
open_cfg.notify_state = glink_ssr_notify_state;
open_cfg.notify_rx_intent_req = glink_ssr_notify_rx_intent_req;
open_cfg.priv = ss_info->cb_data;
+ open_cfg.rx_intent_req_timeout_ms = GLINK_SSR_INTENT_REQ_TIMEOUT_MS;
handle = glink_open(&open_cfg);
if (IS_ERR_OR_NULL(handle)) {