summaryrefslogtreecommitdiffstats
path: root/sys/dev/usb2/controller/usb2_controller.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/usb2/controller/usb2_controller.c')
-rw-r--r--sys/dev/usb2/controller/usb2_controller.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/sys/dev/usb2/controller/usb2_controller.c b/sys/dev/usb2/controller/usb2_controller.c
index 61ce314..a9596c7 100644
--- a/sys/dev/usb2/controller/usb2_controller.c
+++ b/sys/dev/usb2/controller/usb2_controller.c
@@ -166,6 +166,11 @@ usb2_detach(device_t dev)
USB_BUS_UNLOCK(bus);
+ /* Get rid of USB callback processes */
+
+ usb2_proc_unsetup(&bus->giant_callback_proc);
+ usb2_proc_unsetup(&bus->non_giant_callback_proc);
+
/* Get rid of USB roothub process */
usb2_proc_unsetup(&bus->roothub_proc);
@@ -391,8 +396,17 @@ usb2_attach_sub(device_t dev, struct usb2_bus *bus)
bus->roothub_msg[1].hdr.pm_callback = &usb2_bus_roothub;
bus->roothub_msg[1].bus = bus;
- /* Create USB explore and roothub processes */
- if (usb2_proc_setup(&bus->roothub_proc,
+ /* Create USB explore, roothub and callback processes */
+
+ if (usb2_proc_setup(&bus->giant_callback_proc,
+ &bus->bus_mtx, USB_PRI_MED)) {
+ printf("WARNING: Creation of USB Giant "
+ "callback process failed.\n");
+ } else if (usb2_proc_setup(&bus->non_giant_callback_proc,
+ &bus->bus_mtx, USB_PRI_HIGH)) {
+ printf("WARNING: Creation of USB non-Giant "
+ "callback process failed.\n");
+ } else if (usb2_proc_setup(&bus->roothub_proc,
&bus->bus_mtx, USB_PRI_HIGH)) {
printf("WARNING: Creation of USB roothub "
"process failed.\n");
OpenPOWER on IntegriCloud