changed++;
        }
        if (changed)
-               schedule_delayed_work(&hub->leds, LED_CYCLE_PERIOD);
+               queue_delayed_work(system_power_efficient_wq,
+                               &hub->leds, LED_CYCLE_PERIOD);
 }
 
 /* use a short timeout for hub/port status fetches */
                if (type == HUB_INIT) {
                        delay = hub_power_on(hub, false);
                        PREPARE_DELAYED_WORK(&hub->init_work, hub_init_func2);
-                       schedule_delayed_work(&hub->init_work,
+                       queue_delayed_work(system_power_efficient_wq,
+                                       &hub->init_work,
                                        msecs_to_jiffies(delay));
 
                        /* Suppress autosuspend until init is done */
                /* Don't do a long sleep inside a workqueue routine */
                if (type == HUB_INIT2) {
                        PREPARE_DELAYED_WORK(&hub->init_work, hub_init_func3);
-                       schedule_delayed_work(&hub->init_work,
+                       queue_delayed_work(system_power_efficient_wq,
+                                       &hub->init_work,
                                        msecs_to_jiffies(delay));
                        return;         /* Continues at init3: below */
                } else {
        if (status < 0)
                dev_err(hub->intfdev, "activate --> %d\n", status);
        if (hub->has_indicators && blinkenlights)
-               schedule_delayed_work(&hub->leds, LED_CYCLE_PERIOD);
+               queue_delayed_work(system_power_efficient_wq,
+                               &hub->leds, LED_CYCLE_PERIOD);
 
        /* Scan all ports that need attention */
        kick_khubd(hub);
                /* hub LEDs are probably harder to miss than syslog */
                if (hub->has_indicators) {
                        hub->indicator[port1-1] = INDICATOR_GREEN_BLINK;
-                       schedule_delayed_work (&hub->leds, 0);
+                       queue_delayed_work(system_power_efficient_wq,
+                                       &hub->leds, 0);
                }
        }
        kfree(qual);
                                if (hub->has_indicators) {
                                        hub->indicator[port1-1] =
                                                INDICATOR_AMBER_BLINK;
-                                       schedule_delayed_work (&hub->leds, 0);
+                                       queue_delayed_work(
+                                               system_power_efficient_wq,
+                                               &hub->leds, 0);
                                }
                                status = -ENOTCONN;     /* Don't retry */
                                goto loop_disable;