dwc3_writel(dwc->regs, DWC3_DCFG, reg);
 }
 
-static int dwc3_gadget_run_stop(struct dwc3 *dwc, int is_on, int suspend)
+static int dwc3_gadget_run_stop(struct dwc3 *dwc, int is_on)
 {
        u32                     reg;
        u32                     timeout = 2000;
                        reg &= ~DWC3_DCTL_KEEP_CONNECT;
                reg |= DWC3_DCTL_RUN_STOP;
 
-               if (dwc->has_hibernation)
-                       reg |= DWC3_DCTL_KEEP_CONNECT;
-
                __dwc3_gadget_set_speed(dwc);
                dwc->pullups_connected = true;
        } else {
                reg &= ~DWC3_DCTL_RUN_STOP;
 
-               if (dwc->has_hibernation && !suspend)
-                       reg &= ~DWC3_DCTL_KEEP_CONNECT;
-
                dwc->pullups_connected = false;
        }
 
         * remaining event generated by the controller while polling for
         * DSTS.DEVCTLHLT.
         */
-       return dwc3_gadget_run_stop(dwc, false, false);
+       return dwc3_gadget_run_stop(dwc, false);
 }
 
 static int dwc3_gadget_pullup(struct usb_gadget *g, int is_on)
 
                dwc3_event_buffers_setup(dwc);
                __dwc3_gadget_start(dwc);
-               ret = dwc3_gadget_run_stop(dwc, true, false);
+               ret = dwc3_gadget_run_stop(dwc, true);
        }
 
        pm_runtime_put(dwc->dev);
        dwc->link_state = next;
 }
 
-static void dwc3_gadget_hibernation_interrupt(struct dwc3 *dwc,
-               unsigned int evtinfo)
-{
-       unsigned int is_ss = evtinfo & BIT(4);
-
-       /*
-        * WORKAROUND: DWC3 revision 2.20a with hibernation support
-        * have a known issue which can cause USB CV TD.9.23 to fail
-        * randomly.
-        *
-        * Because of this issue, core could generate bogus hibernation
-        * events which SW needs to ignore.
-        *
-        * Refers to:
-        *
-        * STAR#9000546576: Device Mode Hibernation: Issue in USB 2.0
-        * Device Fallback from SuperSpeed
-        */
-       if (is_ss ^ (dwc->speed == USB_SPEED_SUPER))
-               return;
-
-       /* enter hibernation here */
-}
-
 static void dwc3_gadget_interrupt(struct dwc3 *dwc,
                const struct dwc3_event_devt *event)
 {
                dwc3_gadget_wakeup_interrupt(dwc, event->event_info);
                break;
        case DWC3_DEVICE_EVENT_HIBER_REQ:
-               if (dev_WARN_ONCE(dwc->dev, !dwc->has_hibernation,
-                                       "unexpected hibernation event\n"))
-                       break;
-
-               dwc3_gadget_hibernation_interrupt(dwc, event->event_info);
+               dev_WARN_ONCE(dwc->dev, true, "unexpected hibernation event\n");
                break;
        case DWC3_DEVICE_EVENT_LINK_STATUS_CHANGE:
                dwc3_gadget_linksts_change_interrupt(dwc, event->event_info);
        if (!dwc->gadget_driver)
                return 0;
 
-       dwc3_gadget_run_stop(dwc, false, false);
+       dwc3_gadget_run_stop(dwc, false);
 
        spin_lock_irqsave(&dwc->lock, flags);
        dwc3_disconnect_gadget(dwc);
        if (ret < 0)
                goto err0;
 
-       ret = dwc3_gadget_run_stop(dwc, true, false);
+       ret = dwc3_gadget_run_stop(dwc, true);
        if (ret < 0)
                goto err1;