X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=usb%2Fcore%2Fcore.c;h=b1d04743e5c77078dfb3b6b6a68e5d303ae3ccc9;hb=e2f68eaaefb3045cd6e3d07a326ac7feeeda7bac;hp=47e236c1d59a295433e183d69e8b36381528f8be;hpb=31c91f98447bb3e72a8d45fa594dee6bda266071;p=ppcskel.git diff --git a/usb/core/core.c b/usb/core/core.c index 47e236c..b1d0474 100644 --- a/usb/core/core.c +++ b/usb/core/core.c @@ -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));