22 Aug, 2008

1 commit

  • This patch (as1069c) changes the way OHCI root-hub status-change
    interrupts are enabled. Currently a special HCD method,
    hub_irq_enable(), is called when the hub driver is finished using a
    root hub. This approach turns out to be subject to races, resulting
    in unnecessary polling.

    The patch does away with the method entirely. Instead, the driver
    automatically enables the RHSC interrupt when no more status changes
    are present. This scheme is safe with controllers using
    level-triggered semantics for their interrupt flags.

    Signed-off-by: Alan Stern
    Signed-off-by: Greg Kroah-Hartman

    Alan Stern
     

07 Aug, 2008

2 commits


11 Jul, 2008

1 commit


07 Jul, 2008

1 commit

  • This reverts commit e872154921a6b5256a3c412dd69158ac0b135176.

    Andrey Borzenkov reports that it resulted in a totally hung machine for
    him when loading the OHCI driver. Extensive netconsole capture with
    SysRq output shows that modprobe gets stuck in ohci_hub_status_data()
    when probing and enabling the OHCI controller, see for example

    http://lkml.org/lkml/2008/7/5/236

    for an analysis.

    The problem appears to be an interrupt flood triggered by the commit
    that gets reverted, and Andrey confirmed that the revert makes things
    work for him again.

    Reported-and-tested-by: Andrey Borzenkov
    Acked-by: Alan Stern
    Acked-by: David Brownell
    Cc: Greg Kroah-Hartman
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

25 Apr, 2008

1 commit

  • This patch (as1069b) changes the way OHCI root-hub status-change
    interrupts are enabled. Currently a special HCD method,
    hub_irq_enable(), is called when the hub driver is finished using a
    root hub. This approach turns out to be subject to races, resulting
    in unnecessary polling.

    The patch does away with the method entirely. Instead, the driver
    automatically enables the RHSC interrupt when no more status changes
    are present. This scheme is safe with controllers using
    level-triggered semantics for their interrupt flags.

    Signed-off-by: Alan Stern
    Signed-off-by: Greg Kroah-Hartman

    Alan Stern
     

08 Feb, 2007

1 commit

  • The previous model had the module_init & module_exit function in the
    bus glue .c files themselves. That's a problem if several glues need
    to be selected at once and the driver is built has module. This case
    is quite common in embedded system where you want to handle both the
    integrated ohci controller and some extra controller on PCI.

    The ohci-hcd.c file now provide the module_init & module_exit and
    appropriate driver registering/unregistering is done conditionally,
    using #ifdefs.

    Signed-off-by: Sylvain Munaut
    Acked-by: David Brownell
    Signed-off-by: Greg Kroah-Hartman

    Sylvain Munaut
     

21 Dec, 2006

1 commit


28 Sep, 2006

1 commit

  • This teaches OHCI to use the root hub status change (RHSC) IRQ, bypassing
    root hub timers most of the time and switching over to the "new" root hub
    polling scheme. It's complicated by the fact that implementations of OHCI
    trigger and ack that IRQ differently (the spec is vague there).

    Avoiding root hub timers helps mechanisms like "dynamic tick" leave the
    CPU in lowpower modes for longer intervals.

    Signed-off-by: David Brownell
    Signed-off-by: Greg Kroah-Hartman

    David Brownell
     

03 Jul, 2006

1 commit


29 Oct, 2005

3 commits

  • 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: Alan Stern
    Signed-off-by: Greg Kroah-Hartman

    Alan Stern
     
  • This cleans up a small recent FIXME, ensuring that all the HCDs provide
    root hub suspend/resume methods. It also wraps the calls to those root
    suspend routines just like on the PCI "USB_SUSPEND not defined" cases,
    so non-PCI bus glue won't be as tempted to behave very differently.

    Several of the SOC based OHCI drivers forgot to list those methods;
    the patch also adds those missing declarations.

    Signed-off-by: David Brownell
    Signed-off-by: Greg Kroah-Hartman

    drivers/usb/core/hcd.c | 42 +++++++++++++++++++++++++---------------
    drivers/usb/host/ohci-au1xxx.c | 5 ++++
    drivers/usb/host/ohci-lh7a404.c | 5 ++++
    drivers/usb/host/ohci-pxa27x.c | 1
    drivers/usb/host/ohci-s3c2410.c | 1
    drivers/usb/host/ohci-sa1111.c | 1
    6 files changed, 40 insertions(+), 15 deletions(-)

    David Brownell
     
  • This simplifies some of the PM-related #ifdeffing by recognizing
    that USB_SUSPEND depends on PM. Also, OHCI drivers were often
    testing for USB_SUSPEND when they should have tested just PM.

    Signed-off-by: David Brownell
    Signed-off-by: Greg Kroah-Hartman

    drivers/usb/core/hcd.c | 2 ++
    drivers/usb/host/ohci-hcd.c | 2 +-
    drivers/usb/host/ohci-hub.c | 4 ++--
    drivers/usb/host/ohci-omap.c | 2 +-
    drivers/usb/host/ohci-pci.c | 2 +-
    drivers/usb/host/ohci-ppc-soc.c | 4 ++--
    drivers/usb/host/ohci-pxa27x.c | 2 +-
    drivers/usb/host/ohci-s3c2410.c | 3 +--
    drivers/usb/host/ohci-sa1111.c | 2 +-
    9 files changed, 12 insertions(+), 11 deletions(-)

    David Brownell
     

17 Apr, 2005

1 commit

  • 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!

    Linus Torvalds