usb: gadget: udc-core: Rescan pending list on driver unbind
authorKrzysztof Opasiak <k.opasiak@samsung.com>
Mon, 16 Jan 2017 07:40:57 +0000 (08:40 +0100)
committerFelipe Balbi <felipe.balbi@linux.intel.com>
Tue, 24 Jan 2017 09:04:07 +0000 (11:04 +0200)
commit8236800da115a3e24b9165c573067343f51cf5ea
treed7fdf2d1ed868329e2d41cbebd1ec8d89eaf3997
parent49def1853334396f948dcb4cedb9347abb318df5
usb: gadget: udc-core: Rescan pending list on driver unbind

Since:

commit 855ed04a3758 ("usb: gadget: udc-core: independent registration
of gadgets and gadget drivers")

if we load gadget module but there is no free udc available
then it will be stored on a pending gadgets list.

$ modprobe g_zero.ko
$ modprobe g_ether.ko
[] udc-core: couldn't find an available UDC - added [g_ether] to list
of pending drivers

We scan this list each time when new UDC appears in system.
But we can get a free UDC each time after gadget unbind.
This commit add scanning of that list directly after unbinding
gadget from udc.

Thanks to this, when we unload first gadget:

$ rmmod g_zero.ko

gadget which is pending is automatically
attached to that UDC (if name matches).

Fixes: 855ed04a3758  ("usb: gadget: udc-core: independent registration of gadgets and gadget drivers")
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
drivers/usb/gadget/udc/core.c