greybus: arche-platform: Return immediately if in same state from state change fns
authorVaibhav Hiremath <vaibhav.hiremath@linaro.org>
Mon, 22 Feb 2016 11:57:24 +0000 (17:27 +0530)
committerGreg Kroah-Hartman <gregkh@google.com>
Wed, 24 Feb 2016 06:43:06 +0000 (22:43 -0800)
Have a check inside all individual operational state change functions
to check whether device is in same state, and if yes, then return
immediately.

Testing Done: Tested on DB3.5 platform

Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/arche-platform.c

index 591cf9dc507144b52bc4805a6593fdf958887c96..2dc11fdc5b88edfcc1ffe78435f41a94d4ec16f4 100644 (file)
@@ -133,6 +133,9 @@ static int arche_platform_coldboot_seq(struct arche_platform_drvdata *arche_pdat
 {
        int ret;
 
+       if (arche_pdata->state == ARCHE_PLATFORM_STATE_ACTIVE)
+               return 0;
+
        dev_info(arche_pdata->dev, "Booting from cold boot state\n");
 
        svc_reset_onoff(arche_pdata->svc_reset_gpio,
@@ -159,6 +162,9 @@ static int arche_platform_coldboot_seq(struct arche_platform_drvdata *arche_pdat
 
 static void arche_platform_fw_flashing_seq(struct arche_platform_drvdata *arche_pdata)
 {
+       if (arche_pdata->state == ARCHE_PLATFORM_STATE_FW_FLASHING)
+               return;
+
        dev_info(arche_pdata->dev, "Switching to FW flashing state\n");
 
        svc_reset_onoff(arche_pdata->svc_reset_gpio,
@@ -176,6 +182,9 @@ static void arche_platform_fw_flashing_seq(struct arche_platform_drvdata *arche_
 
 static void arche_platform_poweroff_seq(struct arche_platform_drvdata *arche_pdata)
 {
+       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);