DESK-MX6UL-L/Peripherals/USB Host

From DAVE Developer's Wiki
Jump to: navigation, search
History
Issue Date Notes

2021/07/20

First DESK release

2022/03/16

DESK-MX6UL-L 3.0.0 release

2023/05/04

DESK-MX6UL-L 4.0.0 release
2024/08/07 DESK-MX6UL-L 4.2.x release


Peripheral USB Host[edit | edit source]

The USB Host port requires to configure the USB VBUS regulator and the gpio used for enabling the 5V USB power switch.

Device tree configuration[edit | edit source]

AXEL ULite SOM[edit | edit source]

Here below is an example of device tree configuration used on standard DAVE's kit for the AXEL ULite SOM:

From imx6ul-axelulite-cb003a.dts:

        reg_usb_otg1_vbus: regulator@2 {
                compatible = "regulator-fixed";
                reg = <2>;
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_usb_otg1>;
                regulator-name = "usb_otg1_vbus";
                regulator-min-microvolt = <5000000>;
                regulator-max-microvolt = <5000000>;
                gpio = <&gpio1 18 GPIO_ACTIVE_HIGH>;
                enable-active-high;
        };
...
...
&usbotg1 {
        vbus-supply = <&reg_usb_otg1_vbus>;
        disable-over-current;
        dr_mode = "host";
        status = "okay";
};
...
...
&iomuxc {
        pinctrl-0 = <&pinctrl_hog_gpios>;
        imx6ul-axelulite {
...
...
                pinctrl_usb_otg1: usbotg1grp {
                        fsl,pins = <
                                MX6UL_PAD_UART1_CTS_B__GPIO1_IO18       0x10b0          /* HOST PWR */
                                MX6UL_PAD_GPIO1_IO03__GPIO1_IO03        0x10b0          /* HOST OC */
                        >;
                };
};

RIALTO SBC[edit | edit source]

Here below is an example of device tree configuration used on standard DAVE's kit for the RIALTO SBC:

From imx6ul-lynx-som0022.dtsi:

...
...
		reg_usb_otg1_vbus: regulator@2 {
			compatible = "regulator-fixed";
			reg = <2>;
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_usb_otg1>;
			regulator-name = "usb_otg1_vbus";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			gpio = <&gpio2 8 GPIO_ACTIVE_HIGH>;
			enable-active-high;
			vin-supply = <&swbst_reg>;
		};

		reg_usb_otg2_vbus: regulator@3 {
			compatible = "regulator-fixed";
			reg = <3>;
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_usb_otg2>;
			regulator-name = "usb_otg2_vbus";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			gpio = <&gpio2 12 GPIO_ACTIVE_HIGH>;
			enable-active-high;
		};
...
...
&usbotg1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usb_otg1_id>;
	vbus-supply = <&reg_usb_otg1_vbus>;
	dr_mode = "otg";
	srp-disable;
	hnp-disable;
	adp-disable;
	status = "disabled";
};

&usbotg2 {
	vbus-supply = <&reg_usb_otg2_vbus>;
	dr_mode = "host";
	status = "disabled";
};

...
...
&iomuxc {
...
...
		pinctrl_usb_otg1_id: usbotg1idgrp {
			fsl,pins = <
				MX6UL_PAD_GPIO1_IO00__ANATOP_OTG1_ID	0x17059
			>;
		};

		pinctrl_usb_otg1: usbotg1grp {
			fsl,pins = <
				MX6UL_PAD_JTAG_MOD__GPIO1_IO10		0x10b0 /* OTG1 PWR */
				MX6UL_PAD_UART3_RX_DATA__GPIO1_IO25	0x17059 /* OTG1_OC */
			>;
		};

		pinctrl_usb_otg1_1: usbotg1grp-1 {
			fsl,pins = <
				MX6UL_PAD_JTAG_MOD__GPIO1_IO10		0x10b0 /* OTG1 PWR */
				MX6UL_PAD_SNVS_TAMPER6__GPIO5_IO06	0x17059 /* OTG1_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 */
			>;
		};

...
...
};

From imx6ul-lynx-som0022-cb0090.dts:

...
...
&reg_usb_otg1_vbus {
	pinctrl-0 = <&pinctrl_usb_otg1_1>;
	gpio = <&gpio1 10 GPIO_ACTIVE_HIGH>;
};

&reg_usb_otg2_vbus {
	pinctrl-0 = <&pinctrl_usb_otg2_1>;
	gpio = <&gpio1 26 GPIO_ACTIVE_HIGH>;
};

&usbotg1 {
	disable-over-current;		// only GPIO support for OVERCURRENT in this board
	status = "okay";
};

&usbotg2 {
	disable-over-current;		// only GPIO support for OVERCURRENT in this board
	status = "okay";
};
...
...

Accessing the peripheral in AXEL ULite SOM[edit | edit source]

Linux messages at boot time[edit | edit source]

When a USB peripheral is inserted, in the following example a memory mass storage device, the kernel recognizes the device (i.e. xlass, vendor id, product id, etc.)

[  199.668004] usb 1-1: new high-speed USB device number 2 using ci_hdrc
[  199.876433] usb 1-1: New USB device found, idVendor=13fe, idProduct=6700, bcdDevice= 1.10
[  199.876545] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  199.876604] usb 1-1: Product: USB DISK 3.0
[  199.876647] usb 1-1: Manufacturer: Wilk
[  199.876690] usb 1-1: SerialNumber: 07012533C2BE5935
[  199.897372] usb-storage 1-1:1.0: USB Mass Storage device detected
[  199.918075] scsi host0: usb-storage 1-1:1.0
[  200.961571] scsi 0:0:0:0: Direct-Access     Wilk     USB DISK 3.0     PMAP PQ: 0 ANSI: 6
[  200.976402] sd 0:0:0:0: [sda] 60628992 512-byte logical blocks: (31.0 GB/28.9 GiB)
[  200.977682] sd 0:0:0:0: [sda] Write Protect is off
[  200.977729] sd 0:0:0:0: [sda] Mode Sense: 45 00 00 00
[  200.989604] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[  201.200618]  sda: sda1 sda2
[  201.214974] sd 0:0:0:0: [sda] Attached SCSI removable disk

Additional information[edit | edit source]

If the root file system configuration does not automatically mount the partition, it is possible to mount the device using the following command:

root@desk-mx6ul-axelulite:~# mkdir -p /mnt/usbApr
root@desk-mx6ul-axelulite:~# mount /dev/sda1 /mnt/usb/
root@desk-mx6ul-axelulite:~# ls -la /mnt/usb/
total 24
drwxr-xr-x 3 root root    4096 Apr 1 14:16 .
drwxr-xr-x 4 root root    4096 Apr 3 18:15 ..
drwx------ 2 root root   16384 Apr 3 14:16 lost+found
-rwxr-xr-x 1 root root 6881192 Apr 3 14:16 uImage

Accessing the peripheral in RIALTO SBC[edit | edit source]

Linux messages at boot time[edit | edit source]

When a USB peripheral is inserted, in the following example a memory mass storage device, the kernel recognizes the device (i.e. xlass, vendor id, product id, etc.)

[ 3198.828827] usb 1-1: new high-speed USB device number 2 using ci_hdrc
[ 3199.031869] usb 1-1: New USB device found, idVendor=125f, idProduct=c08a, bcdDevice= 1.00
[ 3199.031980] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 3199.032042] usb 1-1: Product: ADATA USB Flash Drive
[ 3199.032086] usb 1-1: Manufacturer: ADATA
[ 3199.032131] usb 1-1: SerialNumber: 11B15033223000B1
[ 3199.051776] usb-storage 1-1:1.0: USB Mass Storage device detected
[ 3199.084045] scsi host0: usb-storage 1-1:1.0
[ 3200.091305] scsi 0:0:0:0: Direct-Access     ADATA    USB Flash Drive  0.00 PQ: 0 ANSI: 2
[ 3200.110289] sd 0:0:0:0: [sda] 7892992 512-byte logical blocks: (4.04 GB/3.76 GiB)
[ 3200.110969] sd 0:0:0:0: [sda] Write Protect is off
[ 3200.111006] sd 0:0:0:0: [sda] Mode Sense: 00 00 00 00
[ 3200.111582] sd 0:0:0:0: [sda] Asking for cache data failed
[ 3200.111615] sd 0:0:0:0: [sda] Assuming drive cache: write through
[ 3200.125359]  sda: sda1
[ 3200.139266] sd 0:0:0:0: [sda] Attached SCSI removable disk

Additional information[edit | edit source]

If the root file system configuration does not automatically mount the partition, it is possible to mount the device using the following command:

root@desk-mx6ul-rialto:~# mkdir -p /mnt/usbApr
root@desk-mx6ul-rialto:~# mount /dev/sda1 /mnt/usbApr/
root@desk-mx6ul-rialto:~# ls -la /mnt/usbApr/
total 217048
drwxr-xr-x 3 root root      4096 Jan  1  1970  .
drwxr-xr-x 4 root root      4096 Apr 28 20:56  ..
drwxr-xr-x 2 root root      4096 May 29  2024 'System Volume Information'
root@desk-mx6ul-rialto:~#