/**
* Initialize USB stack.
*/
-void usb_init()
+void usb_init(u32 reg)
{
core.drivers = list_create();
core.devices = list_create();
core.nextaddress = 1;
- hcdi_init();
+ hcdi_init(reg);
}
/**
* for the core. usb_add_device expected that
* the device answers to address zero.
*/
-struct usb_device *usb_add_device(u8 lowspeed)
+struct usb_device *usb_add_device(u8 lowspeed, u32 reg)
{
struct usb_device *dev = (struct usb_device *) malloc(sizeof(struct usb_device));
dev->conf = (struct usb_conf *) malloc(sizeof(struct usb_conf));
* 64 bytes for fullspeed
*/
dev->bMaxPacketSize0 = lowspeed ? 8 : 64;
+ dev->ohci = reg;
dev->epSize[0] = 64;
dev->epSize[1] = 64;
togl = togl ? 0 : 1;
/**** send token ****/
- hcdi_enqueue(td);
+ hcdi_enqueue(td, irp->dev->ohci);
/***************** Data Stage ***********************/
/**
}
/**** send token ****/
- hcdi_enqueue(td);
+ hcdi_enqueue(td, irp->dev->ohci);
/* pruefe ob noch weitere Pakete vom Device abgeholt werden muessen */
restlength = restlength - irp->epsize;
td->pid = USB_PID_IN;
}
/**** send token ****/
- hcdi_enqueue(td);
+ hcdi_enqueue(td, irp->dev->ohci);
free(td);
break;
else
togl = 0;
/**** send token ****/
- hcdi_enqueue(td);
+ hcdi_enqueue(td, irp->dev->ohci);
free(td);
}
/* next togl */
break;
}
- hcdi_fire();
+ hcdi_fire(irp->dev->ohci);
return 1;
}