Here is part of my usb mouse init sequence.
MouseSetProtocol switches from boot to report.
;returns 18 bytes at 0x5500
call MouseGetDeviceDescriptor
;read just the configuration descriptor to get MOUSEWTOTALLENGTH
mov edx,9
call MouseGetConfigDescriptor
;now we get the Config+Interface+HID+Endpoint Descriptors all in 1 shot
xor edx,edx
mov dx,[MOUSEWTOTALLENGTH]
call MouseGetConfigDescriptor
call MouseGetReportDescriptor
call MouseSetAddress
call MouseSetProtocol
call MouseSetIdle
call MouseSetConfiguration
;ready to conduct usb mouse interrupt IN transactions
;see /usb/interrupt.s
TomT
http://code.google.com/p/tatos/