Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b20290db authored by Mayank Rana's avatar Mayank Rana
Browse files

usb: gadget: composite: Update usb_core_id with composite driver



Currently composite_template_driver is being used statically and
it doesn't update usb_core_id passed from gadget driver assuming
that there is always one gadget binding with one udc driver. For
multiple gadget drivers using different udc driver it is required
to use usb_core_id to bind between composite gadget driver and
udc driver. Hence update gadget driver with usb core id before
registering it.

Change-Id: I9f903dba070b5a1a54a072d98a522442afb2db2a
Signed-off-by: default avatarMayank Rana <mrana@codeaurora.org>
parent f292fa9f
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -1828,6 +1828,7 @@ static const struct usb_gadget_driver composite_driver_template = {
int usb_composite_probe(struct usb_composite_driver *driver)
{
	struct usb_gadget_driver *gadget_driver;
	u8 core_id;

	if (!driver || !driver->dev || !driver->bind)
		return -EINVAL;
@@ -1835,6 +1836,7 @@ int usb_composite_probe(struct usb_composite_driver *driver)
	if (!driver->name)
		driver->name = "composite";

	core_id = driver->gadget_driver.usb_core_id;
	driver->gadget_driver = composite_driver_template;
	gadget_driver = &driver->gadget_driver;

@@ -1842,6 +1844,11 @@ int usb_composite_probe(struct usb_composite_driver *driver)
	gadget_driver->driver.name = driver->name;
	gadget_driver->max_speed = driver->max_speed;

	if (core_id)
		gadget_driver->usb_core_id = core_id;

	pr_debug("%s(): gadget_driver->usb_core_id:%d\n", __func__,
					gadget_driver->usb_core_id);
	return usb_gadget_probe_driver(gadget_driver);
}
EXPORT_SYMBOL_GPL(usb_composite_probe);