Re: [0000/0003]full power management for usb touchscreens

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Monday 07 June 2010, Dmitry Torokhov wrote:
> On Mon, Jun 07, 2010 at 03:13:29PM +0200, Oliver Neukum wrote:
> > Hi,
> >
> > this patch series implements:
> >
> > - full support for suspend/resume/reset_resume
> > - runtime power management
> >
> > It does so by adding normal methods for suspend/resume,
> > splitting device intialization into a part that needs to be repeated
> > after reset_resume() and a part that does not.
> > Runtime power management is possible while the device is
> > active if the device supports remote wakeup, otherwise a fallback
> > to a method based on open/close is implemented.
> >
> > I lack the hardware. Therefore I need testers.
>
> Ondrej,
>
> You are the latest person I know who users usbtouchscreen driver, any
> chance you could lend a hand to Oliver here, please?

Looking at the patches from archive:

If I understand it correctly, usbtouch_resume submits the irq URB only if
the input device is open. That will fail with Nexio as it has an internal
watchdog which needs URBs or the device will reconnect - see irq_always
(Zytronic seems to need it too).


>From patch 3/3:
> @@ -1449,14 +1483,23 @@ static int usbtouch_probe(struct usb_interface
> *intf, usbtouch->irq->transfer_dma = usbtouch->data_dma;
>         usbtouch->irq->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
>
> -       /* device specific init */
> +       /* device specific allocations */
>         if (type->init) {

Looks like a copy&paste bug, should be "if (type->alloc) {".

> -               err = type->init(usbtouch);
> +               err = type->alloc(usbtouch);
>                 if (err) {
> -                       dbg("%s - type->init() failed, err: %d", __func__,
> err); +                       dbg("%s - type->alloc() failed, err: %d",
> __func__, err); goto out_free_urb;
>                 }
>         }
> +
> +       /* device specific init*/
> +       if (type->init) {
> +               err = type->alloc(usbtouch);
> +               if (err) {
> +                       dbg("%s - type->init() failed, err: %d", __func__,
> err); +                       goto out_do_exit;
> +               }
> +       }
>
>         err = input_register_device(usbtouch->input);
>         if (err) {


-- 
Ondrej Zary
--
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


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux