1. 10 3月, 2007 1 次提交
  2. 17 2月, 2007 1 次提交
  3. 08 2月, 2007 5 次提交
  4. 02 12月, 2006 3 次提交
    • A
      EHCI: Fix root-hub and port suspend/resume problems · 8c03356a
      Alan Stern 提交于
      This patch (as738b) fixes numerous problems in the controller/root-hub
      suspend/resume/remote-wakeup support in ehci-hcd:
      
      	The bus_resume() routine should wake up only the ports that
      	were suspended by bus_suspend().  Ports that were already
      	suspended should remain that way.
      
      	The interrupt mask is used to detect loss of power in the
      	bus_resume() routine (if the mask is 0 then power was lost).
      	However bus_suspend() always sets the mask to 0.  Instead the
      	mask should retain its normal value, with port-change-detect
      	interrupts disabled if remote wakeup is turned off.
      
      	The interrupt mask should be reset to its correct value at the
      	end of bus_resume() regardless of whether power was lost.
      
      	bus_resume() reinitializes the operational registers if power
      	was lost.  However those registers are not in the aux power
      	well, hence they can lose their values whenever the controller
      	is put into D3.  They should always be reinitialized.
      
      	When a port-change interrupt occurs and the root hub is
      	suspended, the interrupt handler should request a root-hub
      	resume instead of starting up the controller all by itself.
      
      	There's no need for the interrupt handler to request a
      	root-hub resume every time a suspended port sends a
      	remote-wakeup request.
      
      	The pci_resume() method doesn't need to check for connected
      	ports when deciding whether or not to reset the controller.
      	It can make that decision based on whether Vaux power was
      	maintained.
      
      	Even when the controller does not need to be reset,
      	pci_resume() must undo the effect of pci_suspend() by
      	re-enabling the interrupt mask.
      
      	If power was lost, pci_resume() must not call ehci_run().
      	At this point the root hub is still supposed to be suspended,
      	not running.  It's enough to rewrite the command register and
      	set the configured_flag.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      8c03356a
    • D
      USB: add ehci_hcd.ignore_oc parameter · 93f1a47c
      David Brownell 提交于
      Certain boards seem to like to issue false overcurrent notifications, for
      example on ports that don't have anything connected to them.  This looks
      like a hardware error, at the level of noise to those ports' overcurrent
      input signals (or non-debounced VBUS comparators).  This surfaces to users
      as truly massive amounts of syslog spam from khubd (which is appropriate
      for real hardware problems, except for the volume from multiple ports).
      
      Using this new "ignore_oc" flag helps such systems work more sanely, by
      preventing such indications from getting to khubd (and spam syslog).  The
      downside is of course that true overcurrent errors will be masked; they'll
      appear as spontaneous disconnects, without the diagnostics that will let
      users troubleshoot issues like short circuited cables.
      
      Note that the bulk of these reports seem to be with VIA southbridges, but
      I think some were with Intel ones.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      93f1a47c
    • D
      USB: EHCI hooks for high speed electrical tests · f0d7f273
      David Brownell 提交于
      EHCI hooks for high speed electrical tests of the root hub ports.
      
      The expectation is that a usermode program actually triggers the test,
      making the same control request it would make for an external hub.
      Tests for peripheral upstream ports would issue a different request.
      In all cases, the hardware needs re-initialization before it could
      be used "normally" again (e.g. unplug/replug, rmmod/modprobe).
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      f0d7f273
  5. 18 10月, 2006 1 次提交
  6. 05 10月, 2006 1 次提交
    • D
      IRQ: Maintain regs pointer globally rather than passing to IRQ handlers · 7d12e780
      David Howells 提交于
      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: NDavid Howells <dhowells@redhat.com>
      (cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)
      7d12e780
  7. 28 9月, 2006 2 次提交
  8. 21 3月, 2006 1 次提交
    • D
      [PATCH] USB: EHCI and NF2 quirk · f8aeb3bb
      David Brownell 提交于
      This teaches the EHCI driver about a quirk seen in older NForce2 chips,
      adding a workaround to ignore selective suspend requests.  Bus-wide
      (so-called "global") suspend still works, as does USB wakeup of a
      root hub that's globally suspended.
      
      There's still a hole in this support though.  Strictly speaking, this
      should _fail_ selective suspend requests, rather than ignoring them,
      since doing it this way means that devices which should be able to issue
      remote wakeup are not going to be able to do that.  For now, we'll just
      live with that problem ... since usbcore expects to do selective suspend
      on the way towards a full bus suspend, and usbcore needs to be able to
      do full bus suspend.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      f8aeb3bb
  9. 05 1月, 2006 1 次提交
  10. 24 11月, 2005 1 次提交
    • D
      [PATCH] USB: EHCI updates · f03c17fc
      David Brownell 提交于
      This fixes some bugs in EHCI suspend/resume that joined us over the past
      few releases (as usbcore, PCI, pmcore, and other components evolved):
      
        - Removes suspend and resume recursion from the EHCI driver, getting
          rid of the USB_SUSPEND special casing.
      
        - Updates the wakeup mechanism to work again; there's a newish usbcore
          call it needs to use.
      
        - Provide simpler tests for "do we need to restart from scratch", to
          address another case where PCI Vaux was lost.  (In this case it was
          restoring a swsusp snapshot, but there could be others.)
      
      Un-exports a symbol that was temporarily exported.
      
      A notable change from previous version is that this doesn't move
      the spinlock init, so there's still a resume/reinit path bug.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      f03c17fc
  11. 29 10月, 2005 1 次提交
    • A
      [PATCH] USB: Rename hcd->hub_suspend to hcd->bus_suspend · 0c0382e3
      Alan Stern 提交于
      This patch (as580) is perhaps the only result from the long discussion I
      had with David about his changes to the root-hub suspend/resume code.  It
      renames the hub_suspend and hub_resume methods in struct usb_hcd to
      bus_suspend and bus_resume.  These are more descriptive names, since the
      methods really do suspend or resume an entire USB bus, and less likely to
      be confused with the hub_suspend and hub_resume routines in hub.c.
      
      It also takes David's advice about removing the layer of bus glue, where
      those methods are called.  And it implements a related change that David
      made to the other HCDs but forgot to put into dummy_hcd.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      0c0382e3
  12. 13 9月, 2005 1 次提交
    • D
      [PATCH] USB: EHCI port tweaks · 10f6524a
      David Brownell 提交于
      One change may improve some S1 or S3 resume cases, and the other
      seems mostly to explain some strange state "lsusb" would show.
      Two fixes:
      
        - On resume, don't think about resuming any unpowered port, or
          resetting any port with OWNER set to the OHCI/UHCI companion.
          This will make some S1 and S3 resume scenarios work better.
      
        - PORT_CSC was not being cleared correctly in ehci_hub_status_data.
          This was visible at least through current versions of "lsusb",
          and might have caused some other hub related strangeness.
      
          The fix addresses all three write-to-clear bits, using the same
          approach that UHCI happens to use:  a mask of bits that are
          cleared in most writes to that port status register.
      
      Original patch seems to have been from from William.Morrow@amd.com
      and this version (from David) finishes the write-to-clear changes.
      Signed-off-by: NJordan Crouse <jordan.crouse@amd.com>
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      10f6524a
  13. 28 6月, 2005 1 次提交
    • D
      [PATCH] USB: misc ehci updates · d49d4317
      David Brownell 提交于
      Various minor EHCI updates
      
         * Dump some more info in the debug dumps, notably the product
           description (e.g. chip vendor), BIOS handhake flags, and
           debug port status (when it's not managed by the HCD).
      
         * Minor updates to the BIOS handoff code:  always flag the HCD
           as owned by Linux (in case BIOS doesn't grab it "early"),
           and on the buggy-BIOS path always match the "early handoff"
           code and forcibly disable SMI IRQs.
      
         * For the disabled 64bit DMA support, there's now a constant
           to use for the mask; use it.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      d49d4317
  14. 13 6月, 2005 1 次提交
  15. 17 5月, 2005 1 次提交
  16. 04 5月, 2005 1 次提交
    • D
      [PATCH] USB: ehci power fixes · 56c1e26d
      David Brownell 提交于
      Miscellaneous updates for EHCI.
      
       - Mostly updates the power switching on EHCI controllers.  One routine
         centralizes the "power on/off all ports" logic, and the capability to
         do that is reported more correctly.
      
       - Courtesy Colin Leroy, a patch to always power up ports after resumes
         which didn't keep a USB device suspended.  The reset-everything logic
         powers down those ports (on some hardware) so something needs to turn
         them back on.
      
       - Minor tweaks/bugfixes for the debug port support.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      56c1e26d
  17. 17 4月, 2005 1 次提交
    • L
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds 提交于
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4