[RAMEN9610-11637][COMMON] usb: host: re-initilize runtime pm
authorKisang Lee <kisang80.lee@samsung.com>
Tue, 29 Jan 2019 07:16:10 +0000 (16:16 +0900)
committerhskang <hs1218.kang@samsung.com>
Thu, 31 Jan 2019 11:42:53 +0000 (20:42 +0900)
Change-Id: Ia630f71b0d1171e8dbeb73782ec0618d47a2bba4
Signed-off-by: Kisang Lee <kisang80.lee@samsung.com>
drivers/usb/host/xhci-plat.c [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index e7baea9..9668114
@@ -254,6 +254,29 @@ int xhci_portsc_set(u32 on)
        return -EIO;
 }
 
+static void xhci_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 xhci_plat_probe(struct platform_device *pdev)
 {
        struct device           *parent = pdev->dev.parent;
@@ -320,6 +343,8 @@ static int xhci_plat_probe(struct platform_device *pdev)
                        return ret;
        }
 
+       xhci_pm_runtime_init(&pdev->dev);
+
        ret = pm_runtime_set_active(&pdev->dev);
        if (ret != 0) {
                pr_err("USB can't enable runtime pm (%d)\n", ret);