The i.MX6UL CPU has two USB 2.0 OTG ports with integrated PHYs.
USB interfaces on the ConnectCore 6UL
On the ConnectCore 6UL system-on-module both USB OTG ports are available for peripheral use.
On the ConnectCore 6UL SBC Express:
-
USB_OTG1 is available at:
-
the bottom port of the stackable dual USB A-type connector on the top side of the board.
-
the micro AB-type connector on the bottom side of the board.
The USB device shares the USB_OTG1 instance of the i.MX6UL processor with the bottom USB host port of the stacked connector. Connecting two devices to the USB_OTG1 port at the same time will cause a short circuit in the differential data pair.
-
-
USB_OTG2 is available at the top port of the stackable dual USB A-type connector on the top side of the board.
On the ConnectCore 6UL SBC Pro:
-
USB_OTG1 is available at the micro AB-type connector on the bottom side of the board.
-
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 on the top side of the board.
-
the PCIe connector.
-
the XBee socket (also available on an expansion connector).
-
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)
All of these kernel configuration options are enabled as built-in on the default ConnectCore 6UL 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 6UL 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.MX6UL 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.MX6UL 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 |
Device tree bindings and customization
The i.MX6UL USB controller device tree bindings are documented at Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt.
Example: ConnectCore 6UL SBC Express
Both USB OTG ports are configured by default to work as host.
This is selected via the dr_mode
property on the device tree:
&usbotg1 {
dr_mode = "host";
digi,power-line-active-high;
disable-over-current;
status="okay"
};
&usbotg2 {
dr_mode = "host";
digi,power-line-active-high;
disable-over-current;
status="okay"
};
Example: ConnectCore 6UL SBC Pro
USB_OTG1 is configured by default to work as otg, while USB_OTG2 is configured as host.
This is selected via the dr_mode
property on the device tree.
The ConnectCore 6UL SBC Pro uses:
-
Pad GPIO0 (GPIO1_IO0) as OTG1 ID
-
Pad GPIO1 (GPIO1_IO1) as OTG1 Overcurrent
-
Pad GPIO4 (GPIO1_IO4) as OTG1 power enable
&usbotg1 {
dr_mode = "otg";
vbus-supply = <®_usb_otg1_vbus>;
pinctrl-0 = <&pinctrl_usbotg1>;
digi,power-line-active-high;
status = "okay";
};
&usbotg2 {
dr_mode = "host";
digi,power-line-active-high;
disable-over-current;
status = "okay";
};
&iomuxc {
imx6ul-ccimx6ul {
pinctrl_usbotg1: usbotg1grp {
fsl,pins = <
MX6UL_PAD_GPIO1_IO00__ANATOP_OTG1_ID 0x17059
MX6UL_PAD_GPIO1_IO04__GPIO1_IO04 0x17059 /* USBOTG1 PWR */
MX6UL_PAD_GPIO1_IO01__USB_OTG1_OC 0x17059
>;
};
};
};
Using the USB port
See the following topics for information on how to use the USB port.