usbotg: otg_set_mode() can only be called once
Christian Eggers
ceggers at arri.de
Thu Aug 24 06:35:33 PDT 2023
Hello Ahmad,
On Thursday, 24 August 2023, 15:23:17 CEST, Ahmad Fatoum wrote:
> Hello Christian,
>
> On 24.08.23 14:04, Christian Eggers wrote:
> > ok, I should better read the manuals ...
> >
> > "Once a specific mode has been selected it can't be changed later anymore."
> >
> > In the past I used two OTG cores, one as device and one as host. So both
> > OTGs were set to a fixed drmode in the device tree.
> >
> > No I need to implement both features via a single OTG. But probably
> > I can use another criteria for choosing the correct boot methods instead of
> > trying both.
>
> Obvious choices is checking [ "$bootsource" = serial ] or checking if device
> is gadget through ID pin or Type C controller.
>
> Is that possible in your case?
I currently check for $bootsource which is sufficient. But using the USB-C CC
lines (that's why I am working on the ADC driver) sounds event better. Currently
I use the ADC only for checking whether a device is connected (I am allowed to
enable VBUS), but not for determining whether a host is connected (activate USB gadget).
regards,
Christian
>
> Cheers,
> Ahmad
>
> >
> >
> > On Thursday, 24 August 2023, 13:30:46 CEST, Christian Eggers wrote:
> >> Application:
> >>
> >> 1. Try to boot via fastboot (usb device)
> >> 2. Try to boot via usb drive (usb host)
> >>
> >> Problem:
> >>
> >> barebox at i.MX6ULL:/ setenv otg.mode=host
> >> imx-usb 2184000.usb at 2184000.of: USB EHCI 1.00
> >> barebox at i.MX6ULL:/ setenv otg.mode=peripheral
> >> Cannot set parameter otg.mode: Device or resource busy
> >>
> >> Analysis:
> >>
> >> The otgdev core maintains one `struct otg_mode` per device. The function
> >> checks whether the current mode is equal to USB_DR_MODE_OTG. If not, it
> >> returns -EBUSY. There is currently no way to reset the current mode back to
> >> USB_DR_MODE_OTG after it has been set to peripheral or host mode once.
> >>
> >>
> >
> >
> >
> >
> >
> >
>
>
More information about the barebox
mailing list