Commit f2835219 authored by Alan Stern's avatar Alan Stern Committed by Greg Kroah-Hartman

USB: combine hub_activate and hub_restart

This patch (as1071) combines hub_activate() and hub_restart() into a
single routine.  There's no point keeping them separate, since they
are always called together.
Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 948fea37
...@@ -551,22 +551,6 @@ static void hub_quiesce(struct usb_hub *hub) ...@@ -551,22 +551,6 @@ static void hub_quiesce(struct usb_hub *hub)
cancel_work_sync(&hub->tt.kevent); cancel_work_sync(&hub->tt.kevent);
} }
static void hub_activate(struct usb_hub *hub)
{
int status;
hub->quiescing = 0;
status = usb_submit_urb(hub->urb, GFP_NOIO);
if (status < 0)
dev_err(hub->intfdev, "activate --> %d\n", status);
if (hub->has_indicators && blinkenlights)
schedule_delayed_work(&hub->leds, LED_CYCLE_PERIOD);
/* scan all ports ASAP */
kick_khubd(hub);
}
static int hub_hub_status(struct usb_hub *hub, static int hub_hub_status(struct usb_hub *hub,
u16 *status, u16 *change) u16 *status, u16 *change)
{ {
...@@ -643,18 +627,24 @@ enum hub_activation_type { ...@@ -643,18 +627,24 @@ enum hub_activation_type {
HUB_INIT, HUB_POST_RESET, HUB_RESUME, HUB_RESET_RESUME HUB_INIT, HUB_POST_RESET, HUB_RESUME, HUB_RESET_RESUME
}; };
static void hub_restart(struct usb_hub *hub, enum hub_activation_type type) static void hub_activate(struct usb_hub *hub, enum hub_activation_type type)
{ {
struct usb_device *hdev = hub->hdev; struct usb_device *hdev = hub->hdev;
int port1; int port1;
int status;
bool need_debounce_delay = false; bool need_debounce_delay = false;
/* After a resume, port power should still be on.
* For any other type of activation, turn it on.
*/
if (type != HUB_RESUME)
hub_power_on(hub);
/* Check each port and set hub->change_bits to let khubd know /* Check each port and set hub->change_bits to let khubd know
* which ports need attention. * which ports need attention.
*/ */
for (port1 = 1; port1 <= hdev->maxchild; ++port1) { for (port1 = 1; port1 <= hdev->maxchild; ++port1) {
struct usb_device *udev = hdev->children[port1-1]; struct usb_device *udev = hdev->children[port1-1];
int status;
u16 portstatus, portchange; u16 portstatus, portchange;
portstatus = portchange = 0; portstatus = portchange = 0;
...@@ -729,7 +719,17 @@ static void hub_restart(struct usb_hub *hub, enum hub_activation_type type) ...@@ -729,7 +719,17 @@ static void hub_restart(struct usb_hub *hub, enum hub_activation_type type)
*/ */
if (need_debounce_delay) if (need_debounce_delay)
msleep(HUB_DEBOUNCE_STABLE); msleep(HUB_DEBOUNCE_STABLE);
hub_activate(hub);
hub->quiescing = 0;
status = usb_submit_urb(hub->urb, GFP_NOIO);
if (status < 0)
dev_err(hub->intfdev, "activate --> %d\n", status);
if (hub->has_indicators && blinkenlights)
schedule_delayed_work(&hub->leds, LED_CYCLE_PERIOD);
/* Scan all ports that need attention */
kick_khubd(hub);
} }
/* caller has locked the hub device */ /* caller has locked the hub device */
...@@ -746,8 +746,7 @@ static int hub_post_reset(struct usb_interface *intf) ...@@ -746,8 +746,7 @@ static int hub_post_reset(struct usb_interface *intf)
{ {
struct usb_hub *hub = usb_get_intfdata(intf); struct usb_hub *hub = usb_get_intfdata(intf);
hub_power_on(hub); hub_activate(hub, HUB_POST_RESET);
hub_restart(hub, HUB_POST_RESET);
return 0; return 0;
} }
...@@ -993,8 +992,7 @@ static int hub_configure(struct usb_hub *hub, ...@@ -993,8 +992,7 @@ static int hub_configure(struct usb_hub *hub,
if (hub->has_indicators && blinkenlights) if (hub->has_indicators && blinkenlights)
hub->indicator [0] = INDICATOR_CYCLE; hub->indicator [0] = INDICATOR_CYCLE;
hub_power_on(hub); hub_activate(hub, HUB_INIT);
hub_activate(hub);
return 0; return 0;
fail: fail:
...@@ -2178,7 +2176,7 @@ static int hub_resume(struct usb_interface *intf) ...@@ -2178,7 +2176,7 @@ static int hub_resume(struct usb_interface *intf)
struct usb_hub *hub = usb_get_intfdata(intf); struct usb_hub *hub = usb_get_intfdata(intf);
dev_dbg(&intf->dev, "%s\n", __func__); dev_dbg(&intf->dev, "%s\n", __func__);
hub_restart(hub, HUB_RESUME); hub_activate(hub, HUB_RESUME);
return 0; return 0;
} }
...@@ -2187,8 +2185,7 @@ static int hub_reset_resume(struct usb_interface *intf) ...@@ -2187,8 +2185,7 @@ static int hub_reset_resume(struct usb_interface *intf)
struct usb_hub *hub = usb_get_intfdata(intf); struct usb_hub *hub = usb_get_intfdata(intf);
dev_dbg(&intf->dev, "%s\n", __func__); dev_dbg(&intf->dev, "%s\n", __func__);
hub_power_on(hub); hub_activate(hub, HUB_RESET_RESUME);
hub_restart(hub, HUB_RESET_RESUME);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment