aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/core
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/core')
-rw-r--r--drivers/usb/core/hub.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 64ea21971be2..519f2c3594b2 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -499,7 +499,8 @@ static void led_work (struct work_struct *work)
499 changed++; 499 changed++;
500 } 500 }
501 if (changed) 501 if (changed)
502 schedule_delayed_work(&hub->leds, LED_CYCLE_PERIOD); 502 queue_delayed_work(system_power_efficient_wq,
503 &hub->leds, LED_CYCLE_PERIOD);
503} 504}
504 505
505/* use a short timeout for hub/port status fetches */ 506/* use a short timeout for hub/port status fetches */
@@ -1041,7 +1042,8 @@ static void hub_activate(struct usb_hub *hub, enum hub_activation_type type)
1041 if (type == HUB_INIT) { 1042 if (type == HUB_INIT) {
1042 delay = hub_power_on(hub, false); 1043 delay = hub_power_on(hub, false);
1043 PREPARE_DELAYED_WORK(&hub->init_work, hub_init_func2); 1044 PREPARE_DELAYED_WORK(&hub->init_work, hub_init_func2);
1044 schedule_delayed_work(&hub->init_work, 1045 queue_delayed_work(system_power_efficient_wq,
1046 &hub->init_work,
1045 msecs_to_jiffies(delay)); 1047 msecs_to_jiffies(delay));
1046 1048
1047 /* Suppress autosuspend until init is done */ 1049 /* Suppress autosuspend until init is done */
@@ -1195,7 +1197,8 @@ static void hub_activate(struct usb_hub *hub, enum hub_activation_type type)
1195 /* Don't do a long sleep inside a workqueue routine */ 1197 /* Don't do a long sleep inside a workqueue routine */
1196 if (type == HUB_INIT2) { 1198 if (type == HUB_INIT2) {
1197 PREPARE_DELAYED_WORK(&hub->init_work, hub_init_func3); 1199 PREPARE_DELAYED_WORK(&hub->init_work, hub_init_func3);
1198 schedule_delayed_work(&hub->init_work, 1200 queue_delayed_work(system_power_efficient_wq,
1201 &hub->init_work,
1199 msecs_to_jiffies(delay)); 1202 msecs_to_jiffies(delay));
1200 return; /* Continues at init3: below */ 1203 return; /* Continues at init3: below */
1201 } else { 1204 } else {
@@ -1209,7 +1212,8 @@ static void hub_activate(struct usb_hub *hub, enum hub_activation_type type)
1209 if (status < 0) 1212 if (status < 0)
1210 dev_err(hub->intfdev, "activate --> %d\n", status); 1213 dev_err(hub->intfdev, "activate --> %d\n", status);
1211 if (hub->has_indicators && blinkenlights) 1214 if (hub->has_indicators && blinkenlights)
1212 schedule_delayed_work(&hub->leds, LED_CYCLE_PERIOD); 1215 queue_delayed_work(system_power_efficient_wq,
1216 &hub->leds, LED_CYCLE_PERIOD);
1213 1217
1214 /* Scan all ports that need attention */ 1218 /* Scan all ports that need attention */
1215 kick_khubd(hub); 1219 kick_khubd(hub);
@@ -4311,7 +4315,8 @@ check_highspeed (struct usb_hub *hub, struct usb_device *udev, int port1)
4311 /* hub LEDs are probably harder to miss than syslog */ 4315 /* hub LEDs are probably harder to miss than syslog */
4312 if (hub->has_indicators) { 4316 if (hub->has_indicators) {
4313 hub->indicator[port1-1] = INDICATOR_GREEN_BLINK; 4317 hub->indicator[port1-1] = INDICATOR_GREEN_BLINK;
4314 schedule_delayed_work (&hub->leds, 0); 4318 queue_delayed_work(system_power_efficient_wq,
4319 &hub->leds, 0);
4315 } 4320 }
4316 } 4321 }
4317 kfree(qual); 4322 kfree(qual);
@@ -4540,7 +4545,9 @@ static void hub_port_connect_change(struct usb_hub *hub, int port1,
4540 if (hub->has_indicators) { 4545 if (hub->has_indicators) {
4541 hub->indicator[port1-1] = 4546 hub->indicator[port1-1] =
4542 INDICATOR_AMBER_BLINK; 4547 INDICATOR_AMBER_BLINK;
4543 schedule_delayed_work (&hub->leds, 0); 4548 queue_delayed_work(
4549 system_power_efficient_wq,
4550 &hub->leds, 0);
4544 } 4551 }
4545 status = -ENOTCONN; /* Don't retry */ 4552 status = -ENOTCONN; /* Don't retry */
4546 goto loop_disable; 4553 goto loop_disable;