Message ID | 1455645559-23552-1-git-send-email-semen.protsenko@linaro.org |
---|---|
State | Accepted, archived |
Commit | 8038f6d2881d58f5322109a2f5ec2de5aaa6fc30 |
Delegated to: | Łukasz Majewski |
Headers | show |
+ Praneeth Bajjuri + Tom Rini + Rob Herring On Tue, Feb 16, 2016 at 7:59 PM, Semen Protsenko <semen.protsenko@linaro.org> wrote: > From: Sam Protsenko <semen.protsenko@linaro.org> > > In case when usb_composite_register() failed once (for whatever reason), > it will fail further even if all conditions are correct. Example: > > => fastboot 2 > Invalid Controller Index > couldn't find an available UDC > g_dnl_register: failed!, error: -19 > exit not allowed from main input shell. > > => fastboot 0 > g_dnl_register: failed!, error: -22 > exit not allowed from main input shell. > > Despite that 0 is correct index for USB controller, "fastboot 0" command > will fail, because "composite" structure wasn't cleared properly on > previous fail (on "fastboot 2" command). > > This patch fixes that erroneous behavior, allowing us to use composite > even after previous failure. > > Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> > --- > drivers/usb/gadget/composite.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c > index 60f9272..d0ee784 100644 > --- a/drivers/usb/gadget/composite.c > +++ b/drivers/usb/gadget/composite.c > @@ -1077,6 +1077,8 @@ static struct usb_gadget_driver composite_driver = { > */ > int usb_composite_register(struct usb_composite_driver *driver) > { > + int res; > + > if (!driver || !driver->dev || !driver->bind || composite) > return -EINVAL; > > @@ -1084,7 +1086,11 @@ int usb_composite_register(struct usb_composite_driver *driver) > driver->name = "composite"; > composite = driver; > > - return usb_gadget_register_driver(&composite_driver); > + res = usb_gadget_register_driver(&composite_driver); > + if (res != 0) > + composite = NULL; > + > + return res; > } > > /** > -- > 2.7.0 >
On Fri, Feb 19, 2016 at 9:34 PM, Sam Protsenko <semen.protsenko@linaro.org> wrote: > + Praneeth Bajjuri > + Tom Rini > + Rob Herring > > On Tue, Feb 16, 2016 at 7:59 PM, Semen Protsenko > <semen.protsenko@linaro.org> wrote: >> From: Sam Protsenko <semen.protsenko@linaro.org> >> >> In case when usb_composite_register() failed once (for whatever reason), >> it will fail further even if all conditions are correct. Example: >> >> => fastboot 2 >> Invalid Controller Index >> couldn't find an available UDC >> g_dnl_register: failed!, error: -19 >> exit not allowed from main input shell. >> >> => fastboot 0 >> g_dnl_register: failed!, error: -22 >> exit not allowed from main input shell. >> >> Despite that 0 is correct index for USB controller, "fastboot 0" command >> will fail, because "composite" structure wasn't cleared properly on >> previous fail (on "fastboot 2" command). >> >> This patch fixes that erroneous behavior, allowing us to use composite >> even after previous failure. >> >> Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> >> --- >> drivers/usb/gadget/composite.c | 8 +++++++- >> 1 file changed, 7 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c >> index 60f9272..d0ee784 100644 >> --- a/drivers/usb/gadget/composite.c >> +++ b/drivers/usb/gadget/composite.c >> @@ -1077,6 +1077,8 @@ static struct usb_gadget_driver composite_driver = { >> */ >> int usb_composite_register(struct usb_composite_driver *driver) >> { >> + int res; >> + >> if (!driver || !driver->dev || !driver->bind || composite) >> return -EINVAL; >> >> @@ -1084,7 +1086,11 @@ int usb_composite_register(struct usb_composite_driver *driver) >> driver->name = "composite"; >> composite = driver; >> >> - return usb_gadget_register_driver(&composite_driver); >> + res = usb_gadget_register_driver(&composite_driver); >> + if (res != 0) >> + composite = NULL; >> + >> + return res; >> } >> >> /** >> -- >> 2.7.0 >> bump
On 02/26/2016 08:43 PM, Sam Protsenko wrote: > On Fri, Feb 19, 2016 at 9:34 PM, Sam Protsenko > <semen.protsenko@linaro.org> wrote: >> + Praneeth Bajjuri >> + Tom Rini >> + Rob Herring >> >> On Tue, Feb 16, 2016 at 7:59 PM, Semen Protsenko >> <semen.protsenko@linaro.org> wrote: >>> From: Sam Protsenko <semen.protsenko@linaro.org> >>> >>> In case when usb_composite_register() failed once (for whatever reason), >>> it will fail further even if all conditions are correct. Example: >>> >>> => fastboot 2 >>> Invalid Controller Index >>> couldn't find an available UDC >>> g_dnl_register: failed!, error: -19 >>> exit not allowed from main input shell. >>> >>> => fastboot 0 >>> g_dnl_register: failed!, error: -22 >>> exit not allowed from main input shell. >>> >>> Despite that 0 is correct index for USB controller, "fastboot 0" command >>> will fail, because "composite" structure wasn't cleared properly on >>> previous fail (on "fastboot 2" command). >>> >>> This patch fixes that erroneous behavior, allowing us to use composite >>> even after previous failure. >>> >>> Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> >>> --- >>> drivers/usb/gadget/composite.c | 8 +++++++- >>> 1 file changed, 7 insertions(+), 1 deletion(-) >>> >>> diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c >>> index 60f9272..d0ee784 100644 >>> --- a/drivers/usb/gadget/composite.c >>> +++ b/drivers/usb/gadget/composite.c >>> @@ -1077,6 +1077,8 @@ static struct usb_gadget_driver composite_driver = { >>> */ >>> int usb_composite_register(struct usb_composite_driver *driver) >>> { >>> + int res; >>> + >>> if (!driver || !driver->dev || !driver->bind || composite) >>> return -EINVAL; >>> >>> @@ -1084,7 +1086,11 @@ int usb_composite_register(struct usb_composite_driver *driver) >>> driver->name = "composite"; >>> composite = driver; >>> >>> - return usb_gadget_register_driver(&composite_driver); >>> + res = usb_gadget_register_driver(&composite_driver); >>> + if (res != 0) >>> + composite = NULL; >>> + >>> + return res; >>> } >>> >>> /** >>> -- >>> 2.7.0 >>> > > bump > Looks fine. Lukasz, shall I pick this myself ? btw if this isn't applied in a week, please ping me and I will pick it nonetheless.
Hi Marek, > On 02/26/2016 08:43 PM, Sam Protsenko wrote: > > On Fri, Feb 19, 2016 at 9:34 PM, Sam Protsenko > > <semen.protsenko@linaro.org> wrote: > >> + Praneeth Bajjuri > >> + Tom Rini > >> + Rob Herring > >> > >> On Tue, Feb 16, 2016 at 7:59 PM, Semen Protsenko > >> <semen.protsenko@linaro.org> wrote: > >>> From: Sam Protsenko <semen.protsenko@linaro.org> > >>> > >>> In case when usb_composite_register() failed once (for whatever > >>> reason), it will fail further even if all conditions are correct. > >>> Example: > >>> > >>> => fastboot 2 > >>> Invalid Controller Index > >>> couldn't find an available UDC > >>> g_dnl_register: failed!, error: -19 > >>> exit not allowed from main input shell. > >>> > >>> => fastboot 0 > >>> g_dnl_register: failed!, error: -22 > >>> exit not allowed from main input shell. > >>> > >>> Despite that 0 is correct index for USB controller, "fastboot 0" > >>> command will fail, because "composite" structure wasn't cleared > >>> properly on previous fail (on "fastboot 2" command). > >>> > >>> This patch fixes that erroneous behavior, allowing us to use > >>> composite even after previous failure. > >>> > >>> Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> > >>> --- > >>> drivers/usb/gadget/composite.c | 8 +++++++- > >>> 1 file changed, 7 insertions(+), 1 deletion(-) > >>> > >>> diff --git a/drivers/usb/gadget/composite.c > >>> b/drivers/usb/gadget/composite.c index 60f9272..d0ee784 100644 > >>> --- a/drivers/usb/gadget/composite.c > >>> +++ b/drivers/usb/gadget/composite.c > >>> @@ -1077,6 +1077,8 @@ static struct usb_gadget_driver > >>> composite_driver = { */ > >>> int usb_composite_register(struct usb_composite_driver *driver) > >>> { > >>> + int res; > >>> + > >>> if (!driver || !driver->dev || !driver->bind || composite) > >>> return -EINVAL; > >>> > >>> @@ -1084,7 +1086,11 @@ int usb_composite_register(struct > >>> usb_composite_driver *driver) driver->name = "composite"; > >>> composite = driver; > >>> > >>> - return usb_gadget_register_driver(&composite_driver); > >>> + res = usb_gadget_register_driver(&composite_driver); > >>> + if (res != 0) > >>> + composite = NULL; > >>> + > >>> + return res; > >>> } > >>> > >>> /** > >>> -- > >>> 2.7.0 > >>> > > > > bump > > > > Looks fine. Lukasz, shall I pick this myself ? > > btw if this isn't applied in a week, please ping me and I will pick it > nonetheless. > I will add this to my tree. And test it afterwards. I will send new PR with some other patches.
On 02/29/2016 11:11 AM, Lukasz Majewski wrote: > Hi Marek, > >> On 02/26/2016 08:43 PM, Sam Protsenko wrote: >>> On Fri, Feb 19, 2016 at 9:34 PM, Sam Protsenko >>> <semen.protsenko@linaro.org> wrote: >>>> + Praneeth Bajjuri >>>> + Tom Rini >>>> + Rob Herring >>>> >>>> On Tue, Feb 16, 2016 at 7:59 PM, Semen Protsenko >>>> <semen.protsenko@linaro.org> wrote: >>>>> From: Sam Protsenko <semen.protsenko@linaro.org> >>>>> >>>>> In case when usb_composite_register() failed once (for whatever >>>>> reason), it will fail further even if all conditions are correct. >>>>> Example: >>>>> >>>>> => fastboot 2 >>>>> Invalid Controller Index >>>>> couldn't find an available UDC >>>>> g_dnl_register: failed!, error: -19 >>>>> exit not allowed from main input shell. >>>>> >>>>> => fastboot 0 >>>>> g_dnl_register: failed!, error: -22 >>>>> exit not allowed from main input shell. >>>>> >>>>> Despite that 0 is correct index for USB controller, "fastboot 0" >>>>> command will fail, because "composite" structure wasn't cleared >>>>> properly on previous fail (on "fastboot 2" command). >>>>> >>>>> This patch fixes that erroneous behavior, allowing us to use >>>>> composite even after previous failure. >>>>> >>>>> Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> >>>>> --- >>>>> drivers/usb/gadget/composite.c | 8 +++++++- >>>>> 1 file changed, 7 insertions(+), 1 deletion(-) >>>>> >>>>> diff --git a/drivers/usb/gadget/composite.c >>>>> b/drivers/usb/gadget/composite.c index 60f9272..d0ee784 100644 >>>>> --- a/drivers/usb/gadget/composite.c >>>>> +++ b/drivers/usb/gadget/composite.c >>>>> @@ -1077,6 +1077,8 @@ static struct usb_gadget_driver >>>>> composite_driver = { */ >>>>> int usb_composite_register(struct usb_composite_driver *driver) >>>>> { >>>>> + int res; >>>>> + >>>>> if (!driver || !driver->dev || !driver->bind || composite) >>>>> return -EINVAL; >>>>> >>>>> @@ -1084,7 +1086,11 @@ int usb_composite_register(struct >>>>> usb_composite_driver *driver) driver->name = "composite"; >>>>> composite = driver; >>>>> >>>>> - return usb_gadget_register_driver(&composite_driver); >>>>> + res = usb_gadget_register_driver(&composite_driver); >>>>> + if (res != 0) >>>>> + composite = NULL; >>>>> + >>>>> + return res; >>>>> } >>>>> >>>>> /** >>>>> -- >>>>> 2.7.0 >>>>> >>> >>> bump >>> >> >> Looks fine. Lukasz, shall I pick this myself ? >> >> btw if this isn't applied in a week, please ping me and I will pick it >> nonetheless. >> > > I will add this to my tree. And test it afterwards. > > I will send new PR with some other patches. > Roger, thanks!
Hi Marek, > On 02/29/2016 11:11 AM, Lukasz Majewski wrote: > > Hi Marek, > > > >> On 02/26/2016 08:43 PM, Sam Protsenko wrote: > >>> On Fri, Feb 19, 2016 at 9:34 PM, Sam Protsenko > >>> <semen.protsenko@linaro.org> wrote: > >>>> + Praneeth Bajjuri > >>>> + Tom Rini > >>>> + Rob Herring > >>>> > >>>> On Tue, Feb 16, 2016 at 7:59 PM, Semen Protsenko > >>>> <semen.protsenko@linaro.org> wrote: > >>>>> From: Sam Protsenko <semen.protsenko@linaro.org> > >>>>> > >>>>> In case when usb_composite_register() failed once (for whatever > >>>>> reason), it will fail further even if all conditions are > >>>>> correct. Example: > >>>>> > >>>>> => fastboot 2 > >>>>> Invalid Controller Index > >>>>> couldn't find an available UDC > >>>>> g_dnl_register: failed!, error: -19 > >>>>> exit not allowed from main input shell. > >>>>> > >>>>> => fastboot 0 > >>>>> g_dnl_register: failed!, error: -22 > >>>>> exit not allowed from main input shell. > >>>>> > >>>>> Despite that 0 is correct index for USB controller, "fastboot 0" > >>>>> command will fail, because "composite" structure wasn't cleared > >>>>> properly on previous fail (on "fastboot 2" command). > >>>>> > >>>>> This patch fixes that erroneous behavior, allowing us to use > >>>>> composite even after previous failure. > >>>>> > >>>>> Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> > >>>>> --- > >>>>> drivers/usb/gadget/composite.c | 8 +++++++- > >>>>> 1 file changed, 7 insertions(+), 1 deletion(-) > >>>>> > >>>>> diff --git a/drivers/usb/gadget/composite.c > >>>>> b/drivers/usb/gadget/composite.c index 60f9272..d0ee784 100644 > >>>>> --- a/drivers/usb/gadget/composite.c > >>>>> +++ b/drivers/usb/gadget/composite.c > >>>>> @@ -1077,6 +1077,8 @@ static struct usb_gadget_driver > >>>>> composite_driver = { */ > >>>>> int usb_composite_register(struct usb_composite_driver *driver) > >>>>> { > >>>>> + int res; > >>>>> + > >>>>> if (!driver || !driver->dev || !driver->bind || > >>>>> composite) return -EINVAL; > >>>>> > >>>>> @@ -1084,7 +1086,11 @@ int usb_composite_register(struct > >>>>> usb_composite_driver *driver) driver->name = "composite"; > >>>>> composite = driver; > >>>>> > >>>>> - return usb_gadget_register_driver(&composite_driver); > >>>>> + res = usb_gadget_register_driver(&composite_driver); > >>>>> + if (res != 0) > >>>>> + composite = NULL; > >>>>> + > >>>>> + return res; > >>>>> } > >>>>> > >>>>> /** > >>>>> -- > >>>>> 2.7.0 > >>>>> > >>> > >>> bump > >>> > >> > >> Looks fine. Lukasz, shall I pick this myself ? > >> > >> btw if this isn't applied in a week, please ping me and I will > >> pick it nonetheless. > >> > > > > I will add this to my tree. And test it afterwards. This patch seems correct - no regression found. Tested-by: Lukasz Majewski "<l.majewski@samsung.com>" Acked-by: Lukasz Majewski "<l.majewski@samsung.com>" > > > > I will send new PR with some other patches. Patches which I thought that you didn't pull are already in u-boot-usb tree, so there is no point to prepare PR for this single patch. Hence, Marek, please apply it directly to -usb tree. > > > > Roger, thanks! >
On 03/01/2016 01:42 PM, Lukasz Majewski wrote: > Hi Marek, > >> On 02/29/2016 11:11 AM, Lukasz Majewski wrote: >>> Hi Marek, >>> >>>> On 02/26/2016 08:43 PM, Sam Protsenko wrote: >>>>> On Fri, Feb 19, 2016 at 9:34 PM, Sam Protsenko >>>>> <semen.protsenko@linaro.org> wrote: >>>>>> + Praneeth Bajjuri >>>>>> + Tom Rini >>>>>> + Rob Herring >>>>>> >>>>>> On Tue, Feb 16, 2016 at 7:59 PM, Semen Protsenko >>>>>> <semen.protsenko@linaro.org> wrote: >>>>>>> From: Sam Protsenko <semen.protsenko@linaro.org> >>>>>>> >>>>>>> In case when usb_composite_register() failed once (for whatever >>>>>>> reason), it will fail further even if all conditions are >>>>>>> correct. Example: >>>>>>> >>>>>>> => fastboot 2 >>>>>>> Invalid Controller Index >>>>>>> couldn't find an available UDC >>>>>>> g_dnl_register: failed!, error: -19 >>>>>>> exit not allowed from main input shell. >>>>>>> >>>>>>> => fastboot 0 >>>>>>> g_dnl_register: failed!, error: -22 >>>>>>> exit not allowed from main input shell. >>>>>>> >>>>>>> Despite that 0 is correct index for USB controller, "fastboot 0" >>>>>>> command will fail, because "composite" structure wasn't cleared >>>>>>> properly on previous fail (on "fastboot 2" command). >>>>>>> >>>>>>> This patch fixes that erroneous behavior, allowing us to use >>>>>>> composite even after previous failure. >>>>>>> >>>>>>> Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> >>>>>>> --- >>>>>>> drivers/usb/gadget/composite.c | 8 +++++++- >>>>>>> 1 file changed, 7 insertions(+), 1 deletion(-) >>>>>>> >>>>>>> diff --git a/drivers/usb/gadget/composite.c >>>>>>> b/drivers/usb/gadget/composite.c index 60f9272..d0ee784 100644 >>>>>>> --- a/drivers/usb/gadget/composite.c >>>>>>> +++ b/drivers/usb/gadget/composite.c >>>>>>> @@ -1077,6 +1077,8 @@ static struct usb_gadget_driver >>>>>>> composite_driver = { */ >>>>>>> int usb_composite_register(struct usb_composite_driver *driver) >>>>>>> { >>>>>>> + int res; >>>>>>> + >>>>>>> if (!driver || !driver->dev || !driver->bind || >>>>>>> composite) return -EINVAL; >>>>>>> >>>>>>> @@ -1084,7 +1086,11 @@ int usb_composite_register(struct >>>>>>> usb_composite_driver *driver) driver->name = "composite"; >>>>>>> composite = driver; >>>>>>> >>>>>>> - return usb_gadget_register_driver(&composite_driver); >>>>>>> + res = usb_gadget_register_driver(&composite_driver); >>>>>>> + if (res != 0) >>>>>>> + composite = NULL; >>>>>>> + >>>>>>> + return res; >>>>>>> } >>>>>>> >>>>>>> /** >>>>>>> -- >>>>>>> 2.7.0 >>>>>>> >>>>> >>>>> bump >>>>> >>>> >>>> Looks fine. Lukasz, shall I pick this myself ? >>>> >>>> btw if this isn't applied in a week, please ping me and I will >>>> pick it nonetheless. >>>> >>> >>> I will add this to my tree. And test it afterwards. > > This patch seems correct - no regression found. > > Tested-by: Lukasz Majewski "<l.majewski@samsung.com>" > Acked-by: Lukasz Majewski "<l.majewski@samsung.com>" > >>> >>> I will send new PR with some other patches. > > Patches which I thought that you didn't pull are already in u-boot-usb > tree, so there is no point to prepare PR for this single patch. > > Hence, Marek, please apply it directly to -usb tree. Applied, thanks!
diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c index 60f9272..d0ee784 100644 --- a/drivers/usb/gadget/composite.c +++ b/drivers/usb/gadget/composite.c @@ -1077,6 +1077,8 @@ static struct usb_gadget_driver composite_driver = { */ int usb_composite_register(struct usb_composite_driver *driver) { + int res; + if (!driver || !driver->dev || !driver->bind || composite) return -EINVAL; @@ -1084,7 +1086,11 @@ int usb_composite_register(struct usb_composite_driver *driver) driver->name = "composite"; composite = driver; - return usb_gadget_register_driver(&composite_driver); + res = usb_gadget_register_driver(&composite_driver); + if (res != 0) + composite = NULL; + + return res; } /**