Lines Matching +full:pm +full:- +full:bus
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
40 #include <sys/bus.h>
139 /*------------------------------------------------------------------------*
143 *------------------------------------------------------------------------*/
153 usb_root_mount_rel(struct usb_bus *bus) in usb_root_mount_rel() argument
155 if (bus->bus_roothold != NULL) { in usb_root_mount_rel()
156 DPRINTF("Releasing root mount hold %p\n", bus->bus_roothold); in usb_root_mount_rel()
157 root_mount_rel(bus->bus_roothold); in usb_root_mount_rel()
158 bus->bus_roothold = NULL; in usb_root_mount_rel()
163 /*------------------------------------------------------------------------*
165 *------------------------------------------------------------------------*/
169 struct usb_bus *bus = device_get_ivars(dev); in usb_attach() local
173 if (bus == NULL) { in usb_attach()
180 /* delay vfs_mountroot until the bus is explored */ in usb_attach()
181 bus->bus_roothold = root_mount_hold(device_get_nameunit(dev)); in usb_attach()
184 usb_attach_sub(dev, bus); in usb_attach()
189 /*------------------------------------------------------------------------*
191 *------------------------------------------------------------------------*/
195 struct usb_bus *bus = device_get_softc(dev); in usb_detach() local
199 if (bus == NULL) { in usb_detach()
204 usb_callout_drain(&bus->power_wdog); in usb_detach()
208 usb_root_mount_rel(bus); in usb_detach()
211 USB_BUS_LOCK(bus); in usb_detach()
214 usb_proc_msignal(USB_BUS_EXPLORE_PROC(bus), in usb_detach()
215 &bus->detach_msg[0], &bus->detach_msg[1]); in usb_detach()
218 usb_proc_mwait(USB_BUS_EXPLORE_PROC(bus), in usb_detach()
219 &bus->detach_msg[0], &bus->detach_msg[1]); in usb_detach()
223 usb_proc_mwait(USB_BUS_EXPLORE_PROC(bus), in usb_detach()
224 &bus->cleanup_msg[0], &bus->cleanup_msg[1]); in usb_detach()
226 USB_BUS_UNLOCK(bus); in usb_detach()
231 usb_proc_free(USB_BUS_GIANT_PROC(bus)); in usb_detach()
232 usb_proc_free(USB_BUS_NON_GIANT_ISOC_PROC(bus)); in usb_detach()
233 usb_proc_free(USB_BUS_NON_GIANT_BULK_PROC(bus)); in usb_detach()
237 usb_proc_free(USB_BUS_EXPLORE_PROC(bus)); in usb_detach()
241 usb_proc_free(USB_BUS_CONTROL_XFER_PROC(bus)); in usb_detach()
245 usbpf_detach(bus); in usb_detach()
250 /*------------------------------------------------------------------------*
252 *------------------------------------------------------------------------*/
256 struct usb_bus *bus = device_get_softc(dev); in usb_suspend() local
260 if (bus == NULL) { in usb_suspend()
265 USB_BUS_LOCK(bus); in usb_suspend()
266 usb_proc_msignal(USB_BUS_EXPLORE_PROC(bus), in usb_suspend()
267 &bus->suspend_msg[0], &bus->suspend_msg[1]); in usb_suspend()
270 usb_proc_mwait(USB_BUS_EXPLORE_PROC(bus), in usb_suspend()
271 &bus->suspend_msg[0], &bus->suspend_msg[1]); in usb_suspend()
273 USB_BUS_UNLOCK(bus); in usb_suspend()
278 /*------------------------------------------------------------------------*
280 *------------------------------------------------------------------------*/
284 struct usb_bus *bus = device_get_softc(dev); in usb_resume() local
288 if (bus == NULL) { in usb_resume()
293 USB_BUS_LOCK(bus); in usb_resume()
294 usb_proc_msignal(USB_BUS_EXPLORE_PROC(bus), in usb_resume()
295 &bus->resume_msg[0], &bus->resume_msg[1]); in usb_resume()
296 USB_BUS_UNLOCK(bus); in usb_resume()
301 /*------------------------------------------------------------------------*
303 *------------------------------------------------------------------------*/
305 usb_bus_reset_async_locked(struct usb_bus *bus) in usb_bus_reset_async_locked() argument
307 USB_BUS_LOCK_ASSERT(bus, MA_OWNED); in usb_bus_reset_async_locked()
311 if (bus->reset_msg[0].hdr.pm_qentry.tqe_prev != NULL || in usb_bus_reset_async_locked()
312 bus->reset_msg[1].hdr.pm_qentry.tqe_prev != NULL) { in usb_bus_reset_async_locked()
317 device_printf(bus->parent, "Resetting controller\n"); in usb_bus_reset_async_locked()
319 usb_proc_msignal(USB_BUS_EXPLORE_PROC(bus), in usb_bus_reset_async_locked()
320 &bus->reset_msg[0], &bus->reset_msg[1]); in usb_bus_reset_async_locked()
323 /*------------------------------------------------------------------------*
325 *------------------------------------------------------------------------*/
329 struct usb_bus *bus = device_get_softc(dev); in usb_shutdown() local
333 if (bus == NULL) { in usb_shutdown()
338 DPRINTF("%s: Controller shutdown\n", device_get_nameunit(bus->bdev)); in usb_shutdown()
340 USB_BUS_LOCK(bus); in usb_shutdown()
341 usb_proc_msignal(USB_BUS_EXPLORE_PROC(bus), in usb_shutdown()
342 &bus->shutdown_msg[0], &bus->shutdown_msg[1]); in usb_shutdown()
345 usb_proc_mwait(USB_BUS_EXPLORE_PROC(bus), in usb_shutdown()
346 &bus->shutdown_msg[0], &bus->shutdown_msg[1]); in usb_shutdown()
348 USB_BUS_UNLOCK(bus); in usb_shutdown()
351 device_get_nameunit(bus->bdev)); in usb_shutdown()
356 /*------------------------------------------------------------------------*
360 *------------------------------------------------------------------------*/
362 usb_bus_explore(struct usb_proc_msg *pm) in usb_bus_explore() argument
364 struct usb_bus *bus; in usb_bus_explore() local
367 bus = ((struct usb_bus_msg *)pm)->bus; in usb_bus_explore()
368 udev = bus->devices[USB_ROOT_HUB_ADDR]; in usb_bus_explore()
370 if (bus->no_explore != 0) in usb_bus_explore()
374 USB_BUS_UNLOCK(bus); in usb_bus_explore()
376 USB_BUS_LOCK(bus); in usb_bus_explore()
379 if (udev != NULL && udev->hub != NULL) { in usb_bus_explore()
380 if (bus->do_probe) { in usb_bus_explore()
381 bus->do_probe = 0; in usb_bus_explore()
382 bus->driver_added_refcount++; in usb_bus_explore()
384 if (bus->driver_added_refcount == 0) { in usb_bus_explore()
386 bus->driver_added_refcount = 1; in usb_bus_explore()
394 usb_proc_rewakeup(USB_BUS_CONTROL_XFER_PROC(bus)); in usb_bus_explore()
395 usb_proc_rewakeup(USB_BUS_GIANT_PROC(bus)); in usb_bus_explore()
396 usb_proc_rewakeup(USB_BUS_NON_GIANT_ISOC_PROC(bus)); in usb_bus_explore()
397 usb_proc_rewakeup(USB_BUS_NON_GIANT_BULK_PROC(bus)); in usb_bus_explore()
400 USB_BUS_UNLOCK(bus); in usb_bus_explore()
406 usb_bus_powerd(bus); in usb_bus_explore()
409 (udev->hub->explore) (udev); in usb_bus_explore()
410 USB_BUS_LOCK(bus); in usb_bus_explore()
413 usb_root_mount_rel(bus); in usb_bus_explore()
417 usb_pause_mtx(&bus->bus_mtx, USB_MS_TO_TICKS(usb_enum_nice_time)); in usb_bus_explore()
420 /*------------------------------------------------------------------------*
424 *------------------------------------------------------------------------*/
426 usb_bus_detach(struct usb_proc_msg *pm) in usb_bus_detach() argument
428 struct usb_bus *bus; in usb_bus_detach() local
432 bus = ((struct usb_bus_msg *)pm)->bus; in usb_bus_detach()
433 udev = bus->devices[USB_ROOT_HUB_ADDR]; in usb_bus_detach()
434 dev = bus->bdev; in usb_bus_detach()
437 USB_BUS_UNLOCK(bus); in usb_bus_detach()
449 USB_BUS_LOCK(bus); in usb_bus_detach()
451 bus->bdev = NULL; in usb_bus_detach()
454 /*------------------------------------------------------------------------*
458 *------------------------------------------------------------------------*/
460 usb_bus_suspend(struct usb_proc_msg *pm) in usb_bus_suspend() argument
462 struct usb_bus *bus; in usb_bus_suspend() local
469 bus = ((struct usb_bus_msg *)pm)->bus; in usb_bus_suspend()
470 udev = bus->devices[USB_ROOT_HUB_ADDR]; in usb_bus_suspend()
472 if (udev == NULL || bus->bdev == NULL) in usb_bus_suspend()
475 USB_BUS_UNLOCK(bus); in usb_bus_suspend()
483 * re-connected again. in usb_bus_suspend()
486 bus_generic_shutdown(bus->bdev); in usb_bus_suspend()
492 device_printf(bus->bdev, "Could not unconfigure root HUB\n"); in usb_bus_suspend()
494 USB_BUS_LOCK(bus); in usb_bus_suspend()
495 bus->hw_power_state = 0; in usb_bus_suspend()
496 bus->no_explore = 1; in usb_bus_suspend()
497 USB_BUS_UNLOCK(bus); in usb_bus_suspend()
499 if (bus->methods->set_hw_power != NULL) in usb_bus_suspend()
500 (bus->methods->set_hw_power) (bus); in usb_bus_suspend()
502 if (bus->methods->set_hw_power_sleep != NULL) in usb_bus_suspend()
503 (bus->methods->set_hw_power_sleep) (bus, USB_HW_POWER_SUSPEND); in usb_bus_suspend()
508 USB_BUS_LOCK(bus); in usb_bus_suspend()
511 /*------------------------------------------------------------------------*
515 *------------------------------------------------------------------------*/
517 usb_bus_resume(struct usb_proc_msg *pm) in usb_bus_resume() argument
519 struct usb_bus *bus; in usb_bus_resume() local
526 bus = ((struct usb_bus_msg *)pm)->bus; in usb_bus_resume()
527 udev = bus->devices[USB_ROOT_HUB_ADDR]; in usb_bus_resume()
529 if (udev == NULL || bus->bdev == NULL) in usb_bus_resume()
532 USB_BUS_UNLOCK(bus); in usb_bus_resume()
538 USB_TAKE_CONTROLLER(device_get_parent(bus->bdev)); in usb_bus_resume()
540 USB_BUS_LOCK(bus); in usb_bus_resume()
541 bus->hw_power_state = in usb_bus_resume()
547 bus->no_explore = 0; in usb_bus_resume()
548 USB_BUS_UNLOCK(bus); in usb_bus_resume()
550 if (bus->methods->set_hw_power_sleep != NULL) in usb_bus_resume()
551 (bus->methods->set_hw_power_sleep) (bus, USB_HW_POWER_RESUME); in usb_bus_resume()
553 if (bus->methods->set_hw_power != NULL) in usb_bus_resume()
554 (bus->methods->set_hw_power) (bus); in usb_bus_resume()
559 device_printf(bus->bdev, "Could not configure root HUB\n"); in usb_bus_resume()
564 device_printf(bus->bdev, "Could not probe and " in usb_bus_resume()
571 USB_BUS_LOCK(bus); in usb_bus_resume()
574 /*------------------------------------------------------------------------*
578 *------------------------------------------------------------------------*/
580 usb_bus_reset(struct usb_proc_msg *pm) in usb_bus_reset() argument
582 struct usb_bus *bus; in usb_bus_reset() local
586 bus = ((struct usb_bus_msg *)pm)->bus; in usb_bus_reset()
588 if (bus->bdev == NULL || bus->no_explore != 0) in usb_bus_reset()
592 usb_bus_suspend(pm); in usb_bus_reset()
593 usb_bus_resume(pm); in usb_bus_reset()
596 /*------------------------------------------------------------------------*
600 *------------------------------------------------------------------------*/
602 usb_bus_shutdown(struct usb_proc_msg *pm) in usb_bus_shutdown() argument
604 struct usb_bus *bus; in usb_bus_shutdown() local
609 bus = ((struct usb_bus_msg *)pm)->bus; in usb_bus_shutdown()
610 udev = bus->devices[USB_ROOT_HUB_ADDR]; in usb_bus_shutdown()
612 if (udev == NULL || bus->bdev == NULL) in usb_bus_shutdown()
615 USB_BUS_UNLOCK(bus); in usb_bus_shutdown()
617 bus_generic_shutdown(bus->bdev); in usb_bus_shutdown()
623 device_printf(bus->bdev, "Could not unconfigure root HUB\n"); in usb_bus_shutdown()
625 USB_BUS_LOCK(bus); in usb_bus_shutdown()
626 bus->hw_power_state = 0; in usb_bus_shutdown()
627 bus->no_explore = 1; in usb_bus_shutdown()
628 USB_BUS_UNLOCK(bus); in usb_bus_shutdown()
630 if (bus->methods->set_hw_power != NULL) in usb_bus_shutdown()
631 (bus->methods->set_hw_power) (bus); in usb_bus_shutdown()
633 if (bus->methods->set_hw_power_sleep != NULL) in usb_bus_shutdown()
634 (bus->methods->set_hw_power_sleep) (bus, USB_HW_POWER_SHUTDOWN); in usb_bus_shutdown()
639 USB_BUS_LOCK(bus); in usb_bus_shutdown()
642 /*------------------------------------------------------------------------*
646 *------------------------------------------------------------------------*/
649 usb_bus_cleanup(struct usb_proc_msg *pm) in usb_bus_cleanup() argument
651 struct usb_bus *bus; in usb_bus_cleanup() local
654 bus = ((struct usb_bus_msg *)pm)->bus; in usb_bus_cleanup()
656 while ((pd = SLIST_FIRST(&bus->pd_cleanup_list)) != NULL) { in usb_bus_cleanup()
657 SLIST_REMOVE(&bus->pd_cleanup_list, pd, usb_fs_privdata, pd_next); in usb_bus_cleanup()
658 USB_BUS_UNLOCK(bus); in usb_bus_cleanup()
662 USB_BUS_LOCK(bus); in usb_bus_cleanup()
670 struct usb_bus *bus = arg; in usb_power_wdog() local
672 USB_BUS_LOCK_ASSERT(bus, MA_OWNED); in usb_power_wdog()
674 usb_callout_reset(&bus->power_wdog, in usb_power_wdog()
682 usb_proc_rewakeup(USB_BUS_EXPLORE_PROC(bus)); /* recover from DDB */ in usb_power_wdog()
686 USB_BUS_UNLOCK(bus); in usb_power_wdog()
688 usb_bus_power_update(bus); in usb_power_wdog()
690 USB_BUS_LOCK(bus); in usb_power_wdog()
694 /*------------------------------------------------------------------------*
698 *------------------------------------------------------------------------*/
700 usb_bus_attach(struct usb_proc_msg *pm) in usb_bus_attach() argument
702 struct usb_bus *bus; in usb_bus_attach() local
708 bus = ((struct usb_bus_msg *)pm)->bus; in usb_bus_attach()
709 dev = bus->bdev; in usb_bus_attach()
713 switch (bus->usbrev) { in usb_bus_attach()
716 device_printf(bus->bdev, "12Mbps Full Speed USB v1.0\n"); in usb_bus_attach()
721 device_printf(bus->bdev, "12Mbps Full Speed USB v1.1\n"); in usb_bus_attach()
726 device_printf(bus->bdev, "480Mbps High Speed USB v2.0\n"); in usb_bus_attach()
731 device_printf(bus->bdev, "480Mbps Wireless USB v2.5\n"); in usb_bus_attach()
736 device_printf(bus->bdev, "5.0Gbps Super Speed USB v3.0\n"); in usb_bus_attach()
740 device_printf(bus->bdev, "Unsupported USB revision\n"); in usb_bus_attach()
742 usb_root_mount_rel(bus); in usb_bus_attach()
748 bus->hw_power_state = in usb_bus_attach()
755 USB_BUS_UNLOCK(bus); in usb_bus_attach()
759 if (bus->methods->set_hw_power != NULL) { in usb_bus_attach()
760 (bus->methods->set_hw_power) (bus); in usb_bus_attach()
765 child = usb_alloc_device(bus->bdev, bus, NULL, 0, 0, 1, in usb_bus_attach()
771 if ((bus->devices[USB_ROOT_HUB_ADDR] == NULL) || in usb_bus_attach()
772 (bus->devices[USB_ROOT_HUB_ADDR]->hub == NULL)) { in usb_bus_attach()
780 USB_BUS_LOCK(bus); in usb_bus_attach()
783 device_printf(bus->bdev, "Root HUB problem, error=%s\n", in usb_bus_attach()
786 usb_root_mount_rel(bus); in usb_bus_attach()
790 /* set softc - we are ready */ in usb_bus_attach()
791 device_set_softc(dev, bus); in usb_bus_attach()
794 usb_power_wdog(bus); in usb_bus_attach()
797 /*------------------------------------------------------------------------*
801 *------------------------------------------------------------------------*/
803 usb_attach_sub(device_t dev, struct usb_bus *bus) in usb_attach_sub() argument
811 usbpf_attach(bus); in usb_attach_sub()
814 bus->explore_msg[0].hdr.pm_callback = &usb_bus_explore; in usb_attach_sub()
815 bus->explore_msg[0].bus = bus; in usb_attach_sub()
816 bus->explore_msg[1].hdr.pm_callback = &usb_bus_explore; in usb_attach_sub()
817 bus->explore_msg[1].bus = bus; in usb_attach_sub()
819 bus->detach_msg[0].hdr.pm_callback = &usb_bus_detach; in usb_attach_sub()
820 bus->detach_msg[0].bus = bus; in usb_attach_sub()
821 bus->detach_msg[1].hdr.pm_callback = &usb_bus_detach; in usb_attach_sub()
822 bus->detach_msg[1].bus = bus; in usb_attach_sub()
824 bus->attach_msg[0].hdr.pm_callback = &usb_bus_attach; in usb_attach_sub()
825 bus->attach_msg[0].bus = bus; in usb_attach_sub()
826 bus->attach_msg[1].hdr.pm_callback = &usb_bus_attach; in usb_attach_sub()
827 bus->attach_msg[1].bus = bus; in usb_attach_sub()
829 bus->suspend_msg[0].hdr.pm_callback = &usb_bus_suspend; in usb_attach_sub()
830 bus->suspend_msg[0].bus = bus; in usb_attach_sub()
831 bus->suspend_msg[1].hdr.pm_callback = &usb_bus_suspend; in usb_attach_sub()
832 bus->suspend_msg[1].bus = bus; in usb_attach_sub()
834 bus->resume_msg[0].hdr.pm_callback = &usb_bus_resume; in usb_attach_sub()
835 bus->resume_msg[0].bus = bus; in usb_attach_sub()
836 bus->resume_msg[1].hdr.pm_callback = &usb_bus_resume; in usb_attach_sub()
837 bus->resume_msg[1].bus = bus; in usb_attach_sub()
839 bus->reset_msg[0].hdr.pm_callback = &usb_bus_reset; in usb_attach_sub()
840 bus->reset_msg[0].bus = bus; in usb_attach_sub()
841 bus->reset_msg[1].hdr.pm_callback = &usb_bus_reset; in usb_attach_sub()
842 bus->reset_msg[1].bus = bus; in usb_attach_sub()
844 bus->shutdown_msg[0].hdr.pm_callback = &usb_bus_shutdown; in usb_attach_sub()
845 bus->shutdown_msg[0].bus = bus; in usb_attach_sub()
846 bus->shutdown_msg[1].hdr.pm_callback = &usb_bus_shutdown; in usb_attach_sub()
847 bus->shutdown_msg[1].bus = bus; in usb_attach_sub()
850 SLIST_INIT(&bus->pd_cleanup_list); in usb_attach_sub()
851 bus->cleanup_msg[0].hdr.pm_callback = &usb_bus_cleanup; in usb_attach_sub()
852 bus->cleanup_msg[0].bus = bus; in usb_attach_sub()
853 bus->cleanup_msg[1].hdr.pm_callback = &usb_bus_cleanup; in usb_attach_sub()
854 bus->cleanup_msg[1].bus = bus; in usb_attach_sub()
860 if (usb_proc_create(USB_BUS_GIANT_PROC(bus), in usb_attach_sub()
861 &bus->bus_mtx, device_get_nameunit(dev), USB_PRI_MED)) { in usb_attach_sub()
864 } else if (usb_proc_create(USB_BUS_NON_GIANT_ISOC_PROC(bus), in usb_attach_sub()
865 &bus->bus_mtx, device_get_nameunit(dev), USB_PRI_HIGHEST)) { in usb_attach_sub()
866 device_printf(dev, "WARNING: Creation of USB non-Giant ISOC " in usb_attach_sub()
868 } else if (usb_proc_create(USB_BUS_NON_GIANT_BULK_PROC(bus), in usb_attach_sub()
869 &bus->bus_mtx, device_get_nameunit(dev), USB_PRI_HIGH)) { in usb_attach_sub()
870 device_printf(dev, "WARNING: Creation of USB non-Giant BULK " in usb_attach_sub()
872 } else if (usb_proc_create(USB_BUS_EXPLORE_PROC(bus), in usb_attach_sub()
873 &bus->bus_mtx, device_get_nameunit(dev), USB_PRI_MED)) { in usb_attach_sub()
876 } else if (usb_proc_create(USB_BUS_CONTROL_XFER_PROC(bus), in usb_attach_sub()
877 &bus->bus_mtx, device_get_nameunit(dev), USB_PRI_MED)) { in usb_attach_sub()
884 USB_BUS_LOCK(bus); in usb_attach_sub()
885 usb_proc_msignal(USB_BUS_EXPLORE_PROC(bus), in usb_attach_sub()
886 &bus->attach_msg[0], &bus->attach_msg[1]); in usb_attach_sub()
887 USB_BUS_UNLOCK(bus); in usb_attach_sub()
890 usb_needs_explore(bus, 1); in usb_attach_sub()
895 /*------------------------------------------------------------------------*
897 *------------------------------------------------------------------------*/
900 usb_bus_mem_flush_all_cb(struct usb_bus *bus, struct usb_page_cache *pc, in usb_bus_mem_flush_all_cb() argument
907 /*------------------------------------------------------------------------*
908 * usb_bus_mem_flush_all - factored out code
909 *------------------------------------------------------------------------*/
912 usb_bus_mem_flush_all(struct usb_bus *bus, usb_bus_mem_cb_t *cb) in usb_bus_mem_flush_all() argument
915 cb(bus, &usb_bus_mem_flush_all_cb); in usb_bus_mem_flush_all()
920 /*------------------------------------------------------------------------*
922 *------------------------------------------------------------------------*/
925 usb_bus_mem_alloc_all_cb(struct usb_bus *bus, struct usb_page_cache *pc, in usb_bus_mem_alloc_all_cb() argument
929 pc->tag_parent = bus->dma_parent_tag; in usb_bus_mem_alloc_all_cb()
932 bus->alloc_failed = 1; in usb_bus_mem_alloc_all_cb()
937 /*------------------------------------------------------------------------*
938 * usb_bus_mem_alloc_all - factored out code
943 *------------------------------------------------------------------------*/
945 usb_bus_mem_alloc_all(struct usb_bus *bus, bus_dma_tag_t dmat, in usb_bus_mem_alloc_all() argument
948 bus->alloc_failed = 0; in usb_bus_mem_alloc_all()
950 mtx_init(&bus->bus_mtx, device_get_nameunit(bus->parent), in usb_bus_mem_alloc_all()
953 mtx_init(&bus->bus_spin_lock, device_get_nameunit(bus->parent), in usb_bus_mem_alloc_all()
956 usb_callout_init_mtx(&bus->power_wdog, in usb_bus_mem_alloc_all()
957 &bus->bus_mtx, 0); in usb_bus_mem_alloc_all()
959 TAILQ_INIT(&bus->intr_q.head); in usb_bus_mem_alloc_all()
962 usb_dma_tag_setup(bus->dma_parent_tag, bus->dma_tags, in usb_bus_mem_alloc_all()
963 dmat, &bus->bus_mtx, NULL, bus->dma_bits, USB_BUS_DMA_TAG_MAX); in usb_bus_mem_alloc_all()
965 if ((bus->devices_max > USB_MAX_DEVICES) || in usb_bus_mem_alloc_all()
966 (bus->devices_max < USB_MIN_DEVICES) || in usb_bus_mem_alloc_all()
967 (bus->devices == NULL)) { in usb_bus_mem_alloc_all()
970 bus->alloc_failed = 1; /* failure */ in usb_bus_mem_alloc_all()
974 cb(bus, &usb_bus_mem_alloc_all_cb); in usb_bus_mem_alloc_all()
977 if (bus->alloc_failed) { in usb_bus_mem_alloc_all()
978 usb_bus_mem_free_all(bus, cb); in usb_bus_mem_alloc_all()
980 return (bus->alloc_failed); in usb_bus_mem_alloc_all()
983 /*------------------------------------------------------------------------*
985 *------------------------------------------------------------------------*/
988 usb_bus_mem_free_all_cb(struct usb_bus *bus, struct usb_page_cache *pc, in usb_bus_mem_free_all_cb() argument
995 /*------------------------------------------------------------------------*
996 * usb_bus_mem_free_all - factored out code
997 *------------------------------------------------------------------------*/
999 usb_bus_mem_free_all(struct usb_bus *bus, usb_bus_mem_cb_t *cb) in usb_bus_mem_free_all() argument
1003 cb(bus, &usb_bus_mem_free_all_cb); in usb_bus_mem_free_all()
1005 usb_dma_tag_unsetup(bus->dma_parent_tag); in usb_bus_mem_free_all()
1008 mtx_destroy(&bus->bus_mtx); in usb_bus_mem_free_all()
1009 mtx_destroy(&bus->bus_spin_lock); in usb_bus_mem_free_all()
1016 usb_proc_mwait(USB_BUS_EXPLORE_PROC(udev->bus), pm1, pm2); in usb_proc_explore_mwait()
1022 return (usb_proc_msignal(USB_BUS_EXPLORE_PROC(udev->bus), pm1, pm2)); in usb_proc_explore_msignal()
1028 USB_BUS_LOCK(udev->bus); in usb_proc_explore_lock()
1034 USB_BUS_UNLOCK(udev->bus); in usb_proc_explore_unlock()