we are currently doing another i.MX7 design-in.
During the bring-up of an LTE module connected to the HSIC bus we had troubles getting it to work. First we thought it would be related to the LTE module but now we expect the BSP or the USB controller of the i.MX7 to be the problem.
We have read through i.MX7D USB HSIC Hub (USB3503) enumeration variability and thought it would make sense to try the BSP on the Sabre i.MX7D Reference board with an EVB-USB3503 (USB3503 HSIC to USB 2.0 Mobile Hub Evaluation Board).
- i.MX7D Sabre Board REVC
- EVB-USB3503 (no modification, just powered and connected to the i.M7D HSIC lines via UFL Cables), I would expect that the EVB-USB3503 should enumerate correctly without a dedicated driver for it being initialized.
- Linux imx_4.14.78_1.0.0_ga
- Kernel config used
- Changed Sabre device tree to activate HSIC bus and deactive other USB interfaces in arch/arm/boot/dts/imx7d-sdb.dts
status = "okay";
status = "disabled";
status = "disabled";
- Boards connected via UFL cables on HSIC strobe and data
I added some debug outputs for the register reads and writes to the HSIC CI peripheral.
Please find the kernel log attached.
The main output looks like in the aforementioned thread
[ 1.598921] ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1
[ 1.606185] imx_usb 30b30000.usb: unknown event
[ 1.648585] ci_hdrc ci_hdrc.0: USB 2.0 started, EHCI 1.00
[ 1.654217] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[ 1.661042] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 1.668272] usb usb1: Product: EHCI Host Controller
[ 1.673174] usb usb1: Manufacturer: Linux 4.14.78-05595-g94da7bdc489b-dirty ehci_hcd
[ 1.680941] usb usb1: SerialNumber: ci_hdrc.0
[ 1.685914] hub 1-0:1.0: USB hub found
[ 1.871475] usbcore: registered new interface driver bcm203x
[ 1.877195] usbcore: registered new interface driver btusb
[ 1.882770] usbcore: registered new interface driver ath3k
[ 2.068596] usb 1-1: new high-speed USB device number 2 using ci_hdrc
[ 2.238572] usb 1-1: device no response, device descriptor read/64, error -71
[ 2.519692] usb 1-1: device no response, device descriptor read/64, error -71
[ 2.788567] usb 1-1: new high-speed USB device number 3 using ci_hdrc
[ 2.948568] usb 1-1: device no response, device descriptor read/64, error -71
[ 3.228564] usb 1-1: device no response, device descriptor read/64, error -71
[ 3.348590] usb usb1-port1: attempt power cycle
[ 3.457172] usbcore: registered new interface driver usbhid
[ 3.462805] usbhid: USB HID core driver
[ 3.927276] usb_otg1_vbus: disabling
[ 3.930907] usb_otg2_vbus: disabling
[ 4.068703] usb 1-1: new high-speed USB device number 4 using ci_hdrc
[ 4.518646] usb 1-1: device not accepting address 4, error -71
[ 4.668615] usb 1-1: new high-speed USB device number 5 using ci_hdrc
[ 5.128674] usb 1-1: device not accepting address 5, error -71
[ 5.134586] usb usb1-port1: unable to enumerate USB device
[ 5.153205] imx_usb 30b30000.usb: at imx_controller_suspend
Using a USB protocol analyzer one can see that there are the standard SOF packets every 125us as according to the USB2.0 spec, but there is not much more going on on the bus.
The same behavior can be reproduced on in our custom i.MX7S design using a LTE modem via HSIC.
I checked all device tree setting etc. and I am running out of ideas.
Could you please check and see if I am doing something wrong.
If you need further information please let me know - we do have a Lauterbach Trace32 setup available and can provide you with register settings etc.