usb: gadget: provide interface for legacy gadgets to get UDC name
Since commit 855ed04a37
("usb: gadget:
udc-core: independent registration of gadgets and gadget drivers") gadget
drivers can not assume that UDC drivers are already available on their
initialization. This broke the HACK, which was used in gadgetfs driver,
to get UDC controller name. This patch removes this hack and replaces it
by additional function in the UDC core (which is usefully only for legacy
drivers, please don't use it in the new code).
Reported-by: Vegard Nossum <vegard.nossum@oracle.com>
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Tested-by: Vegard Nossum <vegard.nossum@oracle.com>
Signed-off-by: Felipe Balbi <balbi@kernel.org>
This commit is contained in:

committed by
Felipe Balbi

parent
4111d4943a
commit
175f712119
@@ -1699,28 +1699,6 @@ static struct usb_gadget_driver gadgetfs_driver = {
|
||||
};
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
static void gadgetfs_nop(struct usb_gadget *arg) { }
|
||||
|
||||
static int gadgetfs_probe(struct usb_gadget *gadget,
|
||||
struct usb_gadget_driver *driver)
|
||||
{
|
||||
CHIP = gadget->name;
|
||||
return -EISNAM;
|
||||
}
|
||||
|
||||
static struct usb_gadget_driver probe_driver = {
|
||||
.max_speed = USB_SPEED_HIGH,
|
||||
.bind = gadgetfs_probe,
|
||||
.unbind = gadgetfs_nop,
|
||||
.setup = (void *)gadgetfs_nop,
|
||||
.disconnect = gadgetfs_nop,
|
||||
.driver = {
|
||||
.name = "nop",
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
/* DEVICE INITIALIZATION
|
||||
*
|
||||
* fd = open ("/dev/gadget/$CHIP", O_RDWR)
|
||||
@@ -1971,9 +1949,7 @@ gadgetfs_fill_super (struct super_block *sb, void *opts, int silent)
|
||||
if (the_device)
|
||||
return -ESRCH;
|
||||
|
||||
/* fake probe to determine $CHIP */
|
||||
CHIP = NULL;
|
||||
usb_gadget_probe_driver(&probe_driver);
|
||||
CHIP = usb_get_gadget_udc_name();
|
||||
if (!CHIP)
|
||||
return -ENODEV;
|
||||
|
||||
@@ -2034,6 +2010,8 @@ gadgetfs_kill_sb (struct super_block *sb)
|
||||
put_dev (the_device);
|
||||
the_device = NULL;
|
||||
}
|
||||
kfree(CHIP);
|
||||
CHIP = NULL;
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
Reference in New Issue
Block a user