Hi Alan Stern,
> > > What happened to the changes to ohci_run() and ohci_irq() that were in
> > > v2 of this RFC? Did you decide they weren't needed?
> >
> > In v3 Jürgen Urban folded those changes into the driver functions
> >
> > ohci_ps2_enable(),
> > ohci_ps2_disable(),
> > ohci_ps2_start_hc() and
> > ohci_ps2_stop_hc()
> >
> > in drivers/usb/host/ohci-ps2.c.
>
> Good, I was going to suggest doing that.
There is one quirk with the ISR that perhaps could be clarified: For some
reason we have to intercept ohci_irq to disable interrupts, as shown in the
function below, otherwise the whole USB subsystem eventually will freeze up.
Is this a known OHCI problem? Is some part of its USB core ISR not reentrant?
static irqreturn_t ohci_ps2_irq(struct usb_hcd *hcd)
{
struct ohci_hcd *ohci = hcd_to_ohci(hcd);
struct ohci_regs __iomem *regs = ohci->regs;
/*
* FIXME: For some reason OHCI_INTR_MIE is required in the
* IRQ handler. Without it, reading a large amount of data
* (> 1 GB) from a mass storage device results in a freeze.
*/
ohci_writel(ohci, OHCI_INTR_MIE, ®s->intrdisable);
return ohci_irq(hcd); /* Call normal IRQ handler. */
}
Fredrik
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html