1. 13 7月, 2007 5 次提交
    • L
      USB: ehci_fsl update for MPC831x support · ba02978a
      Li Yang 提交于
      For MPC831x support, change the ehci-fsl driver to preserve
      bits set in platform code.  Add a common CONFIG_USB_EHCI_FSL
      to indicate presence of Freescale EHCI SOC.  Add FSL_USB2_DR_OTG
      operating mode support, thus both host and device can work for the
      mini-ab receptacle.  Note: this doesn't enable OTG protocol
      support.
      Signed-off-by: NLi Yang <leoli@freescale.com>
      Cc: David Brownell <david-b@pacbell.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      ba02978a
    • S
      USB: EHCI big endian data structures support (for 440EPx) · fc65a15f
      Stefan Roese 提交于
      This patch adds support for the AMCC 440EPx EHCI controller whose
      in-memory data structures and the registers are represented in big-
      endian format.
      Signed-off-by: NStefan Roese <sr@denx.de>
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      fc65a15f
    • A
      USB: EHCI, OHCI: handover changes · 383975d7
      Alan Stern 提交于
      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: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      383975d7
    • S
      USB: EHCI support for big-endian descriptors · 6dbd682b
      Stefan Roese 提交于
      This patch implements supports for EHCI controllers whose in-memory
      data structures are represented in big-endian format. This is needed
      (unfortunately) for the AMCC PPC440EPx SoC EHCI controller; the EHCI
      spec doesn't specify little-endian format, although that's what most
      other implementations use.
      
      The guts of the patch are to introduce the hc32 type and change all
      references from le32 to hc32.  All access routines are converted from
      cpu_to_le32(...) to cpu_to_hc32(ehci, ...) and similar for the other
      "direction".  (This is the same approach used with OHCI.)
      
      David fixed:
      	Whitespace fixes; refresh against ehci cpufreq patch; move glue
      	for that PPC driver to the patch adding it; fix free symbol
      	capture bugs in modified "constant" macros; and make "hc32" etc
      	be "le32" unless we really need the BE options, so "sparse" can
      	do some real good.
      Signed-off-by: NStefan Roese <sr@denx.de>
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
      6dbd682b
    • S
      USB: EHCI cpufreq fix · 196705c9
      Stuart_Hayes@Dell.com 提交于
      EHCI controllers that don't cache enough microframes can get MMF errors
      when CPU frequency changes occur between the start and completion of
      split interrupt transactions, due to delays in reading main memory
      (caused by CPU cache snoop delays).
      
      This patch adds a cpufreq notifier to the EHCI driver that will
      inactivate split interrupt transactions during frequency transitions.
      It was tested on Intel ICH7 and Serverworks/Broadcom HT1000 EHCI
      controllers.
      Signed-off-by: NStuart Hayes <stuart_hayes@dell.com>
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      196705c9
  2. 09 5月, 2007 1 次提交
  3. 12 4月, 2007 1 次提交
    • A
      EHCI: fix remote wakeup regression in 2.6.21-rc · 61e8b858
      Alan Stern 提交于
      There is one significant difference between the behavior of root hubs
      (as embodied in host controller hardware) and external hubs: When a
      remote-wakeup signal is received, an external hub sends an interrupt
      message at the _end_ of the resume sequence but a root hub generates
      and interrupt at the _beginning_ of the resume sequence.  The host
      system must poll for the end of the sequence.
      
      When ehci-hcd was converted to interrupt-driven operation instead of
      using polling, the remaining need for this particular poll was
      overlooked.  This patch (as894) fixes the problem.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      61e8b858
  4. 17 2月, 2007 2 次提交
  5. 16 2月, 2007 1 次提交
  6. 08 2月, 2007 4 次提交
  7. 02 12月, 2006 2 次提交
    • 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
  8. 18 10月, 2006 1 次提交
  9. 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
  10. 28 9月, 2006 3 次提交
  11. 03 8月, 2006 1 次提交
  12. 13 7月, 2006 1 次提交
  13. 01 7月, 2006 1 次提交
  14. 22 6月, 2006 2 次提交
  15. 21 3月, 2006 2 次提交
  16. 05 1月, 2006 3 次提交
  17. 24 11月, 2005 2 次提交
    • D
      [PATCH] USB: EHCI updates split init/reinit logic for resume · 18807521
      David Brownell 提交于
      Moving the PCI-specific parts of the EHCI driver into their own file
      created a few issues ... notably on resume paths which (like swsusp)
      require re-initializing the controller.  This patch:
      
       - Splits the EHCI startup code into run-once HCD setup code and
         separate "init the hardware" reinit code.  (That reinit code is
         a superset of the "early usb handoff" code.)
      
       - Then it makes the PCI init code run both, and the resume code only
         run the reinit code.
      
       - It also removes needless pci wrappers around EHCI start/stop methods.
      
       - Removes a byteswap issue that would be seen on big-endian hardware.
      
      The HCD glue still doesn't actually provide a good way to do all this
      run-one init stuff in one place though.
      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>
      18807521
    • 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
  18. 29 10月, 2005 3 次提交
    • M
      [PATCH] EHCI, split out PCI glue · 7ff71d6a
      Matt Porter 提交于
      This splits BIOS and PCI specific support out of ehci-hcd.c into
      ehci-pci.c.  It follows the model already used in the OHCI driver
      so support for non-PCI EHCI controllers can be more easily added.
      Signed-off-by: NMatt Porter <mporter@kernel.crashing.org>
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
       drivers/usb/host/ehci-hcd.c |  543 ++++++--------------------------------------
       drivers/usb/host/ehci-pci.c |  414 +++++++++++++++++++++++++++++++++
       drivers/usb/host/ehci.h     |    1
       3 files changed, 492 insertions(+), 466 deletions(-)
      7ff71d6a
    • D
      [PATCH] remove usb_suspend_device() parameter · 390a8c34
      David Brownell 提交于
      This patch removes the extra usb_suspend_device() parameter.  The original
      reason to pass that parameter was so that this routine could suspend any
      active children.  A previous patch removed that functionality ... leaving
      no reason to pass the parameter.  A close analogy is pci_set_power_state,
      which doesn't need a pm_message_t either.
      
      On the internal code path that comes through the driver model, the parameter
      is now used to distinguish cases where USB devices need to "freeze" but not
      suspend.   It also checks for an error case that's accessible through sysfs:
      attempting to suspend a device before its interfaces (or for hubs, ports).
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
       drivers/usb/core/hub.c         |   34 +++++++++++++++++++++-------------
       drivers/usb/core/usb.c         |   23 +++++++++++++++++++++--
       drivers/usb/host/ehci-hcd.c    |    2 +-
       drivers/usb/host/isp116x-hcd.c |    2 +-
       drivers/usb/host/ohci-pci.c    |    2 +-
       include/linux/usb.h            |    2 +-
       6 files changed, 46 insertions(+), 19 deletions(-)
      390a8c34
    • D
      [PATCH] USB: ehci.patch (earlier irq disable) · 72f30b6f
      David Brownell 提交于
      This tweaks the EHCI reboot notifier to also halt the EHCI controller, and
      makes that halt code force IRQs off.  Both should always have been done.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
       drivers/usb/host/ehci-hcd.c |    8 ++++++++
       1 file changed, 8 insertions(+)
      72f30b6f
  19. 28 10月, 2005 1 次提交
  20. 13 9月, 2005 3 次提交