X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FModules%2FUSB%2FCore%2Fusb.c;h=e20f53cd0b8f112d3cdc901f1db9a1922b241fbb;hb=e02f66c7125bf18f77c6c53587238cbd49da2c89;hp=a265be93159ee1a9359222f92f4cf79d208edc0d;hpb=0387e49399279e685d2a2657392f3bccbf624184;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/USB/Core/usb.c b/KernelLand/Modules/USB/Core/usb.c index a265be93..e20f53cd 100644 --- a/KernelLand/Modules/USB/Core/usb.c +++ b/KernelLand/Modules/USB/Core/usb.c @@ -21,6 +21,9 @@ extern tUSBDriver gUSBHub_Driver; tUSBHub *USB_RegisterHost(tUSBHostDef *HostDef, void *ControllerPtr, int nPorts); // === GLOBALS === +tMutex glUSB_Hosts; +tUSBHost *gUSB_Hosts = NULL; +tMutex glUSB_InterfaceDrivers; tUSBDriver *gpUSB_InterfaceDrivers = &gUSBHub_Driver; // === CODE === @@ -51,9 +54,11 @@ tUSBHub *USB_RegisterHost(tUSBHostDef *HostDef, void *ControllerPtr, int nPorts) host->RootHub.nPorts = nPorts; memset(host->RootHub.Devices, 0, sizeof(void*)*nPorts); - // TODO: Lock + // Append to list + Mutex_Acquire( &glUSB_Hosts ); host->Next = gUSB_Hosts; gUSB_Hosts = host; + Mutex_Release( &glUSB_Hosts ); return &host->RootHub; } @@ -61,9 +66,12 @@ tUSBHub *USB_RegisterHost(tUSBHostDef *HostDef, void *ControllerPtr, int nPorts) // --- Drivers --- void USB_RegisterDriver(tUSBDriver *Driver) { - Log_Warning("USB", "TODO: Implement USB_RegisterDriver"); + Mutex_Acquire( &glUSB_InterfaceDrivers ); Driver->Next = gpUSB_InterfaceDrivers; gpUSB_InterfaceDrivers = Driver; + Mutex_Release( &glUSB_InterfaceDrivers ); + + // TODO: Recheck devices that didn't have a driver } tUSBDriver *USB_int_FindDriverByClass(Uint32 ClassCode)