- int lowspeed =
- (uhci_reg_read16 (dev->controller, portsc) >> 8) & 1;
- printf ("%sspeed device\n", (lowspeed == 1) ? "low" : "full");
-
- newdev = set_address (dev->controller, lowspeed);
- if (newdev == -1)
- return;
- newdev_t = &dev->controller->devices[newdev];
- RH_INST (dev)->port[offset] = newdev;
- newdev_t->address = newdev;
- newdev_t->hub = dev->address;
- newdev_t->port = portsc;
- // determine responsible driver
- newdev_t->init (newdev_t);
+ int speed = ((uhci_reg_read16 (dev->controller, portsc) >> 8) & 1);
+
+ RH_INST (dev)->port[offset] = usb_attach_device(dev->controller, dev->address, portsc, speed);