Am Freitag, 30. April 2004 00:11 schrieb David Brownell:
+ /* see 7.1.7.6 */ + status = set_port_feature(hubdev, port, USB_PORT_FEAT_SUSPEND); + if (status) + dev_dbg(&hub->intf->dev, + "can't suspend port %d, status %d\n", + port, status);
That probanly should reset remote wakeup
That'd be reasonable paranoia. Hubs aren't supposed to fail that call, but on the off chance one did, I've heard rumors of devices that misbehave if the device remote wakeup feature isn't cleared.
+ /* see 7.1.7.7; affects power usage, but not budgeting */ + status = clear_port_feature(hubdev, port, USB_PORT_FEAT_SUSPEND); + if (status) { + dev_dbg(&hub->intf->dev, + "can't resume port %d, status %d\n", + port, status);
Shouldn't that trigger a disconnect()?
Again that's a "not supposed to happen", but it's easy enough to make the hub_port_disable() fire in that case too. And that should make khubd wake up (later) and disconnect().
Thanks for the feedback. I need remote wakeup to work, so I suspect I'll be filing rough spots off this for a while.
(Like adding new HCD operations to suspend/resume root hubs, resolving some of the FIXMEs ... :)
- Dave
-------------------------------------------------------
This SF.Net email is sponsored by: Oracle 10g
Get certified on the hottest thing ever to hit the market... Oracle 10g. Take an Oracle 10g class now, and we'll give you the exam FREE. http://ads.osdn.com/?ad_id=3149&alloc_id=8166&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel