3 * - By John Hodge (thePowersGang)
15 extern tUSBHost *gUSB_Hosts;
16 extern tUSBDriver gUSBHub_Driver;
21 tUSBHub *USB_RegisterHost(tUSBHostDef *HostDef, void *ControllerPtr, int nPorts);
24 tUSBDriver *gUSB_InterfaceDrivers = &gUSBHub_Driver;
27 tUSBHub *USB_RegisterHost(tUSBHostDef *HostDef, void *ControllerPtr, int nPorts)
31 host = malloc(sizeof(tUSBHost) + nPorts*sizeof(void*));
36 host->HostDef = HostDef;
37 host->Ptr = ControllerPtr;
38 memset(host->AddressBitmap, 0, sizeof(host->AddressBitmap));
40 host->RootHubDev.ParentHub = NULL;
41 host->RootHubDev.Host = host;
42 host->RootHubDev.Address = 0;
44 host->RootHubIf.Next = NULL;
45 host->RootHubIf.Dev = &host->RootHubDev;
46 host->RootHubIf.Driver = NULL;
47 host->RootHubIf.Data = NULL;
48 host->RootHubIf.nEndpoints = 0;
50 host->RootHub.Interface = &host->RootHubIf;
51 host->RootHub.nPorts = nPorts;
52 memset(host->RootHub.Devices, 0, sizeof(void*)*nPorts);
55 host->Next = gUSB_Hosts;
58 return &host->RootHub;
61 void USB_RegisterDriver(tUSBDriver *Driver)
63 Log_Warning("USB", "TODO: Implement USB_RegisterDriver");
66 // --- Hub Registration ---
67 // NOTE: Doesn't do much nowdays
68 tUSBHub *USB_RegisterHub(tUSBInterface *Device, int PortCount)
72 ret = malloc(sizeof(tUSBHub) + sizeof(ret->Devices[0])*PortCount);
73 ret->Interface = Device;
74 ret->nPorts = PortCount;
75 memset(ret->Devices, 0, sizeof(ret->Devices[0])*PortCount);
79 void USB_RemoveHub(tUSBHub *Hub)
81 for( int i = 0; i < Hub->nPorts; i ++ )
85 USB_DeviceDisconnected( Hub, i );