X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FModules%2FUSB%2FCore%2Fusb.c;h=c4e1680950acb0e648a354735828d5c77bfa7b41;hb=c18c6fea968e72403f9a7b75d6f7f8e3f9e8757f;hp=eb1aa391a3530fff848bf4dee399df74fb972e34;hpb=ea8e0fad3dfc8bf735d41eedbad2a8e6198059aa;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/USB/Core/usb.c b/KernelLand/Modules/USB/Core/usb.c index eb1aa391..c4e16809 100644 --- a/KernelLand/Modules/USB/Core/usb.c +++ b/KernelLand/Modules/USB/Core/usb.c @@ -31,7 +31,7 @@ tUSBHub *USB_RegisterHost(tUSBHostDef *HostDef, void *ControllerPtr, int nPorts) { tUSBHost *host; - host = malloc(sizeof(tUSBHost) + sizeof(tUSBDevice) + sizeof(tUSBInterface) + nPorts*sizeof(tUSBHubPort)); + host = malloc(sizeof(tUSBHost) + nPorts*sizeof(tUSBHubPort) + sizeof(tUSBDevice) + sizeof(tUSBInterface)); if(!host) { // Oh, bugger. return NULL; @@ -40,15 +40,15 @@ tUSBHub *USB_RegisterHost(tUSBHostDef *HostDef, void *ControllerPtr, int nPorts) host->Ptr = ControllerPtr; memset(host->AddressBitmap, 0, sizeof(host->AddressBitmap)); - host->RootHubDev = (void*)(host + 1); + host->RootHubDev = (void*)(host->RootHub.Ports + nPorts); host->RootHubDev->ParentHub = NULL; host->RootHubDev->Host = host; host->RootHubDev->Address = 0; ASSERT(HostDef->InitControl); host->RootHubDev->EndpointHandles[0] = HostDef->InitControl(ControllerPtr, 0, 64); + host->RootHubDev->nInterfaces = 0; host->RootHubIf = (void*)(host->RootHubDev + 1); -// host->RootHubIf->Next = NULL; host->RootHubIf->Dev = host->RootHubDev; host->RootHubIf->Driver = NULL; host->RootHubIf->Data = NULL;