Hi Ajay, Have you sent out this patch? "interval = (USB_SPEED_HIGH == urb->dev->speed) ? 8 : 5;" Thanks Cliff On Tue, May 18, 2010 at 4:49 PM, Cliff Cai <cliffcai.sh@xxxxxxxxx> wrote: > Hi > > On Tue, May 18, 2010 at 4:35 PM, Gupta, Ajay Kumar <ajay.gupta@xxxxxx> wrote: >> Hi, >>> -----Original Message----- >>> From: Cliff Cai [mailto:cliffcai.sh@xxxxxxxxx] >>> Sent: Tuesday, May 18, 2010 1:51 PM >>> To: Gupta, Ajay Kumar >>> Cc: Cai, Cliff; linux-usb@xxxxxxxxxxxxxxx; Mike Frysinger; Felipe Balbi; >>> uclinux-dist-devel@xxxxxxxxxxxxxxxxxxxx >>> Subject: Re: [Uclinux-dist-devel] [PATCH] USB: musb: set NAK limitation >>> for control transfers >>> >>> On Tue, May 18, 2010 at 2:00 PM, Gupta, Ajay Kumar <ajay.gupta@xxxxxx> >>> wrote: >>> > Hi, >>> >> > Dose this patch work for you? >>> >> > I tried several different values,and >>> >> > It seems that '8' work just fine. >>> >> Yes, it works for me. >>> >> >>> >> I was just thinking of setting limit values based on device speed >>> >> so that timeout value in terms of msec is same for all devices. >>> >> For HS devices = 8, and for FS/LS devices = 5 for timeout of 16msec. >>> >> >>> >> - interval = 8; >>> >> + >>> > >>> > Another fix (I think a better one) is to disable PING on status phase >>> > only, which is allowed as per USB specification. >>> > >>> > -------------- >>> > diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c >>> > index 83f482e..f1a3ca7 100644 >>> > --- a/drivers/usb/musb/musb_host.c >>> > +++ b/drivers/usb/musb/musb_host.c >>> > @@ -1068,6 +1068,8 @@ irqreturn_t musb_h_ep0_irq(struct musb *musb) >>> > else >>> > csr = MUSB_CSR0_H_STATUSPKT >>> > | MUSB_CSR0_TXPKTRDY; >>> > + /* disable ping token in status phase */ >>> > + csr |= MUSB_CSR0_H_DIS_PING; >>> > >>> > /* flag status stage */ >>> > musb->ep0_stage = MUSB_EP0_STATUS; >>> > -------------- >>> >>> >>> I got endless massages: "musb_h_ep0_irq 1053: no URB for end 0" with this >>> patch. >> Then your device doesn't seem to have PING issue. I also noticed this error >> message two times with your fix. > > Not really, our orignal patch also disables PING in some situation. > see:http://thread.gmane.org/gmane.linux.hardware.blackfin.kernel.devel/1568/focus=1578 > > >>> also I think disabling PING for all devices doesn't make sense. >> >> It's only for control endpoint and in status phase alone. >> > > but not all the devices don't reponse to PING. > > > Cliff >>> while "interval = (USB_SPEED_HIGH == urb->dev->speed) ? 8 : 5;" >>> works for me. >> >> I think this should be fine to go. >> >>> >>> Thanks >>> >>> Cliff >>> >>> >> >>> >> > >-----Original Message----- >>> >> > >From: Mike Frysinger [mailto:vapier.adi@xxxxxxxxx] >>> >> > >Sent: Sunday, May 16, 2010 8:47 AM >>> >> > >To: Gupta, Ajay Kumar >>> >> > >Cc: linux-usb@xxxxxxxxxxxxxxx; Felipe Balbi; >>> >> > >uclinux-dist-devel@xxxxxxxxxxxxxxxxxxxx; Cai, Cliff >>> >> > >Subject: Re: [Uclinux-dist-devel] [PATCH] USB: musb: set NAK >>> >> > >limitation for control transfers >>> >> > > >>> >> > >On Fri, May 14, 2010 at 01:42, Gupta, Ajay Kumar wrote: >>> >> > >>> Some bad-behaved peripherals (like cheap USB storage devices) >>> need >>> >> > >>> this in order to recover during configuration time. >>> >> > >>> >>> >> > >>> diff --git a/drivers/usb/musb/musb_host.c >>> >> > >>> b/drivers/usb/musb/musb_host.c index 877d20b..e2667dc 100644 >>> >> > >>> --- a/drivers/usb/musb/musb_host.c >>> >> > >>> +++ b/drivers/usb/musb/musb_host.c >>> >> > >>> @@ -1994,6 +1994,9 @@ static int musb_urb_enqueue( >>> >> > >>> /* ISO always uses logarithmic encoding */ >>> >> > >>> interval = min_t(u8, epd->bInterval, 16); >>> >> > >>> break; >>> >> > >>> + case USB_ENDPOINT_XFER_CONTROL: >>> >> > >>> + interval = 8; >>> >> > >> >>> >> > >> Why '8'? Device could be high speed or FS/LS so it comes out to, >>> HS >>> >> > >> device: 2^7 uf = 128uf = 16 msec FS/LS device: 2^7 f = 128msec >>> >> > > >>> >> > >it's a value that seems to work in our tests. i'm pretty sure >>> >> > >we arent tied to a specific value, so if you want to increase >>> >> > >it, that's fine. Cliff can certainly correct me though. >>> >> > > >>> >> > >> Also, I have seen high speed bad behaved devices not responding to >>> >> > >> PING tokens in status phase of control transfers. Are you >>> >> > >also getting >>> >> > >> this issue ? >>> >> > > >>> >> > >yes, we had PING problems, and we've posted other patches in >>> >> > >the past for that, but this seems to be the most correct >>> >> > >version so far. >>> >> > > >>> >> > >search for like blackfin+ping+musb on some lists if you're >>> >> > >interested in the history. >>> >> > >-mike >>> >> > > >>> >> -- >>> >> 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 >>> > -- >>> > 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 >>> > >> > -- 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