From: Vaibhav Hiremath Date: Mon, 22 Feb 2016 11:57:25 +0000 (+0530) Subject: greybus: arche-platform: Avoid doing same thing again in poweroff fn X-Git-Tag: v4.9-rc1~119^2~378^2~21^2~660 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=25847ee7c9517f91323f9139713ebdc94c865a2e;p=karo-tx-linux.git greybus: arche-platform: Avoid doing same thing again in poweroff fn If user switches from fw_flashing => off mode, then we do not need to do same things again, for example, clk_disable and wake/detect event, as while switching to fw_flashing, driver makes sure that device goes to off state and then brings back in fw_flashing state. Testing Done: Tested on DB3.5 platform. Signed-off-by: Vaibhav Hiremath Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/greybus/arche-platform.c b/drivers/staging/greybus/arche-platform.c index 2dc11fdc5b88..efeafb373cf1 100644 --- a/drivers/staging/greybus/arche-platform.c +++ b/drivers/staging/greybus/arche-platform.c @@ -185,11 +185,15 @@ static void arche_platform_poweroff_seq(struct arche_platform_drvdata *arche_pda if (arche_pdata->state == ARCHE_PLATFORM_STATE_OFF) return; - /* Send disconnect/detach event to SVC */ - gpio_set_value(arche_pdata->wake_detect_gpio, 0); - usleep_range(100, 200); + /* If in fw_flashing mode, then no need to repeate things again */ + if (arche_pdata->state != ARCHE_PLATFORM_STATE_FW_FLASHING) { + /* Send disconnect/detach event to SVC */ + gpio_set_value(arche_pdata->wake_detect_gpio, 0); + usleep_range(100, 200); + + clk_disable_unprepare(arche_pdata->svc_ref_clk); + } - clk_disable_unprepare(arche_pdata->svc_ref_clk); /* As part of exit, put APB back in reset state */ svc_reset_onoff(arche_pdata->svc_reset_gpio, arche_pdata->is_reset_act_hi);