* Redisigned some of the USB Stack. Unified constructors, removed redundant functions and moved some other functions around

* Implemented the EHCIRootHub
* Reworked UHCIRootHub to be more of a utility class and moved the actual work into the UHCI BusManager
* Implemented port reset in EHCI. Ports with low and fullspeed devices are now correctly handed over to the companion host controller.

Attachs and detachs as well as port resetting / enabling works now in EHCI. Only the actual data transfers are missing thereafter ;-)

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18656 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Michael Lotz
2006-08-28 00:43:10 +00:00
parent f50c1ececf
commit ffe3f107c4
18 changed files with 559 additions and 391 deletions
+6 -6
View File
@@ -145,10 +145,10 @@ set_feature(usb_id handle, uint16 selector)
{
TRACE(("usb_module: set_feature(0x%08x, %d)\n", handle, selector));
Object *object = gUSBStack->GetObject(handle);
if (!object || (object->Type() & USB_OBJECT_PIPE) == 0)
if (!object || (object->Type() & USB_OBJECT_CONTROL_PIPE) == 0)
return B_BAD_VALUE;
return ((Pipe *)object)->SetFeature(selector);
return ((ControlPipe *)object)->SetFeature(selector);
}
@@ -157,10 +157,10 @@ clear_feature(usb_id handle, uint16 selector)
{
TRACE(("usb_module: clear_feature(0x%08x, %d)\n", handle, selector));
Object *object = gUSBStack->GetObject(handle);
if (!object || (object->Type() & USB_OBJECT_PIPE) == 0)
if (!object || (object->Type() & USB_OBJECT_CONTROL_PIPE) == 0)
return B_BAD_VALUE;
return ((Pipe *)object)->ClearFeature(selector);
return ((ControlPipe *)object)->ClearFeature(selector);
}
@@ -172,10 +172,10 @@ get_status(usb_id handle, uint16 *status)
return B_BAD_VALUE;
Object *object = gUSBStack->GetObject(handle);
if (!object || (object->Type() & USB_OBJECT_PIPE) == 0)
if (!object || (object->Type() & USB_OBJECT_CONTROL_PIPE) == 0)
return B_BAD_VALUE;
return ((Pipe *)object)->GetStatus(status);
return ((ControlPipe *)object)->GetStatus(status);
}