1 From 7529b2574a7aaf902f1f8159fbc2a7caa74be559 Mon Sep 17 00:00:00 2001
2 From: Kai-Heng Feng <kai.heng.feng@canonical.com>
3 Date: Sat, 12 Jan 2019 03:54:24 +0800
4 Subject: USB: Add new USB LPM helpers
6 From: Kai-Heng Feng <kai.heng.feng@canonical.com>
8 commit 7529b2574a7aaf902f1f8159fbc2a7caa74be559 upstream.
10 Use new helpers to make LPM enabling/disabling more clear.
12 This is a preparation to subsequent patch.
14 Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
15 Cc: stable <stable@vger.kernel.org> # after much soaking
16 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
19 drivers/usb/core/driver.c | 12 +++++++++++-
20 drivers/usb/core/hub.c | 12 ++++++------
21 drivers/usb/core/message.c | 2 +-
22 drivers/usb/core/sysfs.c | 5 ++++-
23 drivers/usb/core/usb.h | 10 ++++++++--
24 5 files changed, 30 insertions(+), 11 deletions(-)
26 --- a/drivers/usb/core/driver.c
27 +++ b/drivers/usb/core/driver.c
28 @@ -1888,7 +1888,7 @@ int usb_runtime_idle(struct device *dev)
32 -int usb_set_usb2_hardware_lpm(struct usb_device *udev, int enable)
33 +static int usb_set_usb2_hardware_lpm(struct usb_device *udev, int enable)
35 struct usb_hcd *hcd = bus_to_hcd(udev->bus);
37 @@ -1905,6 +1905,16 @@ int usb_set_usb2_hardware_lpm(struct usb
41 +int usb_enable_usb2_hardware_lpm(struct usb_device *udev)
43 + return usb_set_usb2_hardware_lpm(udev, 1);
46 +int usb_disable_usb2_hardware_lpm(struct usb_device *udev)
48 + return usb_set_usb2_hardware_lpm(udev, 0);
51 #endif /* CONFIG_PM */
53 struct bus_type usb_bus_type = {
54 --- a/drivers/usb/core/hub.c
55 +++ b/drivers/usb/core/hub.c
56 @@ -3117,7 +3117,7 @@ int usb_port_suspend(struct usb_device *
58 /* disable USB2 hardware LPM */
59 if (udev->usb2_hw_lpm_enabled == 1)
60 - usb_set_usb2_hardware_lpm(udev, 0);
61 + usb_disable_usb2_hardware_lpm(udev);
63 if (usb_disable_ltm(udev)) {
64 dev_err(&udev->dev, "Failed to disable LTM before suspend\n.");
65 @@ -3164,7 +3164,7 @@ int usb_port_suspend(struct usb_device *
67 /* Try to enable USB2 hardware LPM again */
68 if (udev->usb2_hw_lpm_capable == 1)
69 - usb_set_usb2_hardware_lpm(udev, 1);
70 + usb_enable_usb2_hardware_lpm(udev);
72 if (udev->do_remote_wakeup)
73 (void) usb_disable_remote_wakeup(udev);
74 @@ -3444,7 +3444,7 @@ int usb_port_resume(struct usb_device *u
76 /* Try to enable USB2 hardware LPM */
77 if (udev->usb2_hw_lpm_capable == 1)
78 - usb_set_usb2_hardware_lpm(udev, 1);
79 + usb_enable_usb2_hardware_lpm(udev);
81 /* Try to enable USB3 LTM and LPM */
83 @@ -4270,7 +4270,7 @@ static void hub_set_initial_usb2_lpm_pol
84 if ((udev->bos->ext_cap->bmAttributes & cpu_to_le32(USB_BESL_SUPPORT)) ||
85 connect_type == USB_PORT_CONNECT_TYPE_HARD_WIRED) {
86 udev->usb2_hw_lpm_allowed = 1;
87 - usb_set_usb2_hardware_lpm(udev, 1);
88 + usb_enable_usb2_hardware_lpm(udev);
92 @@ -5416,7 +5416,7 @@ static int usb_reset_and_verify_device(s
93 * It will be re-enabled by the enumeration process.
95 if (udev->usb2_hw_lpm_enabled == 1)
96 - usb_set_usb2_hardware_lpm(udev, 0);
97 + usb_disable_usb2_hardware_lpm(udev);
99 /* Disable LPM and LTM while we reset the device and reinstall the alt
100 * settings. Device-initiated LPM settings, and system exit latency
101 @@ -5526,7 +5526,7 @@ static int usb_reset_and_verify_device(s
104 /* Now that the alt settings are re-installed, enable LTM and LPM. */
105 - usb_set_usb2_hardware_lpm(udev, 1);
106 + usb_enable_usb2_hardware_lpm(udev);
107 usb_unlocked_enable_lpm(udev);
108 usb_enable_ltm(udev);
109 usb_release_bos_descriptor(udev);
110 --- a/drivers/usb/core/message.c
111 +++ b/drivers/usb/core/message.c
112 @@ -1185,7 +1185,7 @@ void usb_disable_device(struct usb_devic
115 if (dev->usb2_hw_lpm_enabled == 1)
116 - usb_set_usb2_hardware_lpm(dev, 0);
117 + usb_disable_usb2_hardware_lpm(dev);
118 usb_unlocked_disable_lpm(dev);
119 usb_disable_ltm(dev);
121 --- a/drivers/usb/core/sysfs.c
122 +++ b/drivers/usb/core/sysfs.c
123 @@ -472,7 +472,10 @@ static ssize_t usb2_hardware_lpm_store(s
126 udev->usb2_hw_lpm_allowed = value;
127 - ret = usb_set_usb2_hardware_lpm(udev, value);
129 + ret = usb_enable_usb2_hardware_lpm(udev);
131 + ret = usb_disable_usb2_hardware_lpm(udev);
134 usb_unlock_device(udev);
135 --- a/drivers/usb/core/usb.h
136 +++ b/drivers/usb/core/usb.h
137 @@ -84,7 +84,8 @@ extern int usb_remote_wakeup(struct usb_
138 extern int usb_runtime_suspend(struct device *dev);
139 extern int usb_runtime_resume(struct device *dev);
140 extern int usb_runtime_idle(struct device *dev);
141 -extern int usb_set_usb2_hardware_lpm(struct usb_device *udev, int enable);
142 +extern int usb_enable_usb2_hardware_lpm(struct usb_device *udev);
143 +extern int usb_disable_usb2_hardware_lpm(struct usb_device *udev);
147 @@ -104,7 +105,12 @@ static inline int usb_autoresume_device(
151 -static inline int usb_set_usb2_hardware_lpm(struct usb_device *udev, int enable)
152 +static inline int usb_enable_usb2_hardware_lpm(struct usb_device *udev)
157 +static inline int usb_disable_usb2_hardware_lpm(struct usb_device *udev)