}
 
        call_gadget(hsotg, disconnect);
+       hsotg->lx_state = DWC2_L3;
 }
 
 /**
        mdelay(3);
 
        hsotg->last_rst = jiffies;
+       hsotg->lx_state = DWC2_L0;
 }
 
 static void dwc2_hsotg_core_disconnect(struct dwc2_hsotg *hsotg)
                                kill_all_requests(hsotg, hsotg->eps_out[0],
                                                          -ECONNRESET);
 
-                               hsotg->lx_state = DWC2_L0;
                                dwc2_hsotg_core_init_disconnected(hsotg, true);
                        }
                }
                 * If controller is hibernated, it must exit from hibernation
                 * before being initialized
                 */
-               if (hsotg->lx_state == DWC2_L2) {
+               if (hsotg->lx_state == DWC2_L2)
                        dwc2_exit_hibernation(hsotg, false);
-                       hsotg->lx_state = DWC2_L0;
-               }
+
                /* Kill any ep0 requests as controller will be reinitialized */
                kill_all_requests(hsotg, hsotg->eps_out[0], -ECONNRESET);
                dwc2_hsotg_core_init_disconnected(hsotg, false);