Search by Tags

i.MX6 USB host and USB on-the-go driver registry settings

 

Subscribe for this article updates

The i.MX6 USB host driver (used for the USB host controller and for the OTG controller when working in host mode) supports some additional registry entries that can be used to improve compatibility with previous hardware designs.

Force USB 1.1 behaviour

Some carrier boards (like EVB 2.0) may have USB external transceivers that can't support USB 2.0 operations. This will generate issues and lead to devices not being recognized by the system. It is possible to disable USB 2.0 high-speed mode by adding the following keys:

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\HCD_HSH1]
   "HighSpeed"=dword:0  ; Disables high-speed mode
 
; when the second host is used as host-only device
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\HCD_HSH2]
   "HighSpeed"=dword:0  ; Disables high-speed mode
 
; when the second host is used for usb on-the-go
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\UsbOtg\Hcd]
   "HighSpeed"=dword:0  ; Disables high-speed mode

Disable optional control signals

Both controllers use some additional signals to detect over-current (OC) and to enable power on an external hub (PEN). Those signals could be disabled if the signals are not connected or need to be used for a different purpose. To do this you should set the EnablePEN or EnableOC keys to zero in the corresponding driver configuration.

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\HCD_HSH1]
   "EnableOC"=dword:0  ; Disables over-current detection
   "EnablePEN"=dword:0  ; Disables power enable 
 
;when the second host is used as host-only device
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\HCD_HSH2]
   "EnableOC"=dword:0  ; Disables over-current detection
   "EnablePEN"=dword:0  ; Disables power enable 
 
; when the second host is used for usb on-the-go
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\UsbOtg\Hcd]
   "EnableOC"=dword:0  ; Disables over-current detection
   "EnablePEN"=dword:0  ; Disables power enable 

And additional signal named VDET is used by the On-The-Go controller. On Apalis this pin is a dedicated pin, on Colibri it may be used as GPIO, but it requires some additional GPIO pins states to be changed to be fully controllable by SW. Check the datasheet for additional information. In general is better to not use this pin as a regular GPIO, unless you are forced to do this for backward compatibility with old carrier boards.