Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7297267e authored by Mayank Rana's avatar Mayank Rana
Browse files

xhci-plat: Mark usb1 and usb2 devices as wakeup source



Currently usb1 and usb2 root devices are marked as wakeup capable
i.e. dev->power.can_wakeup but not set as wakeup source i.e.
dev->power.wakeup is NULL. When system suspend is being invoked,
usb_suspend() is called from PM core context which tries to match
wakeup capability with remote wakeup functionality. choose_wakeup()
API gets wakeup capability using device_may_wakeup() API which return
false (due to dev->power.wakeup is NULL). USB core sees this as
mismatch between wakeup capability and remote wakeup functionality
and resume usb1/usb2 which results into resuming USB controller
(parent of those devices). Fix this issue by marking usb1 and usb2
devices as wakeup source using device_wakeup_enable() API.

Change-Id: Ia858795c80f8852d696fd3c19ed442de1b3f1ac3
Signed-off-by: default avatarMayank Rana <mrana@codeaurora.org>
parent 6d967e6d
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -330,6 +330,8 @@ static int xhci_plat_probe(struct platform_device *pdev)
		goto dealloc_usb2_hcd;

	device_enable_async_suspend(&pdev->dev);
	device_wakeup_enable(&xhci->shared_hcd->self.root_hub->dev);
	device_wakeup_enable(&hcd->self.root_hub->dev);

	pm_runtime_mark_last_busy(&pdev->dev);
	pm_runtime_put_autosuspend(&pdev->dev);