X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FModules%2FUSB%2FCore%2Fusb.c;h=3234a778b4bd7b7fa972d2909731bdd3a5637086;hb=d9334c3a1eb0295eb13d088991182c57a4d3cabf;hp=e20f53cd0b8f112d3cdc901f1db9a1922b241fbb;hpb=37416c25dfc4f0290b0e806aa7e6c2d3ae8e50e5;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/USB/Core/usb.c b/KernelLand/Modules/USB/Core/usb.c index e20f53cd..3234a778 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) + nPorts*sizeof(void*)); + host = malloc(sizeof(tUSBHost) + nPorts*sizeof(tUSBHubPort)); if(!host) { // Oh, bugger. return NULL; @@ -43,6 +43,8 @@ tUSBHub *USB_RegisterHost(tUSBHostDef *HostDef, void *ControllerPtr, int 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->RootHubIf.Next = NULL; host->RootHubIf.Dev = &host->RootHubDev; @@ -52,7 +54,7 @@ tUSBHub *USB_RegisterHost(tUSBHostDef *HostDef, void *ControllerPtr, int nPorts) host->RootHub.Interface = &host->RootHubIf; host->RootHub.nPorts = nPorts; - memset(host->RootHub.Devices, 0, sizeof(void*)*nPorts); + memset(host->RootHub.Ports, 0, sizeof(tUSBHubPort)*nPorts); // Append to list Mutex_Acquire( &glUSB_Hosts ); @@ -97,10 +99,10 @@ tUSBHub *USB_RegisterHub(tUSBInterface *Device, int PortCount) { tUSBHub *ret; - ret = malloc(sizeof(tUSBHub) + sizeof(ret->Devices[0])*PortCount); + ret = malloc(sizeof(tUSBHub) + sizeof(ret->Ports[0])*PortCount); ret->Interface = Device; ret->nPorts = PortCount; - memset(ret->Devices, 0, sizeof(ret->Devices[0])*PortCount); + memset(ret->Ports, 0, sizeof(ret->Ports[0])*PortCount); return ret; } @@ -108,7 +110,7 @@ void USB_RemoveHub(tUSBHub *Hub) { for( int i = 0; i < Hub->nPorts; i ++ ) { - if( Hub->Devices[i] ) + if( Hub->Ports[i].Dev ) { USB_DeviceDisconnected( Hub, i ); }