usbotg: otg_set_mode() can only be called once
Christian Eggers
ceggers at arri.de
Thu Aug 24 05:04:29 PDT 2023
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.
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