This source file includes following definitions.
- usb_store_new_id
- usb_show_dynids
- new_id_show
- new_id_store
- remove_id_store
- remove_id_show
- usb_create_newid_files
- usb_remove_newid_files
- usb_free_dynids
- usb_match_dynamic_id
- usb_probe_device
- usb_unbind_device
- usb_probe_interface
- usb_unbind_interface
- usb_driver_claim_interface
- usb_driver_release_interface
- usb_match_device
- usb_match_one_id_intf
- usb_match_one_id
- usb_match_id
- usb_device_match
- usb_uevent
- usb_register_device_driver
- usb_deregister_device_driver
- usb_register_driver
- usb_deregister
- usb_forced_unbind_intf
- unbind_marked_interfaces
- usb_rebind_intf
- rebind_marked_interfaces
- usb_unbind_and_rebind_marked_interfaces
- unbind_no_pm_drivers_interfaces
- usb_suspend_device
- usb_resume_device
- usb_suspend_interface
- usb_resume_interface
- usb_suspend_both
- usb_resume_both
- choose_wakeup
- usb_suspend
- usb_resume_complete
- usb_resume
- usb_enable_autosuspend
- usb_disable_autosuspend
- usb_autosuspend_device
- usb_autoresume_device
- usb_autopm_put_interface
- usb_autopm_put_interface_async
- usb_autopm_put_interface_no_suspend
- usb_autopm_get_interface
- usb_autopm_get_interface_async
- usb_autopm_get_interface_no_resume
- autosuspend_check
- usb_runtime_suspend
- usb_runtime_resume
- usb_runtime_idle
- usb_set_usb2_hardware_lpm
- usb_enable_usb2_hardware_lpm
- usb_disable_usb2_hardware_lpm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 #include <linux/device.h>
29 #include <linux/slab.h>
30 #include <linux/export.h>
31 #include <linux/usb.h>
32 #include <linux/usb/quirks.h>
33 #include <linux/usb/hcd.h>
34
35 #include "usb.h"
36
37
38
39
40
41
42 ssize_t usb_store_new_id(struct usb_dynids *dynids,
43 const struct usb_device_id *id_table,
44 struct device_driver *driver,
45 const char *buf, size_t count)
46 {
47 struct usb_dynid *dynid;
48 u32 idVendor = 0;
49 u32 idProduct = 0;
50 unsigned int bInterfaceClass = 0;
51 u32 refVendor, refProduct;
52 int fields = 0;
53 int retval = 0;
54
55 fields = sscanf(buf, "%x %x %x %x %x", &idVendor, &idProduct,
56 &bInterfaceClass, &refVendor, &refProduct);
57 if (fields < 2)
58 return -EINVAL;
59
60 dynid = kzalloc(sizeof(*dynid), GFP_KERNEL);
61 if (!dynid)
62 return -ENOMEM;
63
64 INIT_LIST_HEAD(&dynid->node);
65 dynid->id.idVendor = idVendor;
66 dynid->id.idProduct = idProduct;
67 dynid->id.match_flags = USB_DEVICE_ID_MATCH_DEVICE;
68 if (fields > 2 && bInterfaceClass) {
69 if (bInterfaceClass > 255) {
70 retval = -EINVAL;
71 goto fail;
72 }
73
74 dynid->id.bInterfaceClass = (u8)bInterfaceClass;
75 dynid->id.match_flags |= USB_DEVICE_ID_MATCH_INT_CLASS;
76 }
77
78 if (fields > 4) {
79 const struct usb_device_id *id = id_table;
80
81 if (!id) {
82 retval = -ENODEV;
83 goto fail;
84 }
85
86 for (; id->match_flags; id++)
87 if (id->idVendor == refVendor && id->idProduct == refProduct)
88 break;
89
90 if (id->match_flags) {
91 dynid->id.driver_info = id->driver_info;
92 } else {
93 retval = -ENODEV;
94 goto fail;
95 }
96 }
97
98 spin_lock(&dynids->lock);
99 list_add_tail(&dynid->node, &dynids->list);
100 spin_unlock(&dynids->lock);
101
102 retval = driver_attach(driver);
103
104 if (retval)
105 return retval;
106 return count;
107
108 fail:
109 kfree(dynid);
110 return retval;
111 }
112 EXPORT_SYMBOL_GPL(usb_store_new_id);
113
114 ssize_t usb_show_dynids(struct usb_dynids *dynids, char *buf)
115 {
116 struct usb_dynid *dynid;
117 size_t count = 0;
118
119 list_for_each_entry(dynid, &dynids->list, node)
120 if (dynid->id.bInterfaceClass != 0)
121 count += scnprintf(&buf[count], PAGE_SIZE - count, "%04x %04x %02x\n",
122 dynid->id.idVendor, dynid->id.idProduct,
123 dynid->id.bInterfaceClass);
124 else
125 count += scnprintf(&buf[count], PAGE_SIZE - count, "%04x %04x\n",
126 dynid->id.idVendor, dynid->id.idProduct);
127 return count;
128 }
129 EXPORT_SYMBOL_GPL(usb_show_dynids);
130
131 static ssize_t new_id_show(struct device_driver *driver, char *buf)
132 {
133 struct usb_driver *usb_drv = to_usb_driver(driver);
134
135 return usb_show_dynids(&usb_drv->dynids, buf);
136 }
137
138 static ssize_t new_id_store(struct device_driver *driver,
139 const char *buf, size_t count)
140 {
141 struct usb_driver *usb_drv = to_usb_driver(driver);
142
143 return usb_store_new_id(&usb_drv->dynids, usb_drv->id_table, driver, buf, count);
144 }
145 static DRIVER_ATTR_RW(new_id);
146
147
148
149
150 static ssize_t remove_id_store(struct device_driver *driver, const char *buf,
151 size_t count)
152 {
153 struct usb_dynid *dynid, *n;
154 struct usb_driver *usb_driver = to_usb_driver(driver);
155 u32 idVendor;
156 u32 idProduct;
157 int fields;
158
159 fields = sscanf(buf, "%x %x", &idVendor, &idProduct);
160 if (fields < 2)
161 return -EINVAL;
162
163 spin_lock(&usb_driver->dynids.lock);
164 list_for_each_entry_safe(dynid, n, &usb_driver->dynids.list, node) {
165 struct usb_device_id *id = &dynid->id;
166
167 if ((id->idVendor == idVendor) &&
168 (id->idProduct == idProduct)) {
169 list_del(&dynid->node);
170 kfree(dynid);
171 break;
172 }
173 }
174 spin_unlock(&usb_driver->dynids.lock);
175 return count;
176 }
177
178 static ssize_t remove_id_show(struct device_driver *driver, char *buf)
179 {
180 return new_id_show(driver, buf);
181 }
182 static DRIVER_ATTR_RW(remove_id);
183
184 static int usb_create_newid_files(struct usb_driver *usb_drv)
185 {
186 int error = 0;
187
188 if (usb_drv->no_dynamic_id)
189 goto exit;
190
191 if (usb_drv->probe != NULL) {
192 error = driver_create_file(&usb_drv->drvwrap.driver,
193 &driver_attr_new_id);
194 if (error == 0) {
195 error = driver_create_file(&usb_drv->drvwrap.driver,
196 &driver_attr_remove_id);
197 if (error)
198 driver_remove_file(&usb_drv->drvwrap.driver,
199 &driver_attr_new_id);
200 }
201 }
202 exit:
203 return error;
204 }
205
206 static void usb_remove_newid_files(struct usb_driver *usb_drv)
207 {
208 if (usb_drv->no_dynamic_id)
209 return;
210
211 if (usb_drv->probe != NULL) {
212 driver_remove_file(&usb_drv->drvwrap.driver,
213 &driver_attr_remove_id);
214 driver_remove_file(&usb_drv->drvwrap.driver,
215 &driver_attr_new_id);
216 }
217 }
218
219 static void usb_free_dynids(struct usb_driver *usb_drv)
220 {
221 struct usb_dynid *dynid, *n;
222
223 spin_lock(&usb_drv->dynids.lock);
224 list_for_each_entry_safe(dynid, n, &usb_drv->dynids.list, node) {
225 list_del(&dynid->node);
226 kfree(dynid);
227 }
228 spin_unlock(&usb_drv->dynids.lock);
229 }
230
231 static const struct usb_device_id *usb_match_dynamic_id(struct usb_interface *intf,
232 struct usb_driver *drv)
233 {
234 struct usb_dynid *dynid;
235
236 spin_lock(&drv->dynids.lock);
237 list_for_each_entry(dynid, &drv->dynids.list, node) {
238 if (usb_match_one_id(intf, &dynid->id)) {
239 spin_unlock(&drv->dynids.lock);
240 return &dynid->id;
241 }
242 }
243 spin_unlock(&drv->dynids.lock);
244 return NULL;
245 }
246
247
248
249 static int usb_probe_device(struct device *dev)
250 {
251 struct usb_device_driver *udriver = to_usb_device_driver(dev->driver);
252 struct usb_device *udev = to_usb_device(dev);
253 int error = 0;
254
255 dev_dbg(dev, "%s\n", __func__);
256
257
258
259
260
261
262 if (!udriver->supports_autosuspend)
263 error = usb_autoresume_device(udev);
264
265 if (!error)
266 error = udriver->probe(udev);
267 return error;
268 }
269
270
271 static int usb_unbind_device(struct device *dev)
272 {
273 struct usb_device *udev = to_usb_device(dev);
274 struct usb_device_driver *udriver = to_usb_device_driver(dev->driver);
275
276 udriver->disconnect(udev);
277 if (!udriver->supports_autosuspend)
278 usb_autosuspend_device(udev);
279 return 0;
280 }
281
282
283 static int usb_probe_interface(struct device *dev)
284 {
285 struct usb_driver *driver = to_usb_driver(dev->driver);
286 struct usb_interface *intf = to_usb_interface(dev);
287 struct usb_device *udev = interface_to_usbdev(intf);
288 const struct usb_device_id *id;
289 int error = -ENODEV;
290 int lpm_disable_error = -ENODEV;
291
292 dev_dbg(dev, "%s\n", __func__);
293
294 intf->needs_binding = 0;
295
296 if (usb_device_is_owned(udev))
297 return error;
298
299 if (udev->authorized == 0) {
300 dev_err(&intf->dev, "Device is not authorized for usage\n");
301 return error;
302 } else if (intf->authorized == 0) {
303 dev_err(&intf->dev, "Interface %d is not authorized for usage\n",
304 intf->altsetting->desc.bInterfaceNumber);
305 return error;
306 }
307
308 id = usb_match_dynamic_id(intf, driver);
309 if (!id)
310 id = usb_match_id(intf, driver->id_table);
311 if (!id)
312 return error;
313
314 dev_dbg(dev, "%s - got id\n", __func__);
315
316 error = usb_autoresume_device(udev);
317 if (error)
318 return error;
319
320 intf->condition = USB_INTERFACE_BINDING;
321
322
323
324
325
326 pm_runtime_set_active(dev);
327 pm_suspend_ignore_children(dev, false);
328 if (driver->supports_autosuspend)
329 pm_runtime_enable(dev);
330
331
332
333
334
335
336
337
338
339
340
341
342 if (driver->disable_hub_initiated_lpm) {
343 lpm_disable_error = usb_unlocked_disable_lpm(udev);
344 if (lpm_disable_error) {
345 dev_err(&intf->dev, "%s Failed to disable LPM for driver %s\n",
346 __func__, driver->name);
347 error = lpm_disable_error;
348 goto err;
349 }
350 }
351
352
353 if (intf->needs_altsetting0) {
354 error = usb_set_interface(udev, intf->altsetting[0].
355 desc.bInterfaceNumber, 0);
356 if (error < 0)
357 goto err;
358 intf->needs_altsetting0 = 0;
359 }
360
361 error = driver->probe(intf, id);
362 if (error)
363 goto err;
364
365 intf->condition = USB_INTERFACE_BOUND;
366
367
368 if (!lpm_disable_error)
369 usb_unlocked_enable_lpm(udev);
370
371 usb_autosuspend_device(udev);
372 return error;
373
374 err:
375 usb_set_intfdata(intf, NULL);
376 intf->needs_remote_wakeup = 0;
377 intf->condition = USB_INTERFACE_UNBOUND;
378
379
380 if (!lpm_disable_error)
381 usb_unlocked_enable_lpm(udev);
382
383
384 if (driver->supports_autosuspend)
385 pm_runtime_disable(dev);
386 pm_runtime_set_suspended(dev);
387
388 usb_autosuspend_device(udev);
389 return error;
390 }
391
392
393 static int usb_unbind_interface(struct device *dev)
394 {
395 struct usb_driver *driver = to_usb_driver(dev->driver);
396 struct usb_interface *intf = to_usb_interface(dev);
397 struct usb_host_endpoint *ep, **eps = NULL;
398 struct usb_device *udev;
399 int i, j, error, r;
400 int lpm_disable_error = -ENODEV;
401
402 intf->condition = USB_INTERFACE_UNBINDING;
403
404
405 udev = interface_to_usbdev(intf);
406 error = usb_autoresume_device(udev);
407
408
409
410
411
412
413 if (driver->disable_hub_initiated_lpm)
414 lpm_disable_error = usb_unlocked_disable_lpm(udev);
415
416
417
418
419
420 if (!driver->soft_unbind || udev->state == USB_STATE_NOTATTACHED)
421 usb_disable_interface(udev, intf, false);
422
423 driver->disconnect(intf);
424
425
426 for (i = 0, j = 0; i < intf->cur_altsetting->desc.bNumEndpoints; i++) {
427 ep = &intf->cur_altsetting->endpoint[i];
428 if (ep->streams == 0)
429 continue;
430 if (j == 0) {
431 eps = kmalloc_array(USB_MAXENDPOINTS, sizeof(void *),
432 GFP_KERNEL);
433 if (!eps)
434 break;
435 }
436 eps[j++] = ep;
437 }
438 if (j) {
439 usb_free_streams(intf, eps, j, GFP_KERNEL);
440 kfree(eps);
441 }
442
443
444
445
446
447
448
449 if (intf->cur_altsetting->desc.bAlternateSetting == 0) {
450
451
452
453 usb_enable_interface(udev, intf, false);
454 } else if (!error && !intf->dev.power.is_prepared) {
455 r = usb_set_interface(udev, intf->altsetting[0].
456 desc.bInterfaceNumber, 0);
457 if (r < 0)
458 intf->needs_altsetting0 = 1;
459 } else {
460 intf->needs_altsetting0 = 1;
461 }
462 usb_set_intfdata(intf, NULL);
463
464 intf->condition = USB_INTERFACE_UNBOUND;
465 intf->needs_remote_wakeup = 0;
466
467
468 if (!lpm_disable_error)
469 usb_unlocked_enable_lpm(udev);
470
471
472 if (driver->supports_autosuspend)
473 pm_runtime_disable(dev);
474 pm_runtime_set_suspended(dev);
475
476 if (!error)
477 usb_autosuspend_device(udev);
478
479 return 0;
480 }
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504 int usb_driver_claim_interface(struct usb_driver *driver,
505 struct usb_interface *iface, void *priv)
506 {
507 struct device *dev;
508 int retval = 0;
509
510 if (!iface)
511 return -ENODEV;
512
513 dev = &iface->dev;
514 if (dev->driver)
515 return -EBUSY;
516
517
518 if (!iface->authorized)
519 return -ENODEV;
520
521 dev->driver = &driver->drvwrap.driver;
522 usb_set_intfdata(iface, priv);
523 iface->needs_binding = 0;
524
525 iface->condition = USB_INTERFACE_BOUND;
526
527
528
529
530
531
532
533 pm_suspend_ignore_children(dev, false);
534 if (driver->supports_autosuspend)
535 pm_runtime_enable(dev);
536 else
537 pm_runtime_set_active(dev);
538
539
540
541
542 if (device_is_registered(dev))
543 retval = device_bind_driver(dev);
544
545 if (retval) {
546 dev->driver = NULL;
547 usb_set_intfdata(iface, NULL);
548 iface->needs_remote_wakeup = 0;
549 iface->condition = USB_INTERFACE_UNBOUND;
550
551
552
553
554
555 if (driver->supports_autosuspend)
556 pm_runtime_disable(dev);
557 pm_runtime_set_suspended(dev);
558 }
559
560 return retval;
561 }
562 EXPORT_SYMBOL_GPL(usb_driver_claim_interface);
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578 void usb_driver_release_interface(struct usb_driver *driver,
579 struct usb_interface *iface)
580 {
581 struct device *dev = &iface->dev;
582
583
584 if (!dev->driver || dev->driver != &driver->drvwrap.driver)
585 return;
586
587
588 if (iface->condition != USB_INTERFACE_BOUND)
589 return;
590 iface->condition = USB_INTERFACE_UNBINDING;
591
592
593
594
595 if (device_is_registered(dev)) {
596 device_release_driver(dev);
597 } else {
598 device_lock(dev);
599 usb_unbind_interface(dev);
600 dev->driver = NULL;
601 device_unlock(dev);
602 }
603 }
604 EXPORT_SYMBOL_GPL(usb_driver_release_interface);
605
606
607 int usb_match_device(struct usb_device *dev, const struct usb_device_id *id)
608 {
609 if ((id->match_flags & USB_DEVICE_ID_MATCH_VENDOR) &&
610 id->idVendor != le16_to_cpu(dev->descriptor.idVendor))
611 return 0;
612
613 if ((id->match_flags & USB_DEVICE_ID_MATCH_PRODUCT) &&
614 id->idProduct != le16_to_cpu(dev->descriptor.idProduct))
615 return 0;
616
617
618
619 if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_LO) &&
620 (id->bcdDevice_lo > le16_to_cpu(dev->descriptor.bcdDevice)))
621 return 0;
622
623 if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_HI) &&
624 (id->bcdDevice_hi < le16_to_cpu(dev->descriptor.bcdDevice)))
625 return 0;
626
627 if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_CLASS) &&
628 (id->bDeviceClass != dev->descriptor.bDeviceClass))
629 return 0;
630
631 if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_SUBCLASS) &&
632 (id->bDeviceSubClass != dev->descriptor.bDeviceSubClass))
633 return 0;
634
635 if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_PROTOCOL) &&
636 (id->bDeviceProtocol != dev->descriptor.bDeviceProtocol))
637 return 0;
638
639 return 1;
640 }
641
642
643 int usb_match_one_id_intf(struct usb_device *dev,
644 struct usb_host_interface *intf,
645 const struct usb_device_id *id)
646 {
647
648
649
650 if (dev->descriptor.bDeviceClass == USB_CLASS_VENDOR_SPEC &&
651 !(id->match_flags & USB_DEVICE_ID_MATCH_VENDOR) &&
652 (id->match_flags & (USB_DEVICE_ID_MATCH_INT_CLASS |
653 USB_DEVICE_ID_MATCH_INT_SUBCLASS |
654 USB_DEVICE_ID_MATCH_INT_PROTOCOL |
655 USB_DEVICE_ID_MATCH_INT_NUMBER)))
656 return 0;
657
658 if ((id->match_flags & USB_DEVICE_ID_MATCH_INT_CLASS) &&
659 (id->bInterfaceClass != intf->desc.bInterfaceClass))
660 return 0;
661
662 if ((id->match_flags & USB_DEVICE_ID_MATCH_INT_SUBCLASS) &&
663 (id->bInterfaceSubClass != intf->desc.bInterfaceSubClass))
664 return 0;
665
666 if ((id->match_flags & USB_DEVICE_ID_MATCH_INT_PROTOCOL) &&
667 (id->bInterfaceProtocol != intf->desc.bInterfaceProtocol))
668 return 0;
669
670 if ((id->match_flags & USB_DEVICE_ID_MATCH_INT_NUMBER) &&
671 (id->bInterfaceNumber != intf->desc.bInterfaceNumber))
672 return 0;
673
674 return 1;
675 }
676
677
678 int usb_match_one_id(struct usb_interface *interface,
679 const struct usb_device_id *id)
680 {
681 struct usb_host_interface *intf;
682 struct usb_device *dev;
683
684
685 if (id == NULL)
686 return 0;
687
688 intf = interface->cur_altsetting;
689 dev = interface_to_usbdev(interface);
690
691 if (!usb_match_device(dev, id))
692 return 0;
693
694 return usb_match_one_id_intf(dev, intf, id);
695 }
696 EXPORT_SYMBOL_GPL(usb_match_one_id);
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771 const struct usb_device_id *usb_match_id(struct usb_interface *interface,
772 const struct usb_device_id *id)
773 {
774
775 if (id == NULL)
776 return NULL;
777
778
779
780
781
782
783 for (; id->idVendor || id->idProduct || id->bDeviceClass ||
784 id->bInterfaceClass || id->driver_info; id++) {
785 if (usb_match_one_id(interface, id))
786 return id;
787 }
788
789 return NULL;
790 }
791 EXPORT_SYMBOL_GPL(usb_match_id);
792
793 static int usb_device_match(struct device *dev, struct device_driver *drv)
794 {
795
796 if (is_usb_device(dev)) {
797
798
799 if (!is_usb_device_driver(drv))
800 return 0;
801
802
803 return 1;
804
805 } else if (is_usb_interface(dev)) {
806 struct usb_interface *intf;
807 struct usb_driver *usb_drv;
808 const struct usb_device_id *id;
809
810
811 if (is_usb_device_driver(drv))
812 return 0;
813
814 intf = to_usb_interface(dev);
815 usb_drv = to_usb_driver(drv);
816
817 id = usb_match_id(intf, usb_drv->id_table);
818 if (id)
819 return 1;
820
821 id = usb_match_dynamic_id(intf, usb_drv);
822 if (id)
823 return 1;
824 }
825
826 return 0;
827 }
828
829 static int usb_uevent(struct device *dev, struct kobj_uevent_env *env)
830 {
831 struct usb_device *usb_dev;
832
833 if (is_usb_device(dev)) {
834 usb_dev = to_usb_device(dev);
835 } else if (is_usb_interface(dev)) {
836 struct usb_interface *intf = to_usb_interface(dev);
837
838 usb_dev = interface_to_usbdev(intf);
839 } else {
840 return 0;
841 }
842
843 if (usb_dev->devnum < 0) {
844
845 pr_debug("usb %s: already deleted?\n", dev_name(dev));
846 return -ENODEV;
847 }
848 if (!usb_dev->bus) {
849 pr_debug("usb %s: bus removed?\n", dev_name(dev));
850 return -ENODEV;
851 }
852
853
854 if (add_uevent_var(env, "PRODUCT=%x/%x/%x",
855 le16_to_cpu(usb_dev->descriptor.idVendor),
856 le16_to_cpu(usb_dev->descriptor.idProduct),
857 le16_to_cpu(usb_dev->descriptor.bcdDevice)))
858 return -ENOMEM;
859
860
861 if (add_uevent_var(env, "TYPE=%d/%d/%d",
862 usb_dev->descriptor.bDeviceClass,
863 usb_dev->descriptor.bDeviceSubClass,
864 usb_dev->descriptor.bDeviceProtocol))
865 return -ENOMEM;
866
867 return 0;
868 }
869
870
871
872
873
874
875
876
877
878
879
880
881 int usb_register_device_driver(struct usb_device_driver *new_udriver,
882 struct module *owner)
883 {
884 int retval = 0;
885
886 if (usb_disabled())
887 return -ENODEV;
888
889 new_udriver->drvwrap.for_devices = 1;
890 new_udriver->drvwrap.driver.name = new_udriver->name;
891 new_udriver->drvwrap.driver.bus = &usb_bus_type;
892 new_udriver->drvwrap.driver.probe = usb_probe_device;
893 new_udriver->drvwrap.driver.remove = usb_unbind_device;
894 new_udriver->drvwrap.driver.owner = owner;
895 new_udriver->drvwrap.driver.dev_groups = new_udriver->dev_groups;
896
897 retval = driver_register(&new_udriver->drvwrap.driver);
898
899 if (!retval)
900 pr_info("%s: registered new device driver %s\n",
901 usbcore_name, new_udriver->name);
902 else
903 printk(KERN_ERR "%s: error %d registering device "
904 " driver %s\n",
905 usbcore_name, retval, new_udriver->name);
906
907 return retval;
908 }
909 EXPORT_SYMBOL_GPL(usb_register_device_driver);
910
911
912
913
914
915
916
917
918 void usb_deregister_device_driver(struct usb_device_driver *udriver)
919 {
920 pr_info("%s: deregistering device driver %s\n",
921 usbcore_name, udriver->name);
922
923 driver_unregister(&udriver->drvwrap.driver);
924 }
925 EXPORT_SYMBOL_GPL(usb_deregister_device_driver);
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943 int usb_register_driver(struct usb_driver *new_driver, struct module *owner,
944 const char *mod_name)
945 {
946 int retval = 0;
947
948 if (usb_disabled())
949 return -ENODEV;
950
951 new_driver->drvwrap.for_devices = 0;
952 new_driver->drvwrap.driver.name = new_driver->name;
953 new_driver->drvwrap.driver.bus = &usb_bus_type;
954 new_driver->drvwrap.driver.probe = usb_probe_interface;
955 new_driver->drvwrap.driver.remove = usb_unbind_interface;
956 new_driver->drvwrap.driver.owner = owner;
957 new_driver->drvwrap.driver.mod_name = mod_name;
958 new_driver->drvwrap.driver.dev_groups = new_driver->dev_groups;
959 spin_lock_init(&new_driver->dynids.lock);
960 INIT_LIST_HEAD(&new_driver->dynids.list);
961
962 retval = driver_register(&new_driver->drvwrap.driver);
963 if (retval)
964 goto out;
965
966 retval = usb_create_newid_files(new_driver);
967 if (retval)
968 goto out_newid;
969
970 pr_info("%s: registered new interface driver %s\n",
971 usbcore_name, new_driver->name);
972
973 out:
974 return retval;
975
976 out_newid:
977 driver_unregister(&new_driver->drvwrap.driver);
978
979 printk(KERN_ERR "%s: error %d registering interface "
980 " driver %s\n",
981 usbcore_name, retval, new_driver->name);
982 goto out;
983 }
984 EXPORT_SYMBOL_GPL(usb_register_driver);
985
986
987
988
989
990
991
992
993
994
995
996
997 void usb_deregister(struct usb_driver *driver)
998 {
999 pr_info("%s: deregistering interface driver %s\n",
1000 usbcore_name, driver->name);
1001
1002 usb_remove_newid_files(driver);
1003 driver_unregister(&driver->drvwrap.driver);
1004 usb_free_dynids(driver);
1005 }
1006 EXPORT_SYMBOL_GPL(usb_deregister);
1007
1008
1009
1010
1011
1012
1013
1014 void usb_forced_unbind_intf(struct usb_interface *intf)
1015 {
1016 struct usb_driver *driver = to_usb_driver(intf->dev.driver);
1017
1018 dev_dbg(&intf->dev, "forced unbind\n");
1019 usb_driver_release_interface(driver, intf);
1020
1021
1022 intf->needs_binding = 1;
1023 }
1024
1025
1026
1027
1028
1029
1030
1031 static void unbind_marked_interfaces(struct usb_device *udev)
1032 {
1033 struct usb_host_config *config;
1034 int i;
1035 struct usb_interface *intf;
1036
1037 config = udev->actconfig;
1038 if (config) {
1039 for (i = 0; i < config->desc.bNumInterfaces; ++i) {
1040 intf = config->interface[i];
1041 if (intf->dev.driver && intf->needs_binding)
1042 usb_forced_unbind_intf(intf);
1043 }
1044 }
1045 }
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055 static void usb_rebind_intf(struct usb_interface *intf)
1056 {
1057 int rc;
1058
1059
1060 if (intf->dev.driver)
1061 usb_forced_unbind_intf(intf);
1062
1063
1064 if (!intf->dev.power.is_prepared) {
1065 intf->needs_binding = 0;
1066 rc = device_attach(&intf->dev);
1067 if (rc < 0 && rc != -EPROBE_DEFER)
1068 dev_warn(&intf->dev, "rebind failed: %d\n", rc);
1069 }
1070 }
1071
1072
1073
1074
1075
1076
1077
1078 static void rebind_marked_interfaces(struct usb_device *udev)
1079 {
1080 struct usb_host_config *config;
1081 int i;
1082 struct usb_interface *intf;
1083
1084 config = udev->actconfig;
1085 if (config) {
1086 for (i = 0; i < config->desc.bNumInterfaces; ++i) {
1087 intf = config->interface[i];
1088 if (intf->needs_binding)
1089 usb_rebind_intf(intf);
1090 }
1091 }
1092 }
1093
1094
1095
1096
1097
1098
1099
1100
1101 void usb_unbind_and_rebind_marked_interfaces(struct usb_device *udev)
1102 {
1103 unbind_marked_interfaces(udev);
1104 rebind_marked_interfaces(udev);
1105 }
1106
1107 #ifdef CONFIG_PM
1108
1109
1110
1111
1112
1113
1114
1115 static void unbind_no_pm_drivers_interfaces(struct usb_device *udev)
1116 {
1117 struct usb_host_config *config;
1118 int i;
1119 struct usb_interface *intf;
1120 struct usb_driver *drv;
1121
1122 config = udev->actconfig;
1123 if (config) {
1124 for (i = 0; i < config->desc.bNumInterfaces; ++i) {
1125 intf = config->interface[i];
1126
1127 if (intf->dev.driver) {
1128 drv = to_usb_driver(intf->dev.driver);
1129 if (!drv->suspend || !drv->resume)
1130 usb_forced_unbind_intf(intf);
1131 }
1132 }
1133 }
1134 }
1135
1136 static int usb_suspend_device(struct usb_device *udev, pm_message_t msg)
1137 {
1138 struct usb_device_driver *udriver;
1139 int status = 0;
1140
1141 if (udev->state == USB_STATE_NOTATTACHED ||
1142 udev->state == USB_STATE_SUSPENDED)
1143 goto done;
1144
1145
1146 if (udev->dev.driver)
1147 udriver = to_usb_device_driver(udev->dev.driver);
1148 else {
1149 udev->do_remote_wakeup = 0;
1150 udriver = &usb_generic_driver;
1151 }
1152 status = udriver->suspend(udev, msg);
1153
1154 done:
1155 dev_vdbg(&udev->dev, "%s: status %d\n", __func__, status);
1156 return status;
1157 }
1158
1159 static int usb_resume_device(struct usb_device *udev, pm_message_t msg)
1160 {
1161 struct usb_device_driver *udriver;
1162 int status = 0;
1163
1164 if (udev->state == USB_STATE_NOTATTACHED)
1165 goto done;
1166
1167
1168 if (udev->dev.driver == NULL) {
1169 status = -ENOTCONN;
1170 goto done;
1171 }
1172
1173
1174
1175
1176 if (!PMSG_IS_AUTO(msg) && udev->parent && udev->bus->hs_companion)
1177 device_pm_wait_for_dev(&udev->dev,
1178 &udev->bus->hs_companion->root_hub->dev);
1179
1180 if (udev->quirks & USB_QUIRK_RESET_RESUME)
1181 udev->reset_resume = 1;
1182
1183 udriver = to_usb_device_driver(udev->dev.driver);
1184 status = udriver->resume(udev, msg);
1185
1186 done:
1187 dev_vdbg(&udev->dev, "%s: status %d\n", __func__, status);
1188 return status;
1189 }
1190
1191 static int usb_suspend_interface(struct usb_device *udev,
1192 struct usb_interface *intf, pm_message_t msg)
1193 {
1194 struct usb_driver *driver;
1195 int status = 0;
1196
1197 if (udev->state == USB_STATE_NOTATTACHED ||
1198 intf->condition == USB_INTERFACE_UNBOUND)
1199 goto done;
1200 driver = to_usb_driver(intf->dev.driver);
1201
1202
1203 status = driver->suspend(intf, msg);
1204 if (status && !PMSG_IS_AUTO(msg))
1205 dev_err(&intf->dev, "suspend error %d\n", status);
1206
1207 done:
1208 dev_vdbg(&intf->dev, "%s: status %d\n", __func__, status);
1209 return status;
1210 }
1211
1212 static int usb_resume_interface(struct usb_device *udev,
1213 struct usb_interface *intf, pm_message_t msg, int reset_resume)
1214 {
1215 struct usb_driver *driver;
1216 int status = 0;
1217
1218 if (udev->state == USB_STATE_NOTATTACHED)
1219 goto done;
1220
1221
1222 if (intf->condition == USB_INTERFACE_UNBINDING)
1223 goto done;
1224
1225
1226 if (intf->condition == USB_INTERFACE_UNBOUND) {
1227
1228
1229 if (intf->needs_altsetting0 && !intf->dev.power.is_prepared) {
1230 usb_set_interface(udev, intf->altsetting[0].
1231 desc.bInterfaceNumber, 0);
1232 intf->needs_altsetting0 = 0;
1233 }
1234 goto done;
1235 }
1236
1237
1238 if (intf->needs_binding)
1239 goto done;
1240 driver = to_usb_driver(intf->dev.driver);
1241
1242 if (reset_resume) {
1243 if (driver->reset_resume) {
1244 status = driver->reset_resume(intf);
1245 if (status)
1246 dev_err(&intf->dev, "%s error %d\n",
1247 "reset_resume", status);
1248 } else {
1249 intf->needs_binding = 1;
1250 dev_dbg(&intf->dev, "no reset_resume for driver %s?\n",
1251 driver->name);
1252 }
1253 } else {
1254 status = driver->resume(intf);
1255 if (status)
1256 dev_err(&intf->dev, "resume error %d\n", status);
1257 }
1258
1259 done:
1260 dev_vdbg(&intf->dev, "%s: status %d\n", __func__, status);
1261
1262
1263 return status;
1264 }
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293 static int usb_suspend_both(struct usb_device *udev, pm_message_t msg)
1294 {
1295 int status = 0;
1296 int i = 0, n = 0;
1297 struct usb_interface *intf;
1298
1299 if (udev->state == USB_STATE_NOTATTACHED ||
1300 udev->state == USB_STATE_SUSPENDED)
1301 goto done;
1302
1303
1304 if (udev->actconfig) {
1305 n = udev->actconfig->desc.bNumInterfaces;
1306 for (i = n - 1; i >= 0; --i) {
1307 intf = udev->actconfig->interface[i];
1308 status = usb_suspend_interface(udev, intf, msg);
1309
1310
1311 if (!PMSG_IS_AUTO(msg))
1312 status = 0;
1313 if (status != 0)
1314 break;
1315 }
1316 }
1317 if (status == 0) {
1318 status = usb_suspend_device(udev, msg);
1319
1320
1321
1322
1323
1324
1325
1326 if (udev->parent && !PMSG_IS_AUTO(msg))
1327 status = 0;
1328
1329
1330
1331
1332
1333 if (status && status != -EBUSY) {
1334 int err;
1335 u16 devstat;
1336
1337 err = usb_get_std_status(udev, USB_RECIP_DEVICE, 0,
1338 &devstat);
1339 if (err) {
1340 dev_err(&udev->dev,
1341 "Failed to suspend device, error %d\n",
1342 status);
1343 goto done;
1344 }
1345 }
1346 }
1347
1348
1349 if (status != 0) {
1350 if (udev->actconfig) {
1351 msg.event ^= (PM_EVENT_SUSPEND | PM_EVENT_RESUME);
1352 while (++i < n) {
1353 intf = udev->actconfig->interface[i];
1354 usb_resume_interface(udev, intf, msg, 0);
1355 }
1356 }
1357
1358
1359
1360
1361 } else {
1362 udev->can_submit = 0;
1363 for (i = 0; i < 16; ++i) {
1364 usb_hcd_flush_endpoint(udev, udev->ep_out[i]);
1365 usb_hcd_flush_endpoint(udev, udev->ep_in[i]);
1366 }
1367 }
1368
1369 done:
1370 dev_vdbg(&udev->dev, "%s: status %d\n", __func__, status);
1371 return status;
1372 }
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394 static int usb_resume_both(struct usb_device *udev, pm_message_t msg)
1395 {
1396 int status = 0;
1397 int i;
1398 struct usb_interface *intf;
1399
1400 if (udev->state == USB_STATE_NOTATTACHED) {
1401 status = -ENODEV;
1402 goto done;
1403 }
1404 udev->can_submit = 1;
1405
1406
1407 if (udev->state == USB_STATE_SUSPENDED || udev->reset_resume)
1408 status = usb_resume_device(udev, msg);
1409
1410
1411 if (status == 0 && udev->actconfig) {
1412 for (i = 0; i < udev->actconfig->desc.bNumInterfaces; i++) {
1413 intf = udev->actconfig->interface[i];
1414 usb_resume_interface(udev, intf, msg,
1415 udev->reset_resume);
1416 }
1417 }
1418 usb_mark_last_busy(udev);
1419
1420 done:
1421 dev_vdbg(&udev->dev, "%s: status %d\n", __func__, status);
1422 if (!status)
1423 udev->reset_resume = 0;
1424 return status;
1425 }
1426
1427 static void choose_wakeup(struct usb_device *udev, pm_message_t msg)
1428 {
1429 int w;
1430
1431
1432
1433
1434
1435 if (msg.event == PM_EVENT_FREEZE || msg.event == PM_EVENT_QUIESCE) {
1436 if (udev->state != USB_STATE_SUSPENDED)
1437 udev->do_remote_wakeup = 0;
1438 return;
1439 }
1440
1441
1442
1443
1444 w = device_may_wakeup(&udev->dev);
1445
1446
1447
1448
1449 if (udev->state == USB_STATE_SUSPENDED && w != udev->do_remote_wakeup)
1450 pm_runtime_resume(&udev->dev);
1451 udev->do_remote_wakeup = w;
1452 }
1453
1454
1455 int usb_suspend(struct device *dev, pm_message_t msg)
1456 {
1457 struct usb_device *udev = to_usb_device(dev);
1458 int r;
1459
1460 unbind_no_pm_drivers_interfaces(udev);
1461
1462
1463
1464
1465
1466 choose_wakeup(udev, msg);
1467 r = usb_suspend_both(udev, msg);
1468 if (r)
1469 return r;
1470
1471 if (udev->quirks & USB_QUIRK_DISCONNECT_SUSPEND)
1472 usb_port_disable(udev);
1473
1474 return 0;
1475 }
1476
1477
1478 int usb_resume_complete(struct device *dev)
1479 {
1480 struct usb_device *udev = to_usb_device(dev);
1481
1482
1483
1484
1485 if (udev->state != USB_STATE_NOTATTACHED)
1486 rebind_marked_interfaces(udev);
1487 return 0;
1488 }
1489
1490
1491 int usb_resume(struct device *dev, pm_message_t msg)
1492 {
1493 struct usb_device *udev = to_usb_device(dev);
1494 int status;
1495
1496
1497
1498
1499
1500
1501
1502
1503 status = usb_resume_both(udev, msg);
1504 if (status == 0) {
1505 pm_runtime_disable(dev);
1506 pm_runtime_set_active(dev);
1507 pm_runtime_enable(dev);
1508 unbind_marked_interfaces(udev);
1509 }
1510
1511
1512
1513
1514 if (status == -ENODEV || status == -ESHUTDOWN)
1515 status = 0;
1516 return status;
1517 }
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529 void usb_enable_autosuspend(struct usb_device *udev)
1530 {
1531 pm_runtime_allow(&udev->dev);
1532 }
1533 EXPORT_SYMBOL_GPL(usb_enable_autosuspend);
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544 void usb_disable_autosuspend(struct usb_device *udev)
1545 {
1546 pm_runtime_forbid(&udev->dev);
1547 }
1548 EXPORT_SYMBOL_GPL(usb_disable_autosuspend);
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566 void usb_autosuspend_device(struct usb_device *udev)
1567 {
1568 int status;
1569
1570 usb_mark_last_busy(udev);
1571 status = pm_runtime_put_sync_autosuspend(&udev->dev);
1572 dev_vdbg(&udev->dev, "%s: cnt %d -> %d\n",
1573 __func__, atomic_read(&udev->dev.power.usage_count),
1574 status);
1575 }
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597 int usb_autoresume_device(struct usb_device *udev)
1598 {
1599 int status;
1600
1601 status = pm_runtime_get_sync(&udev->dev);
1602 if (status < 0)
1603 pm_runtime_put_sync(&udev->dev);
1604 dev_vdbg(&udev->dev, "%s: cnt %d -> %d\n",
1605 __func__, atomic_read(&udev->dev.power.usage_count),
1606 status);
1607 if (status > 0)
1608 status = 0;
1609 return status;
1610 }
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627 void usb_autopm_put_interface(struct usb_interface *intf)
1628 {
1629 struct usb_device *udev = interface_to_usbdev(intf);
1630 int status;
1631
1632 usb_mark_last_busy(udev);
1633 status = pm_runtime_put_sync(&intf->dev);
1634 dev_vdbg(&intf->dev, "%s: cnt %d -> %d\n",
1635 __func__, atomic_read(&intf->dev.power.usage_count),
1636 status);
1637 }
1638 EXPORT_SYMBOL_GPL(usb_autopm_put_interface);
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655 void usb_autopm_put_interface_async(struct usb_interface *intf)
1656 {
1657 struct usb_device *udev = interface_to_usbdev(intf);
1658 int status;
1659
1660 usb_mark_last_busy(udev);
1661 status = pm_runtime_put(&intf->dev);
1662 dev_vdbg(&intf->dev, "%s: cnt %d -> %d\n",
1663 __func__, atomic_read(&intf->dev.power.usage_count),
1664 status);
1665 }
1666 EXPORT_SYMBOL_GPL(usb_autopm_put_interface_async);
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677 void usb_autopm_put_interface_no_suspend(struct usb_interface *intf)
1678 {
1679 struct usb_device *udev = interface_to_usbdev(intf);
1680
1681 usb_mark_last_busy(udev);
1682 pm_runtime_put_noidle(&intf->dev);
1683 }
1684 EXPORT_SYMBOL_GPL(usb_autopm_put_interface_no_suspend);
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705 int usb_autopm_get_interface(struct usb_interface *intf)
1706 {
1707 int status;
1708
1709 status = pm_runtime_get_sync(&intf->dev);
1710 if (status < 0)
1711 pm_runtime_put_sync(&intf->dev);
1712 dev_vdbg(&intf->dev, "%s: cnt %d -> %d\n",
1713 __func__, atomic_read(&intf->dev.power.usage_count),
1714 status);
1715 if (status > 0)
1716 status = 0;
1717 return status;
1718 }
1719 EXPORT_SYMBOL_GPL(usb_autopm_get_interface);
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738 int usb_autopm_get_interface_async(struct usb_interface *intf)
1739 {
1740 int status;
1741
1742 status = pm_runtime_get(&intf->dev);
1743 if (status < 0 && status != -EINPROGRESS)
1744 pm_runtime_put_noidle(&intf->dev);
1745 dev_vdbg(&intf->dev, "%s: cnt %d -> %d\n",
1746 __func__, atomic_read(&intf->dev.power.usage_count),
1747 status);
1748 if (status > 0 || status == -EINPROGRESS)
1749 status = 0;
1750 return status;
1751 }
1752 EXPORT_SYMBOL_GPL(usb_autopm_get_interface_async);
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763 void usb_autopm_get_interface_no_resume(struct usb_interface *intf)
1764 {
1765 struct usb_device *udev = interface_to_usbdev(intf);
1766
1767 usb_mark_last_busy(udev);
1768 pm_runtime_get_noresume(&intf->dev);
1769 }
1770 EXPORT_SYMBOL_GPL(usb_autopm_get_interface_no_resume);
1771
1772
1773 static int autosuspend_check(struct usb_device *udev)
1774 {
1775 int w, i;
1776 struct usb_interface *intf;
1777
1778 if (udev->state == USB_STATE_NOTATTACHED)
1779 return -ENODEV;
1780
1781
1782
1783
1784 w = 0;
1785 if (udev->actconfig) {
1786 for (i = 0; i < udev->actconfig->desc.bNumInterfaces; i++) {
1787 intf = udev->actconfig->interface[i];
1788
1789
1790
1791
1792
1793
1794 if (intf->dev.power.disable_depth)
1795 continue;
1796 if (atomic_read(&intf->dev.power.usage_count) > 0)
1797 return -EBUSY;
1798 w |= intf->needs_remote_wakeup;
1799
1800
1801
1802
1803
1804 if (udev->quirks & USB_QUIRK_RESET_RESUME) {
1805 struct usb_driver *driver;
1806
1807 driver = to_usb_driver(intf->dev.driver);
1808 if (!driver->reset_resume ||
1809 intf->needs_remote_wakeup)
1810 return -EOPNOTSUPP;
1811 }
1812 }
1813 }
1814 if (w && !device_can_wakeup(&udev->dev)) {
1815 dev_dbg(&udev->dev, "remote wakeup needed for autosuspend\n");
1816 return -EOPNOTSUPP;
1817 }
1818
1819
1820
1821
1822
1823
1824 if (w && udev->parent == udev->bus->root_hub &&
1825 bus_to_hcd(udev->bus)->cant_recv_wakeups) {
1826 dev_dbg(&udev->dev, "HCD doesn't handle wakeup requests\n");
1827 return -EOPNOTSUPP;
1828 }
1829
1830 udev->do_remote_wakeup = w;
1831 return 0;
1832 }
1833
1834 int usb_runtime_suspend(struct device *dev)
1835 {
1836 struct usb_device *udev = to_usb_device(dev);
1837 int status;
1838
1839
1840
1841
1842
1843 if (autosuspend_check(udev) != 0)
1844 return -EAGAIN;
1845
1846 status = usb_suspend_both(udev, PMSG_AUTO_SUSPEND);
1847
1848
1849 if (status == -EAGAIN || status == -EBUSY)
1850 usb_mark_last_busy(udev);
1851
1852
1853
1854
1855
1856
1857
1858 if (status != 0 && udev->parent)
1859 return -EBUSY;
1860 return status;
1861 }
1862
1863 int usb_runtime_resume(struct device *dev)
1864 {
1865 struct usb_device *udev = to_usb_device(dev);
1866 int status;
1867
1868
1869
1870
1871 status = usb_resume_both(udev, PMSG_AUTO_RESUME);
1872 return status;
1873 }
1874
1875 int usb_runtime_idle(struct device *dev)
1876 {
1877 struct usb_device *udev = to_usb_device(dev);
1878
1879
1880
1881
1882 if (autosuspend_check(udev) == 0)
1883 pm_runtime_autosuspend(dev);
1884
1885 return -EBUSY;
1886 }
1887
1888 static int usb_set_usb2_hardware_lpm(struct usb_device *udev, int enable)
1889 {
1890 struct usb_hcd *hcd = bus_to_hcd(udev->bus);
1891 int ret = -EPERM;
1892
1893 if (hcd->driver->set_usb2_hw_lpm) {
1894 ret = hcd->driver->set_usb2_hw_lpm(hcd, udev, enable);
1895 if (!ret)
1896 udev->usb2_hw_lpm_enabled = enable;
1897 }
1898
1899 return ret;
1900 }
1901
1902 int usb_enable_usb2_hardware_lpm(struct usb_device *udev)
1903 {
1904 if (!udev->usb2_hw_lpm_capable ||
1905 !udev->usb2_hw_lpm_allowed ||
1906 udev->usb2_hw_lpm_enabled)
1907 return 0;
1908
1909 return usb_set_usb2_hardware_lpm(udev, 1);
1910 }
1911
1912 int usb_disable_usb2_hardware_lpm(struct usb_device *udev)
1913 {
1914 if (!udev->usb2_hw_lpm_enabled)
1915 return 0;
1916
1917 return usb_set_usb2_hardware_lpm(udev, 0);
1918 }
1919
1920 #endif
1921
1922 struct bus_type usb_bus_type = {
1923 .name = "usb",
1924 .match = usb_device_match,
1925 .uevent = usb_uevent,
1926 .need_parent_lock = true,
1927 };