The check for bounded gadget driver in dwc3_gadget_start() was to
prevent going through the initialization again without any cleanup. With
a recent update, the UDC framework guarantees this won't happen while
the UDC is started. Also, this check doesn't prevent requesting threaded
irq to the same dev_id, which will mess up the irq freeing logic. Let's
remove it.
Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
---
drivers/usb/dwc3/gadget.c | 19 ++-----------------
1 file changed, 2 insertions(+), 17 deletions(-)
@@ -2370,7 +2370,7 @@ static int dwc3_gadget_start(struct usb_gadget *g,{structdwc3*dwc=gadget_to_dwc(g);unsignedlongflags;-intret=0;+intret;intirq;irq=dwc->irq_gadget;
@@ -2379,29 +2379,14 @@ static int dwc3_gadget_start(struct usb_gadget *g,if(ret){dev_err(dwc->dev,"failed to request irq #%d --> %d\n",irq,ret);-gotoerr0;+returnret;}spin_lock_irqsave(&dwc->lock,flags);-if(dwc->gadget_driver){-dev_err(dwc->dev,"%s is already bound to %s\n",-dwc->gadget->name,-dwc->gadget_driver->driver.name);-ret=-EBUSY;-gotoerr1;-}-dwc->gadget_driver=driver;spin_unlock_irqrestore(&dwc->lock,flags);return0;--err1:-spin_unlock_irqrestore(&dwc->lock,flags);-free_irq(irq,dwc);--err0:-returnret;}staticvoid__dwc3_gadget_stop(structdwc3*dwc)
On Wed, Feb 03, 2021 at 08:14:37PM -0800, Thinh Nguyen wrote:
The check for bounded gadget driver in dwc3_gadget_start() was to
prevent going through the initialization again without any cleanup. With
a recent update, the UDC framework guarantees this won't happen while
the UDC is started. Also, this check doesn't prevent requesting threaded
irq to the same dev_id, which will mess up the irq freeing logic. Let's
remove it.
What "recent update" caused this? Is this a fix for something that
needs to be backported? If so, can you provide a "Fixes:" tag on here?
Or is this just a general cleanup that is good to do now.
thanks,
greg k-h
On Wed, Feb 03, 2021 at 08:14:37PM -0800, Thinh Nguyen wrote:
quoted
The check for bounded gadget driver in dwc3_gadget_start() was to
prevent going through the initialization again without any cleanup. With
a recent update, the UDC framework guarantees this won't happen while
the UDC is started. Also, this check doesn't prevent requesting threaded
irq to the same dev_id, which will mess up the irq freeing logic. Let's
remove it.
What "recent update" caused this? Is this a fix for something that
needs to be backported? If so, can you provide a "Fixes:" tag on here?
Or is this just a general cleanup that is good to do now.
thanks,
greg k-h
It's general cleanup. The "recent update" is not in mainline yet but on
your "usb-next" branch so I'm not sure how to properly reference it.
But here's the commit on your branch I was referring to: 49d08cfc7830
("usb: udc: core: Introduce started state")
No need to backport this because it doesn't fix anything.
Thanks,
Thinh
On Fri, Feb 05, 2021 at 09:39:37AM +0000, Thinh Nguyen wrote:
Greg Kroah-Hartman wrote:
quoted
On Wed, Feb 03, 2021 at 08:14:37PM -0800, Thinh Nguyen wrote:
quoted
The check for bounded gadget driver in dwc3_gadget_start() was to
prevent going through the initialization again without any cleanup. With
a recent update, the UDC framework guarantees this won't happen while
the UDC is started. Also, this check doesn't prevent requesting threaded
irq to the same dev_id, which will mess up the irq freeing logic. Let's
remove it.
What "recent update" caused this? Is this a fix for something that
needs to be backported? If so, can you provide a "Fixes:" tag on here?
Or is this just a general cleanup that is good to do now.
thanks,
greg k-h
It's general cleanup. The "recent update" is not in mainline yet but on
your "usb-next" branch so I'm not sure how to properly reference it.
But here's the commit on your branch I was referring to: 49d08cfc7830
("usb: udc: core: Introduce started state")
Please refer to this commit just like this, as the id is not going to
change. Can you redo this patch with that information in it?
thanks,
greg k-h
On Fri, Feb 05, 2021 at 09:39:37AM +0000, Thinh Nguyen wrote:
quoted
Greg Kroah-Hartman wrote:
quoted
On Wed, Feb 03, 2021 at 08:14:37PM -0800, Thinh Nguyen wrote:
quoted
The check for bounded gadget driver in dwc3_gadget_start() was to
prevent going through the initialization again without any cleanup. With
a recent update, the UDC framework guarantees this won't happen while
the UDC is started. Also, this check doesn't prevent requesting threaded
irq to the same dev_id, which will mess up the irq freeing logic. Let's
remove it.
What "recent update" caused this? Is this a fix for something that
needs to be backported? If so, can you provide a "Fixes:" tag on here?
Or is this just a general cleanup that is good to do now.
thanks,
greg k-h
It's general cleanup. The "recent update" is not in mainline yet but on
your "usb-next" branch so I'm not sure how to properly reference it.
But here's the commit on your branch I was referring to: 49d08cfc7830
("usb: udc: core: Introduce started state")
Please refer to this commit just like this, as the id is not going to
change. Can you redo this patch with that information in it?
thanks,
greg k-h