[RAMEN9610-9517][COMMON] usb: host: re-init Runtime-PM values to fit PM balance
authorKisang Lee <kisang80.lee@samsung.com>
Sat, 15 Dec 2018 03:52:59 +0000 (12:52 +0900)
committerCosmin Tanislav <demonsingur@gmail.com>
Mon, 22 Apr 2024 17:23:09 +0000 (20:23 +0300)
Change-Id: I5fdca72c85daebc717c96398fad1ea9aac39aef6
Signed-off-by: Kisang Lee <kisang80.lee@samsung.com>
drivers/usb/dwc3/otg.c

index d33e24dae9814b311a400920c88f899b4e8b0599..50ab830fbf28a3e2b54f0e7c38ba7c2305068a5c 100644 (file)
@@ -228,6 +228,30 @@ static void dwc3_otg_ldo_control(struct otg_fsm *fsm, int on)
 
        return;
 }
+
+static void dwc3_pm_runtime_init(struct device *dev)
+{
+       dev->power.runtime_status = RPM_SUSPENDED;
+       dev->power.idle_notification = false;
+
+       dev->power.disable_depth = 1;
+       atomic_set(&dev->power.usage_count, 0);
+
+       dev->power.runtime_error = 0;
+
+       atomic_set(&dev->power.child_count, 0);
+       pm_suspend_ignore_children(dev, false);
+       dev->power.runtime_auto = true;
+
+       dev->power.request_pending = false;
+       dev->power.request = RPM_REQ_NONE;
+       dev->power.deferred_resume = false;
+       dev->power.accounting_timestamp = jiffies;
+
+       dev->power.timer_expires = 0;
+       init_waitqueue_head(&dev->power.wait_queue);
+}
+
 static int dwc3_otg_start_host(struct otg_fsm *fsm, int on)
 {
        struct usb_otg  *otg = fsm->otg;
@@ -273,6 +297,7 @@ static int dwc3_otg_start_host(struct otg_fsm *fsm, int on)
                }
 
                dwc3_otg_set_host_mode(dotg);
+               dwc3_pm_runtime_init(&dwc->xhci->dev);
                ret = platform_device_add(dwc->xhci);
                if (ret) {
                        dev_err(dev, "%s: cannot add xhci\n", __func__);