Re: [PATCH v2 4/4] usb: dwc3: Workaround for super-speed host on dra7 in dual-role mode

From: Chanwoo Choi
Date: Fri Feb 24 2017 - 22:36:36 EST


Hi Roger,

[snip]

> /* dwc->lock must be held */
> static void dwc3_otg_core_exit(struct dwc3 *dwc)
> {
> + if (dwc->edev)
> + return;
> +
> /* disable all otg irqs */
> dwc3_otg_disable_events(dwc, DWC3_OTG_ALL_EVENTS);
> /* clear all events */
> @@ -1286,6 +1364,57 @@ static int dwc3_drd_init(struct dwc3 *dwc)
>
> INIT_WORK(&dwc->otg_work, dwc3_drd_work);
>
> + /* If extcon device is present we don't rely on OTG core for ID event */
> + if (dwc->edev) {
> + int id, vbus;
> +
> + dwc->edev_nb.notifier_call = dwc3_drd_notifier;
> + ret = extcon_register_notifier(dwc->edev, EXTCON_USB,
> + &dwc->edev_nb);

I recommend that you better to use the devm_extcon_register_notifier()

> + if (ret < 0) {
> + dev_err(dwc->dev, "Couldn't register USB cable notifier\n");
> + return -ENODEV;
> + }
> +
> + ret = extcon_register_notifier(dwc->edev, EXTCON_USB_HOST,
> + &dwc->edev_nb);

Ditto.

[snip]

--
Best Regards,
Chanwoo Choi
Samsung Electronics