new hottie: calloc != memalign. after s/calloc/memalign the HC
[ppcskel.git] / usb / core / core.c
index e3dffb24e4102e8f45259f139c58c5aa66d89af8..89d3f69c1a5e11a04e75c17319234aa40dfba62c 100644 (file)
@@ -100,14 +100,34 @@ usb_device *usb_add_device()
        dev->epTogl[2] = 0;
 
        char buf[64];
-       u8 devdescr_size;
-       u8 address = usb_next_address();
 
        /* 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));
+
+#if 0
+       u8 devdescr_size;
+       u8 address = usb_next_address();
        dev->bMaxPacketSize0 = (u8) buf[7] ? (u8) buf[7] : 1; //dirty?  /* setup real ep0 fifo size */
        devdescr_size = (u8) buf[0];    /* save real length of device descriptor */
 
@@ -155,6 +175,7 @@ usb_device *usb_add_device()
        list_add_tail(core.devices, tmp);
 
        usb_probe_driver();
+#endif
 
        return dev;
 }
@@ -424,6 +445,7 @@ usb_transfer_descriptor *usb_create_transfer_descriptor(usb_irp * irp)
        td->endpoint = irp->endpoint;
        td->iso = 0;
        td->state = USB_TRANSFER_DESCR_NONE;
+       td->maxp = irp->epsize;
 
        return td;
 }