ASoc: wcd934x-dsp-cntl: notify online event after clocks are disabled

The moment the online event is notified to userspace, it may happen that
the userspace might enable the WDSP. This causes race between the
enabling of WDSP and SSR handling of WDSP. Change the sequence to notify
online event after all SSR handling is completed.

Change-Id: I3cb5d40034884cdfc35de957fab4dafd42d0697c
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
This commit is contained in:
Bhalchandra Gajare 2017-05-15 19:14:49 -07:00 committed by Gerrit - the friendly Code Review server
parent a49bb61510
commit 9f408076d4

View file

@ -763,10 +763,6 @@ static int wcd_control_handler(struct device *dev, void *priv_data,
case WDSP_EVENT_DLOAD_FAILED:
case WDSP_EVENT_POST_SHUTDOWN:
if (event == WDSP_EVENT_POST_DLOAD_CODE)
/* Mark DSP online since code download is complete */
wcd_cntl_change_online_state(cntl, 1);
/* Disable CPAR */
wcd_cntl_cpar_ctrl(cntl, false);
/* Disable all the clocks */
@ -775,6 +771,11 @@ static int wcd_control_handler(struct device *dev, void *priv_data,
dev_err(codec->dev,
"%s: Failed to disable clocks, err = %d\n",
__func__, ret);
if (event == WDSP_EVENT_POST_DLOAD_CODE)
/* Mark DSP online since code download is complete */
wcd_cntl_change_online_state(cntl, 1);
break;
case WDSP_EVENT_PRE_DLOAD_DATA: