On Wed, Jul 05, 2017 at 08:19:52PM +0300, Dmitry Osipenko wrote: > + /* setup and register ChipIdea HDRC device */ > + udc->data.name = "tegra-udc"; > + udc->data.capoffset = DEF_CAPOFFSET; > + udc->data.flags = 0; > + udc->data.usb_phy = udc->phy; > + > + /* setup device specific quirks */ > + soc = id->data; > + > + if (!soc->supports_unaligned_dma) > + udc->data.flags |= CI_HDRC_REQUIRES_ALIGNED_DMA; > + > + /* power on UDC controller */ > + usb_phy_set_suspend(udc->phy, 0); Why above is needed? The chipidea core will do usb_phy_init for power on. > + > + udc->dev = ci_hdrc_add_device(&pdev->dev, pdev->resource, > + pdev->num_resources, &udc->data); > + if (IS_ERR(udc->dev)) { > + err = PTR_ERR(udc->dev); > + dev_err(&pdev->dev, "failed to add HDRC device: %d\n", err); > + goto power_off; > + } > + > + platform_set_drvdata(pdev, udc); > + > + return 0; > + > +power_off: > + usb_phy_set_suspend(udc->phy, 1); [...] > +static int tegra_udc_remove(struct platform_device *pdev) > +{ > + struct tegra_udc *udc = platform_get_drvdata(pdev); > + > + usb_phy_set_suspend(udc->phy, 1); [...] -- Best Regards, Peter Chen -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html