1. 21 3月, 2006 2 次提交
  2. 05 1月, 2006 8 次提交
    • A
      [PATCH] USB: Don't assume root-hub resume succeeds · 2425e9fe
      Alan Stern 提交于
      This patch (as614) makes a small change to the part of the hub driver
      responsible for remote wakeup of root hubs.  When these wakeups occur
      the driver is suspended, and in case the resume fails the driver should
      remain suspended -- it shouldn't try to proceed with its normal
      processing.
      
      This will hardly ever matter in normal use, but it did crop up while I
      was debugging a different problem.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      2425e9fe
    • A
      [PATCH] USB: Store port number in usb_device · 12c3da34
      Alan Stern 提交于
      This patch (as610) adds a field to struct usb_device to store the device's
      port number.  This allows us to remove several loops in the hub driver
      (searching for a particular device among all the entries in the parent's
      array of children).
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      12c3da34
    • A
      [PATCH] USB: Consider power budget when choosing configuration · 55c52718
      Alan Stern 提交于
      This patch (as609) changes the way we keep track of power budgeting for
      USB hubs and devices, and it updates the choose_configuration routine to
      take this information into account.  (This is something we should have
      been doing all along.)  A new field in struct usb_device holds the amount
      of bus current available from the upstream port, and the usb_hub structure
      keeps track of the current available for each downstream port.
      
      Two new rules for configuration selection are added:
      
      	Don't select a self-powered configuration when only bus power
      	is available.
      
      	Don't select a configuration requiring more bus power than is
      	available.
      
      However the first rule is #if-ed out, because I found that the internal
      hub in my HP USB keyboard claims that its only configuration is
      self-powered.  The rule would prevent the configuration from being chosen,
      leaving the hub & keyboard unconfigured.  Since similar descriptor errors
      may turn out to be fairly common, it seemed wise not to include a rule
      that would break automatic configuration unnecessarily for such devices.
      
      The second rule may also trigger unnecessarily, although this should be
      less common.  More likely it will annoy people by sometimes failing to
      accept configurations that should never have been chosen in the first
      place.
      
      The patch also changes usbcore's reaction when no configuration is
      suitable.  Instead of raising an error and rejecting the device, now
      the core will simply leave the device unconfigured.  People can always
      work around such problems by installing configurations manually through
      sysfs.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      55c52718
    • A
      [PATCH] USB: Fix locking for USB suspend/resume · 4bf0ba86
      Alan Stern 提交于
      The earlier USB locking updates didn't touch the suspend/resume
      routines.  They need updating as well, since now the caller holds the
      device semaphore.  This patch (as608) makes the necessary changes.  It
      also adds a line to store the correct power state when a device is
      resumed, something which was unaccountably missing.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      4bf0ba86
    • A
      [PATCH] USB: Disconnect children during hub unbind · 7d069b7d
      Alan Stern 提交于
      This patch (as606b) is an updated version of my earlier patch to
      disconnect children from a hub device when the hub driver is unbound.
      Thanks to the changes in the driver core locking, we now know that the
      entire hub device (and not just the interface) is locked whenever the
      hub driver's disconnect method runs.  Hence it is safe to disconnect the
      child device structures immediately instead of deferring the job.
      
      The earlier version of the patch neglected to disable the hub's ports.
      We don't want to forget that; otherwise we'd end up with live devices
      using addresses that have been recycled.  This update adds the necessary
      code.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      7d069b7d
    • A
      [PATCH] USB: Remove USB private semaphore · 9ad3d6cc
      Alan Stern 提交于
      This patch (as605) removes the private udev->serialize semaphore,
      relying instead on the locking provided by the embedded struct device's
      semaphore.  The changes are confined to the core, except that the
      usb_trylock_device routine now uses the return convention of
      down_trylock rather than down_read_trylock (they return opposite values
      for no good reason).
      
      A couple of other associated changes are included as well:
      
      	Now that we aren't concerned about HCDs that avoid using the
      	hcd glue layer, usb_disconnect no longer needs to acquire the
      	usb_bus_lock -- that can be done by usb_remove_hcd where it
      	belongs.
      
      	Devices aren't locked over the same scope of code in
      	usb_new_device and hub_port_connect_change as they used to be.
      	This shouldn't cause any trouble.
      
      Along with the preceding driver core patch, this needs a lot of testing.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      9ad3d6cc
    • G
      [PATCH] USB: remove .owner field from struct usb_driver · 75318d2d
      Greg Kroah-Hartman 提交于
      It is no longer needed, so let's remove it, saving a bit of memory.
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      75318d2d
    • A
      [PATCH] USB: central handling for host controllers that were reset during suspend/resume · 1c50c317
      Alan Stern 提交于
      This patch (as515b) adds a routine to usbcore to simplify handling of
      host controllers that lost power or were reset during suspend/resume.
      The new core routine marks all the child devices of the root hub as
      NOTATTACHED and tells khubd to disconnect the device structures as soon
      as possible.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      1c50c317
  3. 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
  4. 18 11月, 2005 1 次提交
  5. 29 10月, 2005 18 次提交
    • G
      USB: fix up some odd parts due to partial merges · 4303fc6f
      Greg Kroah-Hartman 提交于
      Thanks to Andrew for doing the hard work on this.
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      4303fc6f
    • A
      [PATCH] USB: fix pm patches with CONFIG_PM off part 2 · 9a7834d0
      Andrew Morton 提交于
      With CONFIG_PM=n:
      
      drivers/built-in.o(.text+0x1098c): In function `hub_thread':
      drivers/usb/core/hub.c:2673: undefined reference to `.dpm_runtime_resume'
      drivers/built-in.o(.text+0x10998):drivers/usb/core/hub.c:2674: undefined reference to `.dpm_runtime_resume'
      
      Please, never ever ever put extern decls into .c files.  Use the darn header
      files :(
      
      Cc: David Brownell <david-b@pacbell.net>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      9a7834d0
    • A
      [PATCH] usbcore: Fix handling of sysfs strings and other attributes · 4f62efe6
      Alan Stern 提交于
      This patch (as592) makes a few small improvements to the way device
      strings are handled, and it fixes some bugs in a couple of other sysfs
      attribute routines.  (Look at show_configuration_string() to see what I
      mean.)
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      4f62efe6
    • A
      [PATCH] usbcore: Use kzalloc instead of kmalloc/memset · 0a1ef3b5
      Alan Stern 提交于
      This patch (as590) fixes up all the remaining places where usbcore can
      use kzalloc rather than kmalloc/memset.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      0a1ef3b5
    • G
      54a5c4cd
    • G
      a7b986b3
    • G
      [PATCH] USB: add notifier functions to the USB core for devices and busses · 3099e75a
      Greg Kroah-Hartman 提交于
      This should let us get rid of all of the different hooks in the USB core for
      when something has changed.
      
      Also, some other parts of the kernel have wanted to know this kind of
      information at times.
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      3099e75a
    • 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
    • G
      [PATCH] USB: make wHubCharacteristics __le16 to match other usb descriptor fields · 74ad9bd2
      Greg Kroah-Hartman 提交于
      Also has the nice benefit of making sparc alignment issues go away.
      
      Thanks to David Miller for pointing out the problems here.
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
       drivers/usb/core/hub.c |   22 ++++++++++++----------
       drivers/usb/core/hub.h |    2 +-
       2 files changed, 13 insertions(+), 11 deletions(-)
      74ad9bd2
    • D
      [PATCH] stop exporting two functions · 5edbfb7c
      David Brownell 提交于
      The way we're looking at USB suspend lately doesn't expect drivers to
      call usb_suspend_device() or usb_resume_device() directly; that'll
      be implicit when no interfaces are in use.
      
      This patch removes those APIs from visibility outside usbcore.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      
       drivers/usb/core/hub.c |   12 ++++--------
       drivers/usb/core/usb.h |    4 ++++
       include/linux/usb.h    |    5 -----
       3 files changed, 8 insertions(+), 13 deletions(-)
      5edbfb7c
    • D
      [PATCH] root hub updates (greater half) · f3f3253d
      David Brownell 提交于
      This patch associates hub suspend and resume logic (including for root hubs)
      with CONFIG_PM -- instead of CONFIG_USB_SUSPEND as before -- thereby unifying
      two troublesome versions of suspend logic into just one.  It'll be easier to
      keep things right from now on.
      
        - Now usbcore _always_ calls hcd->hub_suspend as needed, instead of
          only when USB_SUSPEND is enabled:
           * Those root hub methods are now called from hub suspend/resume;
             no more skipping between layers during device suspend/resume;
           * It now handles cases allowed by sysfs or autosuspended root hubs,
             by forcing the hub interface to resume too.
      
        - All devices, including virtual root hubs, now get the same treatment
          on their resume paths ... including re-activating all their interfaces.
      
      Plus it gets rid of those stub copies of usb_{suspend,resume}_device(), and
      updates the Kconfig to match the new definition of USB_SUSPEND:  it provides
      (a) selective suspend, downstream from hubs; and (b) remote wakeup, upstream
      from any device configuration which supports it.
      
      This calls for minor followup patches for most HCDs (and their PCI glue).
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
       drivers/usb/core/Kconfig |   11 ++-
       drivers/usb/core/hub.c   |  163 +++++++++++++++++++++++++----------------------
       2 files changed, 97 insertions(+), 77 deletions(-)
      f3f3253d
    • D
      [PATCH] root hub changes (lesser half) · 979d5199
      David Brownell 提交于
      This patch collects various small updates related to root hubs, to shrink
      later patches which build on them.
      
        - For root hub suspend/resume support:
           * Make the existing usb_hcd_resume_root_hub() routine respect pmcore
             locking, exporting and using the dpm_runtime_resume() method.
           * Add a new usb_hcd_suspend_root_hub() to pair with that routine.
             (Essential to make OHCI autosuspend behave again...)
           * HC_SUSPENDED by itself only refers to the root hub's downstream ports.
             So let HCDs see root hub URBs unless the parent device is suspended.
      
        - Remove an assertion we no longer need (and now, also don't want).
      
        - Generic suspend/resume updates to work better with swsusp.
           * Ignore the FREEZE vs SUSPEND distinction for hardware; trying to
             use it breaks the swsusp snapshots it's supposed to help (sigh).
           * On resume, mark devices as resumed right away, but then
             do nothing else if the device is marked NOTATTACHED.
      
      These changes shouldn't be very noticable by themselves.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
       drivers/base/power/runtime.c |    1
       drivers/usb/core/hcd.c       |   64 ++++++++++++++++++++++++++++++++++++++-----
       drivers/usb/core/hcd.h       |    1
       drivers/usb/core/hub.c       |   45 ++++++++++++++++++++++++------
       drivers/usb/core/usb.c       |   20 +++++++++----
       drivers/usb/core/usb.h       |    1
       6 files changed, 111 insertions(+), 21 deletions(-)
      979d5199
    • M
      [PATCH] USB: Fix usb hub build · e08fb39b
      Matt Porter 提交于
      Signed-off-by: NMatt Porter <mporter@kernel.crashing.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
       drivers/usb/core/hub.c |    2 +-
       1 file changed, 1 insertion(+), 1 deletion(-)
      e08fb39b
    • D
      [PATCH] remove duplicated resume path code · dbc3887e
      David Brownell 提交于
      This gets rid of some inconsistently duplicated logic to resume interfaces.
      Similar code was in both finish_port_resume() and in usb_generic_resume().
      Now there is just one copy of that code, accessed regardless of whether
      CONFIG_USB_SUSPEND is enabled.  Fault handling is also more consistent.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      dbc3887e
    • 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] remove suspend-path recursion · c9f89fa4
      David Brownell 提交于
      This patch removes some recursion in the CONFIG_USB_SUSPEND logic, which
      suspended children (of devices or hubs) that weren't already suspended.
      When it sees such cases, suspend now just fails cleanly.
      
      That logic was not needed during system-wide sleep state transitions; and
      given the current notions of how to manage selective suspend transitions,
      we don't want it there either.  Where it was particularly handy was coping
      with various limitations of the sysfs "echo -n N > power/state" support.
      (These include assuming that "N" is always meaningful to the driver; and
      that drivers can only transition to state N from state zero.)
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      c9f89fa4
    • D
      [PATCH] usb_interface power state · db690874
      David Brownell 提交于
      This updates the handling of power state for USB interfaces.
      
        - Formalizes an existing invariant:  interface "power state" is a boolean:
          ON when I/O is allowed, and FREEZE otherwise.  It does so by defining
          some inlined helpers, then using them.
      
        - Adds a useful invariant:  the only interfaces marked active are those
          bound to non-suspended drivers.  Later patches build on this invariant.
      
        - Simplifies the interface driver API (and removes some error paths) by
          removing the requirement that they record power state changes during
          suspend and resume callbacks.  Now usbcore does that.
      
      A few drivers were simplified to address that last change.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
       drivers/usb/core/hub.c       |   33 +++++++++------------
       drivers/usb/core/message.c   |    1
       drivers/usb/core/usb.c       |   65 +++++++++++++++++++++++++++++++++----------
       drivers/usb/core/usb.h       |   18 +++++++++++
       drivers/usb/input/hid-core.c |    2 -
       drivers/usb/misc/usbtest.c   |   10 ------
       drivers/usb/net/pegasus.c    |    2 -
       drivers/usb/net/usbnet.c     |    2 -
       8 files changed, 85 insertions(+), 48 deletions(-)
      db690874
    • D
      [PATCH] usb device wakeup flags · b94dc6b5
      David Brownell 提交于
      This patch teaches "usb_device" about the new driver model wakeup support:
      
       - It updates device wakeup capabilities when entering a configuration
         with the WAKEUP attribute;
      
       - During suspend processing it consults the policy bit to see
         whether it should enable wakeup for that device.  (This resolves
         a FIXME to not assume the answer is always "yes"; some devices
         lie about supporting remote wakeup.)
      
      Support for root hubs and the HCDs is separate (and more complex).
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      b94dc6b5
  6. 13 9月, 2005 2 次提交
  7. 09 9月, 2005 4 次提交
    • D
      [PATCH] ehci: add think_time · e09711ae
      david-b@pacbell.net 提交于
      This adds think_time to the usb_tt struct and sets it appropriately
      (measured in ns); this can help us implement better split transaction
      scheduling.
      Signed-off-by: NDan Streetman <ddstreet@ieee.org>
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      e09711ae
    • A
      [PATCH] USB: Disconnect children when unbinding the hub driver · bf193d3c
      Alan Stern 提交于
      This patch (as554) makes the hub driver disconnect any child USB devices
      when it is unbound from a hub.  Normally this will never happen, but
      there are a few oddball ways to unbind the hub driver while leaving the
      children intact.  For example, the new "unbind" sysfs attribute can be
      used for this purpose.
      
      Given that unbinding hubs with children is now safe, the patch also
      removes the code that prevented people from doing so using usbfs.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      bf193d3c
    • A
      [PATCH] USB: Code motion in the hub driver · 8b28c752
      Alan Stern 提交于
      This patch (as553) merely moves some code and deletes an unneeded test in
      the hub driver.  This is in preparation for the patch that follows.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      8b28c752
    • K
      [PATCH] USB: real nodes instead of usbfs · fbf82fd2
      Kay Sievers 提交于
      This patch introduces a /sys/class/usb_device/ class
      where every connected usb-device will show up:
      
        tree /sys/class/usb_device/
        /sys/class/usb_device/
        |-- usb1.1
        |   |-- dev
        |   `-- device -> ../../../devices/pci0000:00/0000:00:1d.0/usb1
        |-- usb2.1
        |   |-- dev
        |   `-- device -> ../../../devices/pci0000:00/0000:00:1d.1/usb2
        ...
      
      The presence of the "dev" file lets udev create real device nodes.
        kay@pim:~/src/linux-2.6> tree /dev/bus/usb/
        /dev/bus/usb/
        |-- 1
        |   `-- 1
        |-- 2
        |   `-- 1
        ...
      
      udev rule:
        SUBSYSTEM="usb_device", PROGRAM="/sbin/usb_device %k", NAME="%c"
        (echo $1 | /bin/sed 's/usb\([0-9]*\)\.\([0-9]*\)/bus\/usb\/\1\/\2/')
      
      This makes libusb pick up the real nodes instead of the mounted usbfs:
        export USB_DEVFS_PATH=/dev/bus/usb
      
      Background:
        All this makes it possible to manage usb devices with udev instead of
        the devfs solution. We are currently working on a pam_console/resmgr
        replacement driven by udev and a pam-helper. It applies ACL's to device
        nodes, which is required for modern desktop functionalty like
        "Fast User Switching" or multiple local login support.
      
      New patch with its own major. I've succesfully disabled usbfs and use real
      nodes only on my box. With: "export USB_DEVFS_PATH=/dev/bus/usb" libusb picks
      up the udev managed nodes instead of reading usbfs files.
      
      This makes udev to provide symlinks for libusb to pick up:
        SUBSYSTEM="usb_device", PROGRAM="/sbin/usbdevice %k", SYMLINK="%c"
      
      /sbin/usbdevice:
        #!/bin/sh
        echo $1 | /bin/sed 's/usbdev\([0-9]*\)\.\([0-9]*\)/bus\/usb\/\1\/\2/'
      Signed-off-by: NKay Sievers <kay.sievers@suse.de>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      fbf82fd2
  8. 05 9月, 2005 1 次提交
  9. 13 7月, 2005 1 次提交
  10. 28 6月, 2005 2 次提交