i.MX53 SODIMM USB

From Voipac Wiki
Revision as of 22:14, 23 October 2021 by Voipac (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Configuring USB ports

Locating configuration file

The initial CPU configuration is part the following device tree source file:

  • arch/arm/boot/dts/imx53.dtsi


Shared module configuration can be found in the following file:

  • arch/arm/boot/dts/imx53-vmx53.dtsi


The specific module configuration customised for i.MX53 SODIMM PC Module is part of these device tree source files:

  • i.MX53 SODIMM PC Module Max: arch/arm/boot/dts/imx53-vmx53-557.dts
  • i.MX53 SODIMM PC Module Pro: arch/arm/boot/dts/imx53-vmx53-668.dts
  • i.MX53 SODIMM PC Module Basic: arch/arm/boot/dts/imx53-vmx53-779.dts


Note: In most cases just a single file edit is needed to apply modifications.

Configuring USB H1 device

Host mode

&usbh1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usbh1>;
	phy_type = "utmi";
	disable-over-current;
	vbus-supply = <&reg_usbh1_vbus>;
	status = "okay";
};

Configuring USB OTG device

Host mode

&usbotg {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usbotg>;
	phy_type = "utmi";
	dr_mode = "host";
	disable-over-current;
	vbus-supply = <&reg_usbotg_vbus>;
	status = "okay";
};

Peripheral mode

&usbotg {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usbotg>;
	phy_type = "utmi";
	dr_mode = "peripheral";
	disable-over-current;
	vbus-supply = <&reg_usbotg_vbus>;
	status = "okay";
};

OTG mode

&usbotg {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usbotg>;
	phy_type = "utmi";
	dr_mode = "otg";
	disable-over-current;
	vbus-supply = <&reg_usbotg_vbus>;
	status = "okay";
};

Example of USB OTG operation

Peripheral Mode

Note: Jumper H401 is opened (USB OTG Interface is set to the peripheral mode)

root@vmx53 ~$ lsusb 
Bus 002 Device 002: ID 0424:2514 (vmx baseboard USB HUB)
Bus 002 Device 001: ID 1d6b:0002 (i.MX53 USBH1 port)

After connecting i.MX53 SODIMM PC - Development Kit into PC port using USB OTG interface, the module acts as a USB Ethernet device:

root@vmx53 ~$ dmesg 
[18124.937371] g_ether gadget: high-speed config #1: CDC Ethernet (ECM)
[18124.937402] g_ether gadget: init ecm
[18124.937413] g_ether gadget: notify connect true
[18124.938348] g_ether gadget: setup complete --> -108, 0/0
[18124.940347] g_ether gadget: activate ecm
[18124.940376] usb0: qlen 10
[18124.940385] g_ether gadget: ecm_open
[18124.940407] usb0: eth_start
[18124.941353] g_ether gadget: setup complete --> -108, 0/0
[18124.941369] g_ether gadget: packet filter 0e
[18124.941382] g_ether gadget: ecm req21.43 v000e i0000 l0
[18124.942364] g_ether gadget: setup complete --> -108, 0/0
[18124.986107] g_ether gadget: notify connect true
[18125.018109] g_ether gadget: notify speed 425984000

Host Mode

Note: Jumper H401 is shortened (USB OTG Interface is forced to the host mode)

root@vmx53 ~$ lsusb 
Bus 002 Device 002: ID 0424:2514 (vmx baseboard USB HUB)
Bus 001 Device 001: ID 1d6b:0002 (i.MX53 USBOTG port)
Bus 002 Device 001: ID 1d6b:0002 (i.MX53 USBH1 port)

After connecting a USB peripheral into USB OTG port, the device will be enumerated:

root@vmx53 ~$ dmesg 
[17987.272001] ci_hdrc ci_hdrc.0: EHCI Host Controller
[17987.272044] ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1
[17987.272089] ci_hdrc ci_hdrc.0: reset hcs_params 0x10011 dbg=0 ind cc=0 pcc=0 ordered ports=1
[17987.272105] ci_hdrc ci_hdrc.0: reset hcc_params 0006 thresh 0 uframes 256/512/1024 park
[17987.272199] ci_hdrc ci_hdrc.0: park 0
[17987.272223] ci_hdrc ci_hdrc.0: reset command 0080002 (park)=0 ithresh=8 period=1024 Reset HALT
[17987.272249] ci_hdrc ci_hdrc.0: init command 0010005 (park)=0 ithresh=1 period=512 RUN
[17987.291471] ci_hdrc ci_hdrc.0: USB 2.0 started, EHCI 1.00
[17987.291694] usb usb1: default language 0x0409
[17987.291769] usb usb1: udev 1, busnum 1, minor = 0
[17987.291785] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[17987.291797] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[17987.291808] usb usb1: Product: EHCI Host Controller
[17987.291818] usb usb1: Manufacturer: Linux 3.12.13-dev ehci_hcd
[17987.291828] usb usb1: SerialNumber: ci_hdrc.0
[17987.292845] usb usb1: usb_probe_device
[17987.292871] usb usb1: configuration #1 chosen from 1 choice
[17987.292955] usb usb1: adding 1-0:1.0 (config #1, interface 0)
[17987.302909] hub 1-0:1.0: usb_probe_interface
[17987.302937] hub 1-0:1.0: usb_probe_interface - got id
[17987.302961] hub 1-0:1.0: USB hub found
[17987.303043] hub 1-0:1.0: 1 port detected
[17987.303056] hub 1-0:1.0: standalone hub
[17987.303068] hub 1-0:1.0: individual port power switching
[17987.303078] hub 1-0:1.0: individual port over-current protection
[17987.303088] hub 1-0:1.0: Single TT
[17987.303099] hub 1-0:1.0: TT requires at most 8 FS bit times (666 ns)
[17987.303110] hub 1-0:1.0: power on to power good time: 20ms
[17987.303162] hub 1-0:1.0: local power source is good
[17987.303277] hub 1-0:1.0: enabling power on all ports
[17987.401492] ci_hdrc ci_hdrc.0: GetStatus port:1 status 001803 0  ACK POWER sig=j CSC CONNECT
[17987.401563] hub 1-0:1.0: port 1: status 0101 change 0001
[17987.501489] hub 1-0:1.0: state 7 ports 1 chg 0002 evt 0000
[17987.501572] hub 1-0:1.0: port 1, status 0101, change 0000, 12 Mb/s
[17987.561468] ci_hdrc ci_hdrc.0: GetStatus port:1 status c00100a 6  ACK POWER sig=se0 PEC CSC
[17987.561590] hub 1-0:1.0: state 7 ports 1 chg 0000 evt 0002
[17987.561615] ci_hdrc ci_hdrc.0: GetStatus port:1 status c00100a 6  ACK POWER sig=se0 PEC CSC
[17987.561674] hub 1-0:1.0: port 1, status 0100, change 0003, 12 Mb/s
[17987.721456] hub 1-0:1.0: debounce: port 1: total 100ms stable 100ms status 0x100
[17987.721505] hub 1-0:1.0: hub_suspend
[17987.721553] usb usb1: bus auto-suspend, wakeup 1
[17987.721565] ci_hdrc ci_hdrc.0: suspend root hub
[17988.351026] usb usb1: usb wakeup-resume
[17988.351049] usb usb1: usb auto-resume
[17988.351062] ci_hdrc ci_hdrc.0: resume root hub
[17988.351084] hub 1-0:1.0: hub_resume
[17988.351118] ci_hdrc ci_hdrc.0: GetStatus port:1 status 001803 0  ACK POWER sig=j CSC CONNECT
[17988.351157] hub 1-0:1.0: port 1: status 0101 change 0001
[17988.451485] hub 1-0:1.0: state 7 ports 1 chg 0002 evt 0000
[17988.451549] hub 1-0:1.0: port 1, status 0101, change 0000, 12 Mb/s
[17988.511473] ci_hdrc ci_hdrc.0: GetStatus port:1 status c00100a 6  ACK POWER sig=se0 PEC CSC
[17988.511585] hub 1-0:1.0: state 7 ports 1 chg 0000 evt 0002
[17988.511610] ci_hdrc ci_hdrc.0: GetStatus port:1 status c00100a 6  ACK POWER sig=se0 PEC CSC
[17988.511668] hub 1-0:1.0: port 1, status 0100, change 0003, 12 Mb/s
[17988.671457] hub 1-0:1.0: debounce: port 1: total 100ms stable 100ms status 0x100
[17988.671497] hub 1-0:1.0: hub_suspend
[17988.671537] usb usb1: bus auto-suspend, wakeup 1
[17988.671549] ci_hdrc ci_hdrc.0: suspend root hub
[17989.384026] usb usb1: usb wakeup-resume
[17989.384046] usb usb1: usb auto-resume
[17989.384060] ci_hdrc ci_hdrc.0: resume root hub
[17989.384079] hub 1-0:1.0: hub_resume
[17989.384110] ci_hdrc ci_hdrc.0: GetStatus port:1 status 001803 0  ACK POWER sig=j CSC CONNECT
[17989.384152] hub 1-0:1.0: port 1: status 0101 change 0001
[17989.491466] hub 1-0:1.0: state 7 ports 1 chg 0002 evt 0000
[17989.491520] hub 1-0:1.0: port 1, status 0101, change 0000, 12 Mb/s
[17989.551443] ci_hdrc ci_hdrc.0: port 1 reset complete, port enabled
[17989.551469] ci_hdrc ci_hdrc.0: GetStatus port:1 status 001805 0  ACK POWER sig=j PE CONNECT
[17989.611479] usb 1-1: new full-speed USB device number 4 using ci_hdrc
[17989.671445] ci_hdrc ci_hdrc.0: port 1 reset complete, port enabled
[17989.671469] ci_hdrc ci_hdrc.0: GetStatus port:1 status 001805 0  ACK POWER sig=j PE CONNECT
[17989.766271] usb 1-1: default language 0x0409
[17989.769271] usb 1-1: device v10c4 pea60 is not supported
[17989.769285] usb 1-1: udev 4, busnum 1, minor = 3
[17989.769297] usb 1-1: New USB device found, idVendor=10c4, idProduct=ea60
[17989.769309] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[17989.769319] usb 1-1: Product: CP2102 USB to UART Bridge Controller
[17989.769330] usb 1-1: Manufacturer: Silicon Labs
[17989.769339] usb 1-1: SerialNumber: 0001
[17989.770239] usb 1-1: usb_probe_device
[17989.770297] usb 1-1: configuration #1 chosen from 1 choice
[17989.771322] usb 1-1: adding 1-1:1.0 (config #1, interface 0)
[17989.782199] hub 1-0:1.0: state 7 ports 1 chg 0000 evt 0002