1. 01 Dec, 2009 3 commits
    • Eric W. Biederman's avatar
      USB: ftdi_sio: Keep going when write errors are encountered. · 0de6ab8b
      Eric W. Biederman authored
      The use of urb->actual_length to update tx_outstanding_bytes
      implicitly assumes that the number of bytes actually written is the
      same as the number of bytes we tried to write.  On error that
      assumption is violated so just use transfer_buffer_length the number
      of bytes we intended to write to the device.
      
      If an error occurs we need to fall through and call
      usb_serial_port_softint to wake up processes waiting in
      tty_wait_until_sent.
      Signed-off-by: default avatarEric W. Biederman <ebiederm@aristanetworks.com>
      Cc: stable <stable@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      0de6ab8b
    • Sergei Shtylyov's avatar
      USB: musb_gadget: fix STALL handling · cea83241
      Sergei Shtylyov authored
      The driver incorrectly cancels the mass-storage device CSW request
      (which leads to device reset) due to giving back URB at the head of
      endpoint's queue after sending each STALL handshake; stop doing that
      and start checking for the queue being non-empty before stalling an
      endpoint and disallowing stall in such case in musb_gadget_set_halt()
      like the other gadget drivers do.
      
      Moreover, the driver starts Rx request despite of the endpoint being
      halted -- fix this by moving the SendStall bit check from musb_g_rx()
      to rxstate().  And we also sometimes get into rxstate() with DMA still
      active after clearing an endpoint's halt (not clear why), so bail out
      in this case, similarly to what txstate() does...
      
      While at it, also do the following changes :
      
      - in musb_gadget_set_halt(), remove pointless Tx FIFO flushing (the
        driver does not allow stalling with non-empty Tx FIFO anyway);
      
      - in rxstate(), stop pointlessly zeroing the 'csr' variable;
      
      - in musb_gadget_set_halt(), move the 'done' label to a more proper
        place;
      
      - in musb_g_rx(), eliminate the 'done' label completely...
      Signed-off-by: default avatarSergei Shtylyov <sshtylyov@ru.mvista.com>
      Cc: <stable@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      cea83241
    • Alan Stern's avatar
      USB: EHCI: don't send Clear-TT-Buffer following a STALL · c2f6595f
      Alan Stern authored
      This patch (as1304) fixes a regression in ehci-hcd.  Evidently some
      hubs don't handle Clear-TT-Buffer requests correctly, so we should
      avoid sending them when they don't appear to be absolutely necessary.
      The reported symptom is that output on a downstream audio device cuts
      out because the hub stops relaying isochronous packets.
      
      The patch prevents Clear-TT-Buffer requests from being sent following
      a STALL handshake.  In theory a STALL indicates either that the
      downstream device sent a STALL or that no matching TT buffer could be
      found.  In either case, the transfer is completed and the TT buffer
      does not remain busy, so it doesn't need to be cleared.
      
      Also, the patch fixes a minor flaw in the code that actually sends the
      Clear-TT-Buffer requests.  Although the pipe direction isn't really
      used for control transfers, it should be a Send rather than a Receive.
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Reported-by: default avatarJavier Kohen <jkohen@users.sourceforge.net>
      CC: David Brownell <david-b@pacbell.net>
      Cc: stable <stable@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      c2f6595f
  2. 30 Nov, 2009 36 commits
  3. 29 Nov, 2009 1 commit
    • Alan Stern's avatar
      PM: fix irq enable/disable in runtime PM code · 862f89b3
      Alan Stern authored
      This patch (as1305) fixes a bug in the irq-enable settings and removes
      some related overhead in the runtime PM code.
      
      	In __pm_runtime_resume(), within the scope of the original
      	spin_lock_irq(), we know that irqs are disabled.  There's no
      	reason to go through a pair of enable/disable cycles when
      	acquiring and releasing the parent's lock.
      
      	In __pm_runtime_set_status(), irqs are already disabled when
      	the parent's lock is acquired, and they must remain disabled
      	when it is released.
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      862f89b3