Hi!

I fear it's not just the mouse that doesn't survive the suspend - it's
the whole USB subsystem that doesn't wake. The next backport will have
correct support for APM.

Vojtech


On Fri, Jun 02, 2000 at 12:57:56PM -0400, Chris Mason wrote:
> Vojtech, linux-usb folks-
> 
> It appears that you may be responsible for maintaining various USB human
> interface device drivers.  If this is not the case, please disregard
> this message.
> 
> I'm having a problem with a Sony Vaio laptop (UHCI) and a Microsoft
> Intellimouse.  The mouse works great from first insertion to a suspend
> or disconnect and then fails to work.
> 
> This happens with kernel 2.2.15 and usb-2.3.99-pre7-1-for-2.2.14.diff
> 
> There are others who have this problem (and have posted to the
> [EMAIL PROTECTED] mailing list).  Paul Ashton <[EMAIL PROTECTED]>
> posted a patch to that list but I can't get it to install on this
> kernel/usb stack combination.  I've attached the patch below.
> 
> Is this a known issue?  Has it been resolved?  The mouse works great up
> until a suspend, and its a shame to have to reboot to get it to work
> again.
> 
> Thanks for your time and your software,
> 
> -c
> 
> (I don't subscribe to linux-usb; I would appreciate any replies to copy
> my address above.)
> 
> 
> --- /tmp/mouse.c        Sun Aug 15 22:28:00 1999
> +++ linux/drivers/usb/mouse.c   Mon Aug 16 00:51:14 1999
> @@ -49,6 +49,7 @@
>         int present; /* this mouse is plugged in */
>         int active; /* someone is has this mouse's device open */
>         int ready; /* the mouse has changed state since the last read */
> +       int suspended; /* mouse disconnected */
>         wait_queue_head_t wait; /* for polling */
>         struct fasync_struct *fasync;
>         /* later, add a list here to support multiple mice */
> @@ -71,6 +72,17 @@
>         /* finding the mouse is easy when there's only one */
>         struct mouse_state *mouse = &static_mouse_state; 
>  
> +       if (state)
> +               printk(KERN_DEBUG "%s(%d):state %d, bp %p, len %d, dp
> %p\n",
> +                       __FILE__, __LINE__, state, __buffer, len,
> dev_id);
> +
> +       if (state == USB_ST_REMOVED)
> +       {
> +               printk(KERN_DEBUG "%s(%d): USB_ST_REMOVED\n",
> +                       __FILE__, __LINE__);
> +               mouse->suspended = 1;
> +               return 0;
> +       }
>         /* if a mouse moves with no one listening, do we care? no */
>         if(!mouse->active)
>                 return 1;
> @@ -110,9 +122,11 @@
>  
>         fasync_mouse(-1, file, 0);
>  
> +       printk(KERN_DEBUG "%s(%d): MOD_DEC\n", __FILE__, __LINE__);
>         MOD_DEC_USE_COUNT;
>  
>         if (--mouse->active == 0) {
> +               mouse->suspended = 0;
>                 /* stop polling the mouse while its not in use */
>                 usb_release_irq
> 
> 
> -- 
> [ Christopher Mason        <[EMAIL PROTECTED]>      
> http://ash.rem.cmu.edu/ ]
> [ "Don't you see?! We're actors--we're the opposite of people!"
> -Stoppard ]

-- 
Vojtech Pavlik
SuSE Labs

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to