various changes, see difflog for details!
[ppcskel.git] / usb / core / core.c
index 47e236c1d59a295433e183d69e8b36381528f8be..b1d04743e5c77078dfb3b6b6a68e5d303ae3ccc9 100644 (file)
@@ -100,11 +100,29 @@ usb_device *usb_add_device()
        dev->epTogl[2] = 0;
 
        char buf[64];
+       memset(buf, 0, sizeof(buf));
 
        /* ask first 8 bytes of device descriptor with this special 
         * GET Descriptor Request, when device address = 0
         */
-       usb_control_msg(dev, 0x80, GET_DESCRIPTOR, 1, 0, 64, buf, 8, 0);
+
+       /*
+        * see page 253 in usb_20.pdf
+        * 
+        * bmRequestType = 0x80 = 10000000B
+        * bRequest = GET_DESCRIPTOR
+        * wValue = DEVICE (Descriptor Type)
+        * wIndex = 0
+        * wLength = 8 (in Bytes!?)
+        */
+       usb_control_msg(dev, 0x80, GET_DESCRIPTOR, DEVICE, 0, 8, buf, 8, 0);
+
+       /* 
+        * length (here =64) should be "number of byte to transfer", not 
+        * (as here) "number of bits to transfer.
+        * ?
+        */
+       //usb_control_msg(dev, 0x80, GET_DESCRIPTOR, 1, 0, 64, buf, 8, 0);
        printf("===========\nafter usb control msg:\n");
        hexdump(buf, sizeof(buf));