On Sun, Sep 29, 2019 at 03:36:35AM +0000, Peter Chen wrote: > > > > > I've encountered an odd situation where the CI Dual Role driver hard locks the > > kernel on the Ouya (Tegra 3). > > I was attempting to set up manual mode switching in the kernel, as the Ouya lacks > > hardware support for the ID pin and no voltage output on that port. > > I found that the kernel was hard locking whenever I had the dr_mode = "otg" set in > > the devicetree. > > It seems Tegra doesn't support host mode using chipidea driver. The ci_hdrc_tegra.c > only supports device mode. Thierry, could you confirm that? Yes, correct. I recall doing some work at the time to move host mode support from ehci-tegra to the ChipIdea driver, but never managed to make it work, unfortunately. Thierry > > No further output was seen on the console, and sysreq does not respond. > > It occurs both in module and builtin mode. > > > > I have however found a workaround. > > By setting the dual role usb device to: > > compatible = "nvidia,tegra30-ehci", "nvidia,tegra30-udc"; and setting the assigned > > phy to: > > dr_mode = "peripheral"; > > I can achieve rudimentary live switching of roles. > > The device defaults to host mode, as the ehci driver enumerates first. > > By unbinding the tegra-ehci driver and binding the tegra-udc driver, I can switch to > > gadget mode. > > The reverse also works. > > The PHY driver does not appear to care if it is always in peripheral mode. > > > > Thank you for your time, > > Peter Geis
Attachment:
signature.asc
Description: PGP signature