]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/4.14.44/usb-dwc3-omap-don-t-miss-events-during-suspend-resume.patch
4.14-stable patches
[thirdparty/kernel/stable-queue.git] / releases / 4.14.44 / usb-dwc3-omap-don-t-miss-events-during-suspend-resume.patch
1 From foo@baz Thu May 24 11:09:34 CEST 2018
2 From: Roger Quadros <rogerq@ti.com>
3 Date: Mon, 22 Jan 2018 15:01:42 +0200
4 Subject: usb: dwc3: omap: don't miss events during suspend/resume
5
6 From: Roger Quadros <rogerq@ti.com>
7
8 [ Upstream commit c49f63055e252810e5d6c83a4943b18db16b3cd8 ]
9
10 The USB cable state can change during suspend/resume
11 so be sure to check and update the extcon state.
12
13 Signed-off-by: Roger Quadros <rogerq@ti.com>
14 Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
15 Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
16 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17 ---
18 drivers/usb/dwc3/dwc3-omap.c | 16 ++++++++++++++++
19 1 file changed, 16 insertions(+)
20
21 --- a/drivers/usb/dwc3/dwc3-omap.c
22 +++ b/drivers/usb/dwc3/dwc3-omap.c
23 @@ -590,9 +590,25 @@ static int dwc3_omap_resume(struct devic
24 return 0;
25 }
26
27 +static void dwc3_omap_complete(struct device *dev)
28 +{
29 + struct dwc3_omap *omap = dev_get_drvdata(dev);
30 +
31 + if (extcon_get_state(omap->edev, EXTCON_USB))
32 + dwc3_omap_set_mailbox(omap, OMAP_DWC3_VBUS_VALID);
33 + else
34 + dwc3_omap_set_mailbox(omap, OMAP_DWC3_VBUS_OFF);
35 +
36 + if (extcon_get_state(omap->edev, EXTCON_USB_HOST))
37 + dwc3_omap_set_mailbox(omap, OMAP_DWC3_ID_GROUND);
38 + else
39 + dwc3_omap_set_mailbox(omap, OMAP_DWC3_ID_FLOAT);
40 +}
41 +
42 static const struct dev_pm_ops dwc3_omap_dev_pm_ops = {
43
44 SET_SYSTEM_SLEEP_PM_OPS(dwc3_omap_suspend, dwc3_omap_resume)
45 + .complete = dwc3_omap_complete,
46 };
47
48 #define DEV_PM_OPS (&dwc3_omap_dev_pm_ops)