@@ -31,8 +31,11 @@
/* Time out Values in uSeconds*/
#define TIHELEN_ACKTIMEOUT 10000
-/* Time out for power state transition (in msecs) */
-#define PWRSTST_TIMEOUT 1500
+/*
+ * Time out for power state transition (in msecs), due to system
+ * latencies and HZ resolution this timer can vary.
+ */
+#define PWRSTST_TIMEOUT 200
/* Time delay for HOM->SAM transition. */
#define WAIT_SAM 1000000 /* in usec (1000 millisec) */
@@ -248,7 +248,7 @@ DSP_STATUS SleepDSP(struct WMD_DEV_CONTEXT *pDevContext, IN u32 dwCmd,
&pwrState);
/* Wait for DSP to move into target power state */
- while ((pwrState != targetPwrState) && --timeout) {
+ while ((pwrState != targetPwrState) && timeout--) {
if (msleep_interruptible(10)) {
pr_err("Waiting for DSP to Suspend interrupted\n");
return DSP_EFAIL;