On Mon, Jan 10, 2011 at 08:25:36PM +0000, Russell King - ARM Linux wrote: > On Mon, Jan 10, 2011 at 08:13:20PM +0100, Sebastian Andrzej Siewior wrote: > > * Russell King - ARM Linux | 2011-01-09 12:54:21 [+0000]: > > > > > > > >If you have a patch, I'll test it - it's very easy to reproduce here. > > >Last night, it was at the point of having to restart minicom almost every > > >time I rebooted the OMAP4 board because at some point during the uboot > > >blurb the USB serial port went awol. > > > > I have here like 10 usb-to-serial adapters but all of them have pl2303 > > which does not even show the "reloaded" symptom. > > The patch here changes from ATL triggered interrupt into an SOF > > interrupt which could fix your problem if it is what the errata > > describes. > > So far soo good - this plus the removal of the printk statement seems > to have done the trick. I've run several 'dmesg' invocations and > rebooted the OMAP4 board a few times, and I've not had to restart > minicom once. > > For reference the patch below represents what I actually tested - that > being your patch plus removal of the too verbose printk. > > Tested-by: Russell King <rmk+kernel@xxxxxxxxxxxxxxxx> So what's happening with this patch? Are you going to submit it for -rc? > diff --git a/drivers/usb/host/isp1760-hcd.c b/drivers/usb/host/isp1760-hcd.c > index bdba8c5..9cb8722 100644 > --- a/drivers/usb/host/isp1760-hcd.c > +++ b/drivers/usb/host/isp1760-hcd.c > @@ -1049,17 +1049,6 @@ static void do_atl_int(struct usb_hcd *usb_hcd) > if (!nakcount && (dw3 & DW3_QTD_ACTIVE)) { > u32 buffstatus; > > - /* > - * NAKs are handled in HW by the chip. Usually if the > - * device is not able to send data fast enough. > - * This happens mostly on slower hardware. > - */ > - printk(KERN_NOTICE "Reloading ptd %p/%p... qh %p read: " > - "%d of %zu done: %08x cur: %08x\n", qtd, > - urb, qh, PTD_XFERRED_LENGTH(dw3), > - qtd->length, done_map, > - (1 << queue_entry)); > - > /* RL counter = ERR counter */ > dw3 &= ~(0xf << 19); > dw3 |= rl << 19; > @@ -1770,7 +1759,7 @@ static irqreturn_t isp1760_irq(struct usb_hcd *usb_hcd) > goto leave; > > isp1760_writel(imask, usb_hcd->regs + HC_INTERRUPT_REG); > - if (imask & HC_ATL_INT) > + if (imask & (HC_ATL_INT | HC_SOT_INT)) > do_atl_int(usb_hcd); > > if (imask & HC_INTL_INT) > diff --git a/drivers/usb/host/isp1760-hcd.h b/drivers/usb/host/isp1760-hcd.h > index 6931ef5..0d6023b 100644 > --- a/drivers/usb/host/isp1760-hcd.h > +++ b/drivers/usb/host/isp1760-hcd.h > @@ -68,7 +68,7 @@ void deinit_kmem_cache(void); > #define HC_INTERRUPT_REG 0x310 > > #define HC_INTERRUPT_ENABLE 0x314 > -#define INTERRUPT_ENABLE_MASK (HC_INTL_INT | HC_ATL_INT | HC_EOT_INT) > +#define INTERRUPT_ENABLE_MASK (HC_INTL_INT | HC_SOT_INT | HC_EOT_INT) > > #define HC_ISO_INT (1 << 9) > #define HC_ATL_INT (1 << 8) -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html