1. 03 Jul, 2008 1 commit
  2. 02 Apr, 2008 1 commit
  3. 01 Feb, 2008 4 commits
  4. 26 Jan, 2008 1 commit
  5. 17 Dec, 2007 1 commit
  6. 25 Oct, 2007 1 commit
  7. 12 Oct, 2007 4 commits
    • Michael Buesch's avatar
      USB: ohci SSB bus glue · c604e851
      Michael Buesch authored
      This adds SSB bus glue for the USB OHCI HCD. 
      Signed-off-by: default avatarMichael Buesch <mb@bu3sch.de>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      c604e851
    • Alan Stern's avatar
      USB: reorganize urb->status use in ohci-hcd · 55d84968
      Alan Stern authored
      This patch (as975) reorganizes the way ohci-hcd sets urb->status.  It
      now keeps the information in a local variable until the last moment.
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      CC: David Brownell <david-b@pacbell.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      55d84968
    • Alan Stern's avatar
      USB: make HCDs responsible for managing endpoint queues · e9df41c5
      Alan Stern authored
      This patch (as954) implements a suggestion of David Brownell's.  Now
      the host controller drivers are responsible for linking and unlinking
      URBs to/from their endpoint queues.  This eliminates the possiblity of
      strange situations where usbcore thinks an URB is linked but the HCD
      thinks it isn't.  It also means HCDs no longer have to check for URBs
      being dequeued before they were fully enqueued.
      
      In addition to the core changes, this requires changing every host
      controller driver and the root-hub URB handler.  For the most part the
      required changes are fairly small; drivers have to call
      usb_hcd_link_urb_to_ep() in their urb_enqueue method,
      usb_hcd_check_unlink_urb() in their urb_dequeue method, and
      usb_hcd_unlink_urb_from_ep() before giving URBs back.  A few HCDs make
      matters more complicated by the way they split up the flow of control.
      
      In addition some method interfaces get changed.  The endpoint argument
      for urb_enqueue is now redundant so it is removed.  The unlink status
      is required by usb_hcd_check_unlink_urb(), so it has been added to
      urb_dequeue.
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      CC: David Brownell <david-b@pacbell.net>
      CC: Olav Kongas <ok@artecdesign.ee>
      CC: Tony Olech <tony.olech@elandigitalsystems.com>
      CC: Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      e9df41c5
    • Mike Nuss's avatar
      USB: OHCI handles more ZFMicro quirks · 89a0fd18
      Mike Nuss authored
      The ZF Micro OHCI controller exhibits unexpected behavior that seems to be
      related to high load.  Under certain conditions, the controller will
      complete a TD, remove it from the endpoint's queue, and fail to add it to
      the donelist. This causes the endpoint to appear to stop responding. Worse,
      if the device is removed while in that state, OHCI will hang while waiting
      for the orphaned TD to complete.  The situation is not recoverable without
      rebooting.
      
      This fix enhances the scope of the existing OHCI_QUIRK_ZFMICRO flag:
      
       1. A watchdog routine periodically scans the OHCI structures to check
          for orphaned TDs. In these cases the TD is taken back from the
          controller and completed normally.
      
       2. If a device is removed while the endpoint is hung but before the
          watchdog catches the situation, any outstanding TDs are taken back
          from the controller in the 'sanitize' phase.
      
      The ohci-hcd driver used to print "INTR_SF lossage" in this situation;
      this changes it to the universally accurate "ED unlink timeout".  Other
      instances of this message presumably have different root causes.
      
      Both this Compaq quirk and a NEC quirk are now properly compiled out for
      non-PCI builds of this driver.
      Signed-off-by: default avatarMike Nuss <mike@terascala.com>
      Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      89a0fd18
  8. 19 Jul, 2007 1 commit
  9. 12 Jul, 2007 3 commits
    • Geoff Levand's avatar
      USB: PS3: USB system-bus rework · 7a4eb7fd
      Geoff Levand authored
      USB HCD glue updates to reflect the new PS3 unifed device support.
       - Fixed remove() routine.
       - Added shutdown() routine.
       - Added request_mem_region() call.
       - Fixed MODULE_ALIAS().
       - Made a proper fix for the hack done to support muti-platform in commit
         48fda451.
      Signed-off-by: default avatarGeoff Levand <geoffrey.levand@am.sony.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      7a4eb7fd
    • Michael Hanselmann's avatar
      USB: Fix NEC OHCI chip silicon bug · d576bb9f
      Michael Hanselmann authored
      This patch fixes a silicon bug in some NEC OHCI chips. The bug appears
      at random times and is very, very difficult to reproduce. Without the
      following patch, Linux would shut the chip and its associated devices
      down. In Apple PowerBooks this leads to an unusable keyboard and mouse
      (SSH still working). The idea of restarting the chip is taken from
      public Darwin code.
      Signed-off-by: default avatarMichael Hanselmann <linux-kernel@hansmi.ch>
      Cc: David Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      d576bb9f
    • Alan Stern's avatar
      USB: EHCI, OHCI: handover changes · 383975d7
      Alan Stern authored
      This patch (as887) changes the way ehci-hcd and ohci-hcd handle a loss
      of VBUS power during suspend.  In order for the USB-persist facility
      to work correctly, it is necessary for low- and full-speed devices
      attached to a high-speed port to be handed back to the companion
      controller during resume processing.
      
      This entails three changes: adding code to ehci-hcd to perform the
      handover, removing code from ohci-hcd to turn off ports during
      root-hub reinit, and adding code to ohci-hcd to turn on ports during
      PCI controller resume.  (Other bus glue resume methods for platforms
      supporting high-speed controllers would need a similar change, if any
      existed.)
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      383975d7
  10. 08 May, 2007 1 commit
  11. 27 Apr, 2007 1 commit
  12. 16 Feb, 2007 1 commit
  13. 15 Feb, 2007 1 commit
  14. 07 Feb, 2007 4 commits
  15. 20 Dec, 2006 2 commits
  16. 01 Dec, 2006 2 commits
  17. 16 Nov, 2006 1 commit
    • Alan Stern's avatar
      USB: OHCI: fix root-hub resume bug · 583ceada
      Alan Stern authored
      When a suspended OHCI controller sees a port's status change, it sets
      both the Root-Hub-Status-Change and the Resume-Detect bits in the
      Interrupt Status register.  Processing both these bits, the driver
      tries to resume the root hub twice!
      
      This patch (as807) fixes the bug by ignoring RD if RHSC is set.  It
      also prints a slightly more informative log message when a
      remote-wakeup event occurs.
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      583ceada
  18. 05 Oct, 2006 1 commit
    • David Howells's avatar
      IRQ: Maintain regs pointer globally rather than passing to IRQ handlers · 7d12e780
      David Howells authored
      Maintain a per-CPU global "struct pt_regs *" variable which can be used instead
      of passing regs around manually through all ~1800 interrupt handlers in the
      Linux kernel.
      
      The regs pointer is used in few places, but it potentially costs both stack
      space and code to pass it around.  On the FRV arch, removing the regs parameter
      from all the genirq function results in a 20% speed up of the IRQ exit path
      (ie: from leaving timer_interrupt() to leaving do_IRQ()).
      
      Where appropriate, an arch may override the generic storage facility and do
      something different with the variable.  On FRV, for instance, the address is
      maintained in GR28 at all times inside the kernel as part of general exception
      handling.
      
      Having looked over the code, it appears that the parameter may be handed down
      through up to twenty or so layers of functions.  Consider a USB character
      device attached to a USB hub, attached to a USB controller that posts its
      interrupts through a cascaded auxiliary interrupt controller.  A character
      device driver may want to pass regs to the sysrq handler through the input
      layer which adds another few layers of parameter passing.
      
      I've build this code with allyesconfig for x86_64 and i386.  I've runtested the
      main part of the code on FRV and i386, though I can't test most of the drivers.
      I've also done partial conversion for powerpc and MIPS - these at least compile
      with minimal configurations.
      
      This will affect all archs.  Mostly the changes should be relatively easy.
      Take do_IRQ(), store the regs pointer at the beginning, saving the old one:
      
      	struct pt_regs *old_regs = set_irq_regs(regs);
      
      And put the old one back at the end:
      
      	set_irq_regs(old_regs);
      
      Don't pass regs through to generic_handle_irq() or __do_IRQ().
      
      In timer_interrupt(), this sort of change will be necessary:
      
      	-	update_process_times(user_mode(regs));
      	-	profile_tick(CPU_PROFILING, regs);
      	+	update_process_times(user_mode(get_irq_regs()));
      	+	profile_tick(CPU_PROFILING);
      
      I'd like to move update_process_times()'s use of get_irq_regs() into itself,
      except that i386, alone of the archs, uses something other than user_mode().
      
      Some notes on the interrupt handling in the drivers:
      
       (*) input_dev() is now gone entirely.  The regs pointer is no longer stored in
           the input_dev struct.
      
       (*) finish_unlinks() in drivers/usb/host/ohci-q.c needs checking.  It does
           something different depending on whether it's been supplied with a regs
           pointer or not.
      
       (*) Various IRQ handler function pointers have been moved to type
           irq_handler_t.
      Signed-Off-By: default avatarDavid Howells <dhowells@redhat.com>
      (cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)
      7d12e780
  19. 28 Sep, 2006 1 commit
  20. 27 Sep, 2006 5 commits
  21. 02 Aug, 2006 1 commit
  22. 12 Jul, 2006 1 commit
  23. 30 Jun, 2006 1 commit