Open main menu

DAVE Developer's Wiki β

Changes

DESK-MX6UL-L/Peripherals/USB OTG

694 bytes added, 11 January
m
U0007 moved page DESK-MX6UL-L/Pheripherals/USB OTG to DESK-MX6UL-L/Peripherals/USB OTG without leaving a redirect
<section begin="History" />
{| style="border-collapse:collapse; "
!colspan="4" style="width:100%; text-align:left"; border-bottom:solid 2px #ededed"|History
|-
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Version!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Issue Date!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Notes
|-
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|1{{oldid|14250|2021/07/20}}| style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000" |First DESK-MX6UL-L release|-| style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000" |{{oldid|16316|2022/03/16}}| style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000" |DESK-MX6UL-L 3.0.0release|-! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fbededed; padding:5px; color:#000000"|Apr 20212023/05/04|! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fbededed; padding:5px; color:#000000"|First DESK -MX6UL-L 4.0.0 release
|}
<section end="History" /><section begin="Body" />
==Peripheral USB OTG ==
The USB OTG ports can be configured as Host or Device mode depending on the device tree configuration. In OTG mode they can be easily tested using the Mass Storage Gadget, which lets the device export a file as a mass storage device to the connected PC.
In {{ImportantMessage|text=The USB OTG mode they can be easily tested using the Mass Storage Gadget, which lets the device export a file peripheral is not available - ''as a mass storage device to default option'' - on [[AXEL_ULite_SOM/AXEL_ULite_Evaluation_Kit | AXEL ULite EVK]]. Please contact [mailto:sales@dave.eu Sales department] for this option.<br>This peripheral is available on the connected PCi.MX6UL standard product [[SBC_Lynx_SBC | SBCLynx]]}}
=== Device tree configuration ===
Here below an example of device tree configuration used on standard DAVE's kit for the [[AXEL ULite SOM]] where USB OTG1 is configured as ''otg'' while the USB OTG2 port is configured in ''host'' mode:
From <code>imx6ul-lynx-som0013-cb002f.dtsidts</code>:
<pre>
&usbotg1 pinctrl_usb_otg2: usbotg2grp { pinctrl-names = "default"; pinctrl-0 fsl,pins = <&pinctrl_usb_otg1_id>; vbus-supply = <&reg_usb_otg1_vbus>; MX6UL_PAD_ENET2_TX_DATA1__GPIO2_IO12 0x17059 /* OTG2_PWR */ dr_mode = "otg"; MX6UL_PAD_ENET2_TX_EN__USB_OTG2_OC 0x17059 /* OTG2_OC */ srp-disable >; hnp-disable }; adp-disable; status = "disabled" };
};
</pre>
&usbotg2 { vbus-supply = and from <&reg_usb_otg2_vbuscode>; dr_mode = "host"; status = "disabled";};......&iomuxc {.....imx6ul-lynx-som0013. pinctrl_usb_otg1_id: usbotg1idgrp { fsl,pins = dtsi< MX6UL_PAD_GPIO1_IO00__ANATOP_OTG1_ID 0x17059 /code>; };:
pinctrl_usb_otg1: usbotg1grp { fsl,pins = < MX6UL_PAD_ENET2_RX_DATA0__GPIO2_IO08 0x10b0 /* OTG1 PWR */ MX6UL_PAD_ENET2_RX_DATA1__GPIO2_IO09 0x17059 /* OTG1_OC */ pre>; };
pinctrl_usb_otg1_oc pinctrl_usb_otg2: usbotg1grp1 usbotg2grp { fsl,pins = < MX6UL_PAD_ENET2_RX_DATA0__GPIO2_IO08 MX6UL_PAD_ENET2_TX_DATA1__GPIO2_IO12 0x10b0 0x17059 /* OTG1 PWR OTG2_PWR */ MX6UL_PAD_ENET2_RX_DATA1__USB_OTG1_OC MX6UL_PAD_ENET2_TX_EN__USB_OTG2_OC 0x17059 /* OTG1_OC OTG2_OC */ >; };
pinctrl_usb_otg2: usbotg2grp { fsl,pins = < MX6UL_PAD_ENET2_TX_DATA1__GPIO2_IO12 0x17059 /* OTG2_PWR */ MX6UL_PAD_ENET2_TX_EN__USB_OTG2_OC 0x17059 /* OTG2_OC */ >; };  pinctrl_usb_otg2_1: usbotg2grp-1 { fsl,pins = < MX6UL_PAD_UART3_CTS_B__GPIO1_IO26 0x17059 /* OTG2_PWR */ MX6UL_PAD_UART3_RTS_B__GPIO1_IO27 0x17059 /* OTG2_OC */ >; };
</pre>
From <code>imx6ul-lynx-som0013-cb002f.dts</code>:===Accessing the peripheral=== <pre>&reg_usb_otg1_vbus { pinctrl-0 = <&pinctrl_usb_otg1_oc>;}; &usbotg1 { over-current-active-low; status = "okay";}; &usbotg2 { over-current-active-low; status = "okay";};=Linux messages at boot time====
<pre class="workstation-terminal">
...
...
&iomuxc {[ 3.458609] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.15 pinctrl-names [ 3.467126] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber= "default";1[ 3.474528] usb usb1: Product: EHCI Host Controller pinctrl[ 3.479474] usb usb1: Manufacturer: Linux 5.15.71-desk-mx6ul-l-4.0.0 = <&pinctrl_hog_gpios>;-rc1+gb3b0d0fd0042 ehci_hcd  imx6ul-lynx {[ 3.488899] usb usb1: SerialNumber: ci_hdrc.1
...
...
pinctrl_usb_otg1: usbotg1grp {
fsl,pins = <
MX6UL_PAD_ENET2_RX_DATA0__GPIO2_IO08 0x10b0 /* OTG1 PWR */
MX6UL_PAD_ENET2_RX_DATA1__USB_OTG1_OC 0x17059 /* OTG1_OC */
>;
};
 
pinctrl_usb_otg2: usbotg2grp {
fsl,pins = <
MX6UL_PAD_ENET2_TX_DATA1__GPIO2_IO12 0x17059 /* OTG2_PWR */
MX6UL_PAD_ENET2_TX_EN__USB_OTG2_OC 0x17059 /* OTG2_OC */
>;
};
 
</pre>
==== Usage in Host mode ====
===Accessing When a USB peripheral is inserted, in the following example a memory mass storage device, the kernel recognizes the peripheral=======Linux messages at boot time====device (i.e. class, vendor id, product id, etc.)
<pre class="workstation-terminal">
[ 94.701909] usb 1-1: new high-speed USB device number 2 using ci_hdrc[ 94.910476] usb 1-1: New USB device found, idVendor=13fe, idProduct=6700, bcdDevice= 1.10[ 94.910584] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3[ 94.910651] usb 1-1: Product: USB DISK 3.0[ 94.910695] usb 1-1: Manufacturer: Wilk[ 94.910741] usb 1-1: SerialNumber: 07012533C2BE5935[ 3 94.387128932930] usb_otg1_vbususb-storage 1-1:1.0: supplied by SWBSTUSB Mass Storage device detected[ 3 94.418986941189] usb_otg2_vbusscsi host0: supplied by SWBSTusb-storage 1-1:1.0[ 5 96.245408015256] usb_otg1_vbusscsi 0:0:0:0: Direct-Access Wilk USB DISK 3.0 PMAP PQ: 0 ANSI: disabling6[ 96.025192] sd 0:0:0:0: [sda] 60628992 512-byte logical blocks: (31.0 GB/28.9 GiB)[ 96.026459] sd 0:0:0:0: [sda] Write Protect is off[ 96.026506] sd 0:0:0:0: [sda] Mode Sense: 45 00 00 00[ 96.027841] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA[ 96.093511] sda: sda1 sda2[ 96.105339] sd 0:0:0:0: [sda] Attached SCSI removable disk
</pre>
<pre class="workstation-terminal">
root@imx6qdlxelkdesk-mx6ul-lynx:~# dd if=/dev/zero of=mass_storage count=256 32 bs=1M 25632+0 records in25632+0 records out268435456 33554432 bytes (268 34 MB, 256 32 MiB) copied, 150.924 573118 s, 1658.9 5 MB/sroot@imx6qdlxelkdesk-mx6ul-lynx:~# mkfs.msdos mass_storagemkfs.fat 4.1 2 (20172021-01-2431)root@imx6qdlxelkdesk-mx6ul-lynx:~# mkdir looproot@imx6qdlxelkdesk-mx6ul-lynx:~# mount -o loop mass_storage looproot@imx6qdlxelkdesk-mx6ul-lynx:~# echo "Test USB OTG with mass storage device" > loop/usb.txtroot@imx6qdlxelkdesk-mx6ul-lynx:~# umount loop/
</pre>
<pre class="workstation-terminal">
root@imx6qdlxelkdesk-mx6ul-lynx:~# modprobe g_mass_storage removable=y file=mass_storageroot@desk-mx6ul-lynx:~# dmesg | tail -n 7[ 891166.807023355438] Mass Storage Function, version: 2009/09/11[ 891166.813145355484] LUN: removable file: (no medium)[ 891166.818901355723] LUN: removable file: /home/root/mass_storage[ 891166.824754355748] Number of LUNs=1[ 891166.827901365515] g_mass_storage gadget: Mass Storage Gadget, version: 2009/09/11[ 891166.834955365556] g_mass_storage gadget: userspace failed to provide iSerialNumber[ 891166.842109365572] g_mass_storage gadget: g_mass_storage readyroot@imx6qdlxelk:~#
</pre>
Once the USB cable is connected to the PC, the kernel prints storage is mounted and the following messages''usb.txt'' file is available:
<pre class="workstation-terminal">
root@imx6qdlxelk:~# [ 892$ cat /media/tomzy/42D5-CBA5/usb.036840] g_mass_storage gadget: high-speed config #1: Linux File-Backed Storagetxt Test USB OTG with mass storage device
</pre>
and the The Windows PC also activate the driver and the disk is available as a Drive Unit (with the ''usb.txt'' file available).
=== Additional information ===
More information about Mass Storage Gadget driver is given in the kernel tree under ''Documentation/usb/mass-storage.txtrst''
<section end="Body" />
----
[[Category:AXEL ULite]]
8,226
edits