On Tue, 29 May 2012, Rajeev kumar wrote: > Just for curiosity, > I have passed USB1 from this flag and it starts supporting full speed > device. > > When I passed USB2 flag from this and connect a full speed hub, it > reflect "parent hub has no TT". The print is coming from > > /* Set up TT records, if needed */ > if (hdev->tt) { > udev->tt = hdev->tt; > udev->ttport = hdev->ttport; > } else if (udev->speed != USB_SPEED_HIGH > && hdev->speed == USB_SPEED_HIGH) { > if (!hub->tt.hub) { > dev_err(&udev->dev, "parent hub has no TT\n"); > retval = -EINVAL; > goto fail; > } > } > My debugging says that > 1. hdev->speed == USB_SPEED_HIGH comparison is true, but why when I am > attaching a full speed device. hdev->speed is the speed of the parent hub, not the speed of the device. > 2. The print "parent hub has no TT\n" will only come when there is no > tt.hub. Now this is only possible when hdev->descriptor.bDeviceProtocol > == 0. Could you please guide me from where this field is getting updated? It gets set from hcd->has_tt, which your driver must initialize in its probe or reset routine. There are examples in various source files in drivers/usb/host. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html