Merge branch 'master' of github.com:thepowersgang/acess2
[tpg/acess2.git] / KernelLand / Modules / USB / Core / hub.c
index eccaa3f..7bc4dc2 100644 (file)
@@ -5,7 +5,7 @@
  * hub.c
  * - Basic hub driver
  */
-#define DEBUG  1
+#define DEBUG  0
 #include <usb_hub.h>
 #include <timers.h>
 
@@ -52,7 +52,7 @@ struct sHubInfo
 };
 
 // === PROTOTYPES ===
-void   Hub_Connected(tUSBInterface *Dev);
+void   Hub_Connected(tUSBInterface *Dev, void *Descriptors, size_t Length);
 void   Hub_Disconnected(tUSBInterface *Dev);
 void   Hub_PortStatusChange(tUSBInterface *Dev, int Endpoint, int Length, void *Data);
 void   Hub_int_HandleChange(tUSBInterface *Dev, int Port);
@@ -78,13 +78,13 @@ int Hub_DriverInitialise(char **Arguments)
 }
 #endif
 
-void Hub_Connected(tUSBInterface *Dev)
+void Hub_Connected(tUSBInterface *Dev, void *Descriptors, size_t Length)
 {
        struct sHubDescriptor   hub_desc;
        struct sHubInfo *info;  
 
-       // Read hub descriptor (Class descriptor 0x29)
-       USB_ReadDescriptor(Dev, 0x129, 0, sizeof(hub_desc), &hub_desc);
+       // Read hub descriptor (Class descriptor 0x9, destined for device)
+       USB_ReadDescriptor(Dev, 0x0129, 0, sizeof(hub_desc), &hub_desc);
 
        LOG("%i Ports", hub_desc.NbrPorts);
        LOG("Takes %i ms for power to stabilise", hub_desc.PwrOn2PwrGood*2);
@@ -123,8 +123,9 @@ void Hub_PortStatusChange(tUSBInterface *Dev, int Endpoint, int Length, void *Da
        for( i = 0; i < info->nPorts; i += 8, status ++ )
        {
                if( i/8 >= Length )     break;
-               if( *status == 0 )      continue;
-       
+               LOG("status[%i] = %x", i/8, *status);
+               if( *status == 0 )      continue;       
+
                for( int j = 0; j < 8; j ++ )
                        if( *status & (1 << j) )
                                Hub_int_HandleChange(Dev, i+j);

UCC git Repository :: git.ucc.asn.au