Hi Oliver, your patch did improve things, however I had to add the submission of the control URB to get the update/scan cycle going (same as in usb_resume). As yealink_set_ringtone uses synchronous USB submissions it won't invoke the callback function. Also apart from restoring the ringtone, I forced an update of the remaining device data (display, LED, ...). Otherwise if during suspend the device is unplugged and plugged in again, the driver does not know about the changes on the display (for example) and the driver's data and the data stored in the device are out of sync. My test went all well with these additions. The patch below builds on your latest patch. Regards, -Thomas Signed-off-by: Thomas Reitmayr <treitmayr@xxxxxxxxxx> --- --- linux-2.6.26-rc8/drivers/input/misc/yealink.old.c 2008-07-03 20:10:36.000000000 +0200 +++ linux-2.6.26-rc8/drivers/input/misc/yealink.c 2008-07-03 20:10:26.000000000 +0200 @@ -903,10 +903,18 @@ static int usb_reset_resume(struct usb_i { struct yealink_dev *yld = usb_get_intfdata(intf); int rv = 0; + int i; down_read(&sysfs_rwsema); if (!yld->open) goto skip_io; + + /* force updates to device */ + for (i = 0; i<sizeof(yld->master); i++) + yld->copy.b[i] = ~yld->master.b[i]; + yld->key_code = -1; /* no keys pressed */ + + /* restore the ringtone */ if (yld->old_ringtone) rv = yealink_set_ringtone(yld, yld->old_ringtone, @@ -916,6 +924,10 @@ static int usb_reset_resume(struct usb_i default_ringtone, sizeof(default_ringtone)); + /* restart updates and key scan */ + if (rv == 0) + rv = usb_submit_urb(yld->urb_ctl, GFP_NOIO); + skip_io: up_read(&sysfs_rwsema); -- Am Mittwoch, den 02.07.2008, 16:26 +0200 schrieb Oliver Neukum: > Am Montag 30 Juni 2008 23:47:08 schrieb Thomas Reitmayr: > > * Suspend to RAM: > > The device suspends properly, I hear the audio subsystem turning off > > while the display keeps its current state. > > Apparently the USB root hub gets reset during suspend/resume according > > to the kernel log. Then after resume the input events are generated > > This patch may help. > > Regards > Oliver > -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html