On 2012年07月20日 09:18, Peter Chen wrote:
Oh. I recheck find these device will use ordinary resume rather than
reset_resume().
I remeber you said userspace should set USB_QUIRK_RESET_MORPHS for those
kind devices. After reset, they will morph. So reset_resume doesn't
work for them.
Ordinary resume almost just calls usb_get_status(udev, USB_RECIP_DEVICE, 0,
&devstatus) to verify whether usb device is OK. So even the device has been
repowered. Resume will be sucessful even the interface is changed. So
I have idea
to add a verify_resume without reset for these kind devices. Check
whether device class
was changed or interface vanish .If it morphed, then return error and
then renumerate then.
Does this make sense?
If you have powered off the port during the suspend, the device will
be at powered state
after resume, the usb_get_status will be failed, even you skip the
result of usb_get_status,
the coming operation for that device will also be failed as the device
address for itself returns to
0, but host doesn't know it. If port power is off (for bus powered device),
the reset is the only way to let the device work again.
hi Peter:
Thanks for your reply. You are right. the usb_get_status() also will
fail after resuming due to device's address change.
The driver loaded again with firmware and the device still could work, is Right?
No. All settings user space has done will be lost.
Can we notify user space to reconfigue it? Or they will find original
device have removed
and new device is coming. Reconfigue the new device. Because the
device is renumerated
during this procedure.
--
Best regards
Lan Tianyu
--
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
--
Best Regards
Tianyu Lan
linux kernel enabling team
--
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