about device descriptor,according to usb spec 2.0,
1. A hub returns different descriptors based on whether it is
operating at high speed or full/low speed.A hub can report three
different sets of the descriptors.
2. A hub must operate at high-speed when its upstream facing port is
connected at high-speed.The hub must operate at full speed when its
upstream facing port is connected at full-speed.
Take root hub for example, how does the hub itself know whether its
upstream facing port is connected at high-speed or
full-speed?Futhermore, if a host send a GET_DESCRIPTOR request to a
hub,how does it know which set of descriptor should be reported?
Let's see following section of code,sampled from hub_configure(),we
need to judge bDeviceProtocol of the device descriptor, it can be
0,1,or 2, but it's the value reported by hub,how does the hub know
which one should be reported when it received GET_DESCRIPTOR from the
host.
570 switch (hdev->descriptor.bDeviceProtocol) {
571 case 0:
572 break;
573 case 1:
574 dev_dbg(hub_dev, "Single TT\n");
575 hub->tt.hub = hdev;
576 break;
577 case 2:
578 ret = usb_set_interface(hdev, 0, 1);
579 if (ret == 0) {
580 dev_dbg(hub_dev, "TT per port\n");
581 hub->tt.multi = 1;
582 } else
583 dev_err(hub_dev, "Using single
TT (err %d)\n",
584 ret);
...
Regards&Thanks
Jason Xiao
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel