i.MX7S/D USB HSIC failes while enumeration

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

i.MX7S/D USB HSIC failes while enumeration

1,712 Views
danielkusternig
Contributor I

Hello,

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).

Current setup:

  1. i.MX7D Sabre Board REVC
  2. 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.
  3. Linux imx_4.14.78_1.0.0_ga
  4. Kernel config used
    arch/arm/configs/imx_7v_defconfig
  5. Changed Sabre device tree to activate HSIC bus and deactive other USB interfaces in arch/arm/boot/dts/imx7d-sdb.dts 

    &usbh {

    status = "okay";
    };

    &usbotg1 {
    status = "disabled";
    };

    &usbotg2 {
    status = "disabled";
    };

  6. Boards connected via UFL cables on HSIC strobe and data
  7. Booting

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.

Best regards
Daniel

Labels (3)
0 Kudos
2 Replies

1,087 Views
dh29
Contributor IV

Hi danielkusternigg 

I am experiencing what looks like the same issue as you describe in your post.

Linux Kernel 4.9.11 with i.MX7D with USB3503 shows intermittent error:

[ 5.933361] hub 3-0:1.0: USB hub found
[ 5.937175] hub 3-0:1.0: 1 port detected
[ 6.453843] usb 3-1: device no response, device descriptor read/64, error -71
[ 6.777018] usb 3-1: device no response, device descriptor read/64, error -71
[ 7.046996] usb 3-1: new high-speed USB device number 3 using ci_hdrc
[ 7.239519] usb 3-1: device no response, device descriptor read/64, error -71

There appear to be a number of posts discussing this issue, but no concrete solutions! Did you make any progress in resolving this issue?

Regards,

dh29 

0 Kudos

1,087 Views
igorpadykov
NXP Employee
NXP Employee

Hi Daniel

one can check with oscilloscope usb hsic timings

sect.4.10.15 USB HSIC timing i.MX7D Datasheet

http://cache.nxp.com/files/32bit/doc/data_sheet/IMX7DCEC.pdf

Also, as hsic signal are very sensitive to noise and signal integrity issues,

recheck board layout using sect.3.6.8High speed signal routing recommendations

i.MX6 System Development User’s Guide (note, Sabre i.MX7D Reference board has not

special hsic layout, as hsic was not enabled (and tested) on that board)

https://www.nxp.com/docs/en/user-guide/IMX6DQ6SDLHDG.pdf

May be useful to check app note Introduction to HSIC

http://ww1.microchip.com/downloads/en/appnotes/00001602a.pdf 

Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos