The i.MX91 CPU has two USB 2.0 OTG ports with integrated PHY.
USB interfaces on the ConnectCore 91
On the ConnectCore 91 system-on-module:
-
USB_OTG1 is available on the castellated pads and the LGA pads.
-
USB_OTG2 is available on the LGA pads. Only the differential data lines are available on the castellated pads.
On the ConnectCore 93 Development Kit:
-
USB_OTG1 is connected to a USB Type-C connector.
-
USB_OTG2 is connected to a four-port USB hub that makes it available at:
-
both ports of the stackable dual USB A-type connector.
-
the PCIe connector.
-
the XBee Cellular socket.
-
Some lines of USB_OTG1 are multiplexed with other functionality through a group of jumpers on the ConnectCore 93 Development Kit. Make sure the appropriate jumpers are connected when using USB_OTG1 on the ConnectCore 93 Development Kit. See Hardware reference manuals for information on the jumper connections and the multiplexed functionality they select. |
Kernel configuration
You can manage the USB 2.0 support through the kernel configuration options:
-
Support for Host-side USB (
CONFIG_USB
) -
EHCI HCD (USB 2.0) support (
CONFIG_USB_EHCI_HCD
) -
ChipIdea Highspeed Dual Role Controller (
CONFIG_USB_CHIPIDEA
) -
ChipIdea device controller (
CONFIG_USB_CHIPIDEA_UDC
) -
ChipIdea host controller (
CONFIG_USB_CHIPIDEA_HOST
) -
Freescale MXS USB PHY support (
CONFIG_USB_MXS_PHY
) -
OTG support (
CONFIG_USB_OTG
) -
Type-C Port (
CONFIG_TYPEC_TCPCI
)
All of these kernel configuration options are enabled as built-in on the default ConnectCore 91 kernel configuration file.
The USB device driver provides the functionality for the USB gadget drivers. The USB gadget drivers implement one or more "functions", each providing a different capability.
The following gadget drivers are supported and enabled as loadable modules on the default ConnectCore 91 kernel configuration file.
-
Mass Storage Gadget (
CONFIG_USB_MASS_STORAGE
) -
Ethernet Gadget with CDC Ethernet support (
CONFIG_USB_ETH
) -
Serial Gadget with ACM and CDC OBEX support (
CONFIG_USB_G_SERIAL
)
Gadget drivers are enabled as loadable modules because only one gadget function can be used at a time. Before using a gadget driver, you must first make sure no other gadget driver is loaded. |
Kernel driver
The i.MX91 universal serial bus (USB) driver implements a standard Linux driver interface to the CHIPIDEA USB-HS On-The-Go (OTG) controller. The CHIPIDEA USB controller is enhanced host controller interface (EHCI) compliant.
The i.MX91 USB drivers are located at drivers/usb/
.
File | Description |
---|---|
Chipidea IP core driver |
|
Chipidea peripheral driver |
|
Chipidea host driver |
|
i.MX glue layer |
|
Chipidea OTG driver |
|
Chipidea OTG HNP and SRP driver |
|
i.MX SoC abstract layer |
|
i.MX USB physical driver |
|
Type-C Port Controller Interface driver |
Device tree bindings and customization
The i.MX91 USB controller device tree bindings are documented at Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt
.
Example: ConnectCore 93 Development Kit
USB_OTG1 port is configured by default to work as USB Type-C connector. USB_OTG2 port is configured by default to work as host.
/* USB_OTG1 - USB TypeC */
&usbotg1 {
dr_mode = "otg";
hnp-disable;
srp-disable;
adp-disable;
usb-role-switch;
disable-over-current;
samsung,picophy-pre-emp-curr-control = <3>;
samsung,picophy-dc-vol-level-adjust = <7>;
status = "okay";
port {
usb1_drd_sw: endpoint {
remote-endpoint = <&typec1_dr_sw>;
};
};
};
/* USB_OTG2 connected to usb hub */
&usbotg2 {
dr_mode = "host";
disable-over-current;
status = "okay";
};
Use the USB port
See the following topics for information on how to use the USB port.