Lines Matching refs:bus
97 usb_root_mount_rel(struct usb_bus *bus)
99 if (bus->bus_roothold != NULL) {
100 DPRINTF("Releasing root mount hold %p\n", bus->bus_roothold);
101 root_mount_rel(bus->bus_roothold);
102 bus->bus_roothold = NULL;
117 struct usb_bus *bus = (struct usb_bus *)device_get_ivars(dev);
123 if (bus == NULL) {
130 /* delay vfs_mountroot until the bus is explored */
131 bus->bus_roothold = root_mount_hold(device_get_nameunit(dev));
143 usb_attach_sub(dev, bus);
153 struct usb_bus *bus = (struct usb_bus *)device_get_softc(dev);
157 if (bus == NULL) {
162 usb_callout_drain(&bus->power_wdog);
166 usb_root_mount_rel(bus);
169 USB_BUS_LOCK(bus);
172 (void)usb_proc_msignal(USB_BUS_EXPLORE_PROC(bus),
173 &bus->detach_msg[0], &bus->detach_msg[1]);
176 usb_proc_mwait(USB_BUS_EXPLORE_PROC(bus),
177 &bus->detach_msg[0], &bus->detach_msg[1]);
179 USB_BUS_UNLOCK(bus);
184 usb_proc_free(USB_BUS_GIANT_PROC(bus));
185 usb_proc_free(USB_BUS_NON_GIANT_ISOC_PROC(bus));
186 usb_proc_free(USB_BUS_NON_GIANT_BULK_PROC(bus));
190 usb_proc_free(USB_BUS_EXPLORE_PROC(bus));
194 usb_proc_free(USB_BUS_CONTROL_XFER_PROC(bus));
198 usbpf_detach(bus);
215 struct usb_bus *bus = (struct usb_bus *)device_get_softc(dev);
219 if (bus == NULL) {
224 USB_BUS_LOCK(bus);
225 (void)usb_proc_msignal(USB_BUS_EXPLORE_PROC(bus),
226 &bus->suspend_msg[0], &bus->suspend_msg[1]);
229 usb_proc_mwait(USB_BUS_EXPLORE_PROC(bus),
230 &bus->suspend_msg[0], &bus->suspend_msg[1]);
232 USB_BUS_UNLOCK(bus);
243 struct usb_bus *bus = (struct usb_bus *)device_get_softc(dev);
247 if (bus == NULL) {
252 USB_BUS_LOCK(bus);
253 (void)usb_proc_msignal(USB_BUS_EXPLORE_PROC(bus),
254 &bus->resume_msg[0], &bus->resume_msg[1]);
257 usb_proc_mwait(USB_BUS_EXPLORE_PROC(bus),
258 &bus->resume_msg[0], &bus->resume_msg[1]);
260 USB_BUS_UNLOCK(bus);
269 usb_bus_reset_async_locked(struct usb_bus *bus)
271 USB_BUS_LOCK_ASSERT(bus, MA_OWNED);
275 if ((bus->reset_msg[0].hdr.pm_qentry.tqe_prev != NULL) ||
276 (bus->reset_msg[1].hdr.pm_qentry.tqe_prev != NULL)) {
281 device_printf(bus->parent, "Resetting controller\n");
283 (void)usb_proc_msignal(USB_BUS_EXPLORE_PROC(bus),
284 &bus->reset_msg[0], &bus->reset_msg[1]);
293 struct usb_bus *bus = device_get_softc(dev);
297 if (bus == NULL) {
302 DPRINTF("%s: Controller shutdown\n", device_get_nameunit(bus->bdev));
304 USB_BUS_LOCK(bus);
305 (void)usb_proc_msignal(USB_BUS_EXPLORE_PROC(bus),
306 &bus->shutdown_msg[0], &bus->shutdown_msg[1]);
309 usb_proc_mwait(USB_BUS_EXPLORE_PROC(bus),
310 &bus->shutdown_msg[0], &bus->shutdown_msg[1]);
312 USB_BUS_UNLOCK(bus);
315 device_get_nameunit(bus->bdev));
328 struct usb_bus *bus;
331 bus = ((struct usb_bus_msg *)pm)->bus;
332 udev = bus->devices[USB_ROOT_HUB_ADDR];
334 if (bus->no_explore != 0)
338 USB_BUS_UNLOCK(bus);
340 USB_BUS_LOCK(bus);
344 if (bus->do_probe) {
345 bus->do_probe = 0;
346 bus->driver_added_refcount++;
348 if (bus->driver_added_refcount == 0) {
350 bus->driver_added_refcount = 1;
358 usb_proc_rewakeup(USB_BUS_CONTROL_XFER_PROC(bus));
359 usb_proc_rewakeup(USB_BUS_GIANT_PROC(bus));
360 usb_proc_rewakeup(USB_BUS_NON_GIANT_ISOC_PROC(bus));
361 usb_proc_rewakeup(USB_BUS_NON_GIANT_BULK_PROC(bus));
364 USB_BUS_UNLOCK(bus);
370 usb_bus_powerd(bus);
374 USB_BUS_LOCK(bus);
377 usb_root_mount_rel(bus);
389 struct usb_bus *bus;
393 bus = ((struct usb_bus_msg *)pm)->bus;
394 udev = bus->devices[USB_ROOT_HUB_ADDR];
395 dev = bus->bdev;
398 USB_BUS_UNLOCK(bus);
410 USB_BUS_LOCK(bus);
412 bus->bdev = NULL;
423 struct usb_bus *bus;
430 bus = ((struct usb_bus_msg *)pm)->bus;
431 udev = bus->devices[USB_ROOT_HUB_ADDR];
433 if ((udev == NULL) || (bus->bdev == NULL))
436 USB_BUS_UNLOCK(bus);
447 (void)bus_generic_shutdown(bus->bdev);
453 device_printf(bus->bdev, "Could not unconfigure root HUB\n");
455 USB_BUS_LOCK(bus);
456 bus->hw_power_state = 0;
457 bus->no_explore = 1;
458 USB_BUS_UNLOCK(bus);
460 if (bus->methods->set_hw_power != NULL)
461 (bus->methods->set_hw_power) (bus);
463 if (bus->methods->set_hw_power_sleep != NULL)
464 (bus->methods->set_hw_power_sleep) (bus, USB_HW_POWER_SUSPEND);
469 USB_BUS_LOCK(bus);
480 struct usb_bus *bus;
487 bus = ((struct usb_bus_msg *)pm)->bus;
488 udev = bus->devices[USB_ROOT_HUB_ADDR];
490 if ((udev == NULL) || (bus->bdev == NULL))
493 USB_BUS_UNLOCK(bus);
497 USB_TAKE_CONTROLLER(device_get_parent(bus->bdev));
499 USB_BUS_LOCK(bus);
500 bus->hw_power_state =
506 bus->no_explore = 0;
507 USB_BUS_UNLOCK(bus);
509 if (bus->methods->set_hw_power_sleep != NULL)
510 (bus->methods->set_hw_power_sleep) (bus, USB_HW_POWER_RESUME);
512 if (bus->methods->set_hw_power != NULL)
513 (bus->methods->set_hw_power) (bus);
518 device_printf(bus->bdev, "Could not configure root HUB\n");
523 device_printf(bus->bdev, "Could not probe and "
530 USB_BUS_LOCK(bus);
541 struct usb_bus *bus;
545 bus = ((struct usb_bus_msg *)pm)->bus;
547 if ((bus->bdev == NULL) || (bus->no_explore != 0))
563 struct usb_bus *bus;
569 bus = ((struct usb_bus_msg *)pm)->bus;
570 udev = bus->devices[USB_ROOT_HUB_ADDR];
572 if ((udev == NULL) || (bus->bdev == NULL))
575 USB_BUS_UNLOCK(bus);
577 (void)bus_generic_shutdown(bus->bdev);
583 device_printf(bus->bdev, "Could not unconfigure root HUB\n");
585 USB_BUS_LOCK(bus);
586 bus->hw_power_state = 0;
587 bus->no_explore = 1;
588 USB_BUS_UNLOCK(bus);
590 if (bus->methods->set_hw_power != NULL)
591 (bus->methods->set_hw_power) (bus);
593 if (bus->methods->set_hw_power_sleep != NULL)
594 (bus->methods->set_hw_power_sleep) (bus, USB_HW_POWER_SHUTDOWN);
599 USB_BUS_LOCK(bus);
610 struct usb_bus *bus;
616 bus = ((struct usb_bus_msg *)pm)->bus;
617 dev = bus->bdev;
621 switch (bus->usbrev) {
624 device_printf(bus->bdev, "12Mbps Full Speed USB v1.0\n");
629 device_printf(bus->bdev, "12Mbps Full Speed USB v1.1\n");
634 device_printf(bus->bdev, "480Mbps High Speed USB v2.0\n");
639 device_printf(bus->bdev, "480Mbps Wireless USB v2.5\n");
644 device_printf(bus->bdev, "5.0Gbps Super Speed USB v3.0\n");
648 device_printf(bus->bdev, "Unsupported USB revision\n");
650 usb_root_mount_rel(bus);
656 bus->hw_power_state =
663 USB_BUS_UNLOCK(bus);
667 if (bus->methods->set_hw_power != NULL) {
668 (bus->methods->set_hw_power) (bus);
673 child = usb_alloc_device(bus->bdev, bus, NULL, 0, 0, 1,
679 if ((bus->devices[USB_ROOT_HUB_ADDR] == NULL) ||
680 (bus->devices[USB_ROOT_HUB_ADDR]->hub == NULL)) {
688 USB_BUS_LOCK(bus);
691 device_printf(bus->bdev, "Root HUB problem, error=%s\n",
694 usb_root_mount_rel(bus);
699 device_set_softc(dev, bus);
709 usb_attach_sub(device_t dev, struct usb_bus *bus)
717 usbpf_attach(bus);
720 bus->explore_msg[0].hdr.pm_callback = &usb_bus_explore;
721 bus->explore_msg[0].bus = bus;
722 bus->explore_msg[1].hdr.pm_callback = &usb_bus_explore;
723 bus->explore_msg[1].bus = bus;
725 bus->detach_msg[0].hdr.pm_callback = &usb_bus_detach;
726 bus->detach_msg[0].bus = bus;
727 bus->detach_msg[1].hdr.pm_callback = &usb_bus_detach;
728 bus->detach_msg[1].bus = bus;
730 bus->attach_msg[0].hdr.pm_callback = &usb_bus_attach;
731 bus->attach_msg[0].bus = bus;
732 bus->attach_msg[1].hdr.pm_callback = &usb_bus_attach;
733 bus->attach_msg[1].bus = bus;
735 bus->suspend_msg[0].hdr.pm_callback = &usb_bus_suspend;
736 bus->suspend_msg[0].bus = bus;
737 bus->suspend_msg[1].hdr.pm_callback = &usb_bus_suspend;
738 bus->suspend_msg[1].bus = bus;
740 bus->resume_msg[0].hdr.pm_callback = &usb_bus_resume;
741 bus->resume_msg[0].bus = bus;
742 bus->resume_msg[1].hdr.pm_callback = &usb_bus_resume;
743 bus->resume_msg[1].bus = bus;
745 bus->reset_msg[0].hdr.pm_callback = &usb_bus_reset;
746 bus->reset_msg[0].bus = bus;
747 bus->reset_msg[1].hdr.pm_callback = &usb_bus_reset;
748 bus->reset_msg[1].bus = bus;
750 bus->shutdown_msg[0].hdr.pm_callback = &usb_bus_shutdown;
751 bus->shutdown_msg[0].bus = bus;
752 bus->shutdown_msg[1].hdr.pm_callback = &usb_bus_shutdown;
753 bus->shutdown_msg[1].bus = bus;
757 if (usb_proc_create(USB_BUS_GIANT_PROC(bus),
758 &bus->bus_mtx, "USB_GIANT_Task", USB_PRI_MED)) {
761 } else if (usb_proc_create(USB_BUS_NON_GIANT_ISOC_PROC(bus),
762 &bus->bus_mtx, "USB_NGIAN_ISOC_Task", USB_PRI_HIGHEST)) {
765 } else if (usb_proc_create(USB_BUS_NON_GIANT_BULK_PROC(bus),
766 &bus->bus_mtx, "USB_NGIAN_BULK_Task", USB_PRI_HIGH)) {
769 } else if (usb_proc_create(USB_BUS_EXPLORE_PROC(bus),
770 &bus->bus_mtx, "USB_EXPLR_Task", USB_PRI_MED)) {
773 } else if (usb_proc_create(USB_BUS_CONTROL_XFER_PROC(bus),
774 &bus->bus_mtx, "USB_CXFER_Task", USB_PRI_MED)) {
781 USB_BUS_LOCK(bus);
782 (void)usb_proc_msignal(USB_BUS_EXPLORE_PROC(bus),
783 &bus->attach_msg[0], &bus->attach_msg[1]);
784 USB_BUS_UNLOCK(bus);
788 usb_needs_explore(bus, 1);
798 usb_bus_mem_flush_all_cb(struct usb_bus *bus, struct usb_page_cache *pc,
810 usb_bus_mem_flush_all(struct usb_bus *bus, usb_bus_mem_cb_t *cb)
813 cb(bus, &usb_bus_mem_flush_all_cb);
823 usb_bus_mem_alloc_all_cb(struct usb_bus *bus, struct usb_page_cache *pc,
827 pc->tag_parent = bus->dma_parent_tag;
830 bus->alloc_failed = 1;
843 usb_bus_mem_alloc_all(struct usb_bus *bus, bus_dma_tag_t dmat,
846 bus->alloc_failed = 0;
848 mtx_init(&bus->bus_mtx, device_get_nameunit(bus->parent),
851 mtx_init(&bus->bus_spin_lock, device_get_nameunit(bus->parent),
854 usb_callout_init_mtx(&bus->power_wdog,
855 &bus->bus_mtx, 0);
857 TAILQ_INIT(&bus->intr_q.head);
860 usb_dma_tag_setup(bus->dma_parent_tag, bus->dma_tags,
861 dmat, &bus->bus_mtx, NULL, bus->dma_bits, USB_BUS_DMA_TAG_MAX);
863 if ((bus->devices_max > USB_MAX_DEVICES) ||
864 (bus->devices_max < USB_MIN_DEVICES) ||
865 (bus->devices == NULL)) {
868 bus->alloc_failed = 1; /* failure */
872 cb(bus, &usb_bus_mem_alloc_all_cb);
875 if (bus->alloc_failed) {
876 usb_bus_mem_free_all(bus, cb);
878 return (bus->alloc_failed);
886 usb_bus_mem_free_all_cb(struct usb_bus *bus, struct usb_page_cache *pc,
897 usb_bus_mem_free_all(struct usb_bus *bus, usb_bus_mem_cb_t *cb)
901 cb(bus, &usb_bus_mem_free_all_cb);
903 usb_dma_tag_unsetup(bus->dma_parent_tag);
906 mtx_destroy(&bus->bus_mtx);
907 mtx_destroy(&bus->bus_spin_lock);
914 usb_proc_mwait(USB_BUS_EXPLORE_PROC(udev->bus), pm1, pm2);
920 return (usb_proc_msignal(USB_BUS_EXPLORE_PROC(udev->bus), pm1, pm2));
926 USB_BUS_LOCK(udev->bus);
932 USB_BUS_UNLOCK(udev->bus);