Hi
We have a problem connecting a USB HUB to i.MX28 - it is not detected. Detailed description follows:
We are working with custom board using i.MX286 or i.MX287 (both tested).
Our hardware resembles i.MX28EVK with the few exceptions:
- we have a USB HUB chip (SMSC) connected immediately to USB1 - it is configured according to its spec. (same as on some evaluation kit we have)
- we do not connect usb overcurrent signal to i.MX28 - it is handled automatically
- we do not use power regulators for USB - in i.MX28 EVK GPIO has to be toggled to turn on USB power, in our case it is powered after reset.
The device is wall-powered (I mean, it is not using battery or power from USB)
So the only important signals that we are using are USB D+ and D-.
As for hardware - we have a few prototypes and we have tested the pcb design - there are no errors.
I tried various kernel versions:
- 2.6.35 (from Freescale web page)
- 3.X with devicetree (I tried 3.7, 3.10, 3.11, and 3.12-rc3)
Devicetree or platform_data - reflects our configuration (no OCS, no vbus_reg).
The following log is from 3.11:
[ 0.444107] usbcore: registered new interface driver usbfs
[ 0.449812] usbcore: registered new interface driver hub
[ 0.455667] usbcore: registered new device driver usb
[ 6.054820] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 6.200821] usbcore: registered new interface driver usb-storage
[ 6.460739] ci_hdrc ci_hdrc.0: doesn't support gadget
[ 6.465869] ci_hdrc ci_hdrc.0: EHCI Host Controller
[ 6.487847] ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1
[ 6.519975] ci_hdrc ci_hdrc.0: USB 2.0 started, EHCI 1.00, overcurrent ignored
[ 6.527703] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[ 6.536378] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 6.544602] usb usb1: Product: EHCI Host Controller
[ 6.549537] usb usb1: Manufacturer: Linux 3.10.0 ehci_hcd
[ 6.556252] usb usb1: SerialNumber: ci_hdrc.0
[ 6.572324] hub 1-0:1.0: USB hub found
[ 6.576166] hub 1-0:1.0: 1 port detected
[ 6.620675] ci_hdrc ci_hdrc.1: doesn't support gadget
[ 6.625806] ci_hdrc ci_hdrc.1: EHCI Host Controller
[ 6.641677] ci_hdrc ci_hdrc.1: new USB bus registered, assigned bus number 2
[ 6.660018] ci_hdrc ci_hdrc.1: USB 2.0 started, EHCI 1.00, overcurrent ignored
[ 6.667799] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
[ 6.676584] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 6.684941] usb usb2: Product: EHCI Host Controller
[ 6.690793] usb usb2: Manufacturer: Linux 3.10.0 ehci_hcd
[ 6.696249] usb usb2: SerialNumber: ci_hdrc.1
[ 6.713557] hub 2-0:1.0: USB hub found
[ 6.717395] hub 2-0:1.0: 1 port detected
[ 7.069970] usb 2-1: new high-speed USB device number 2 using ci_hdrc
[ 7.230926] usb 2-1: New USB device found, idVendor=0424, idProduct=2517
[ 7.237730] usb 2-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 7.320277] hub 2-1:1.0: USB hub found
[ 7.339322] hub 2-1:1.0: 7 ports detected
The hub has been detected.
# lsusb
Bus 002 Device 002: ID 0424:2517 Standard Microsystems Corp. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
But if I connect something to the HUB:
[36.471069] ci_hdrc ci_hdrc.1: port 1 reset error -110
[37.371075] ci_hdrc ci_hdrc.1: port 1 reset error -110
[38.211111] ci_hdrc ci_hdrc.1: port 1 reset error -110
[39.051062] ci_hdrc ci_hdrc.1: port 1 reset error -110
[39.891067] ci_hdrc ci_hdrc.1: port 1 reset error -110
[40.520051] hub 2-0:1.0: Cannot enable port 1. Maybe the USB cable is bad?
[40.581111] ci_hdrc ci_hdrc.1: port 1 reset error -110
[41.481078] ci_hdrc ci_hdrc.1: port 1 reset error -110
[42.321115] ci_hdrc ci_hdrc.1: port 1 reset error -110
[43.161069] ci_hdrc ci_hdrc.1: port 1 reset error -110
[44.001067] ci_hdrc ci_hdrc.1: port 1 reset error -110
[44.630083] hub 2-0:1.0: Cannot enable port 1. Maybe the USB cable is bad?
[44.691110] ci_hdrc ci_hdrc.1: port 1 reset error -110
[45.591115] ci_hdrc ci_hdrc.1: port 1 reset error -110
[46.431069] ci_hdrc ci_hdrc.1: port 1 reset error -110
[47.271113] ci_hdrc ci_hdrc.1: port 1 reset error -110
[48.111058] ci_hdrc ci_hdrc.1: port 1 reset error -110
[48.740084] hub 2-0:1.0: Cannot enable port 1. Maybe the USB cable is bad?
[48.801115] ci_hdrc ci_hdrc.1: port 1 reset error -110
[49.701071] ci_hdrc ci_hdrc.1: port 1 reset error -110
[50.541121] ci_hdrc ci_hdrc.1: port 1 reset error -110
[51.381078] ci_hdrc ci_hdrc.1: port 1 reset error -110
[52.221115] ci_hdrc ci_hdrc.1: port 1 reset error -110
[52.850042] hub 2-0:1.0: Cannot enable port 1. Maybe the USB cable is bad?
[52.857100] hub 2-0:1.0: unable to enumerate USB device on port 1
Connection to HUB is lost.
Sometimes the hub is not even recognized.
Same results for 2.6.35:
[ 0.370000] usb DR wakeup device is registered
[ 0.370000] IMX usb wakeup probe
[ 0.440000] Freescale USB OTG Driver loaded, $Revision: 1.55 $
[ 0.460000] usbcore: registered new interface driver usbfs
[ 0.460000] usbcore: registered new interface driver hub
[ 0.470000] usbcore: registered new device driver usb
[ 0.890000] IMX usb wakeup probe
[ 0.890000] usb h1 wakeup device is registered
[ 13.730000] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 13.740000] fsl-ehci fsl-ehci: new USB bus registered, assigned bus number 1
[ 13.800000] fsl-ehci fsl-ehci: USB 2.0 started, EHCI 1.00
[ 13.800000] hub 1-0:1.0: USB hub found
[ 13.810000] hub 1-0:1.0: 1 port detected
[ 13.830000] fsl-ehci fsl-ehci.0: new USB bus registered, assigned bus number 2
[ 13.890000] fsl-ehci fsl-ehci.0: USB 2.0 started, EHCI 1.00
[ 13.890000] hub 2-0:1.0: USB hub found
[ 13.900000] hub 2-0:1.0: 1 port detected
[ 13.930000] Initializing USB Mass Storage driver...
[ 13.940000] usbcore: registered new interface driver usb-storage
[ 13.940000] USB Mass Storage support registered.
[ 13.950000] ARC USBOTG Device Controller driver (1 August 2005)
[ 14.230000] usb 2-1: new full speed USB device using fsl-ehci and address 2
[ 14.610000] usb 2-1: device descriptor read/64, error -71
[ 14.940000] usb 2-1: device descriptor read/64, error -71
[ 15.140000] usbcore: registered new interface driver hiddev
[ 15.180000] usb 2-1: new full speed USB device using fsl-ehci and address 3
[ 15.240000] usbcore: registered new interface driver usbhid
[ 15.250000] usbhid: USB HID core driver
[ 15.410000] usb 2-1: device descriptor read/64, error -71
[ 15.730000] usb 2-1: device descriptor read/64, error -71
[ 15.960000] usb 2-1: new full speed USB device using fsl-ehci and address 4
[ 16.450000] usb 2-1: device not accepting address 4, error -71
[ 16.570000] usb 2-1: new full speed USB device using fsl-ehci and address 5
[ 17.050000] usb 2-1: device not accepting address 5, error -71
[ 17.050000] hub 2-0:1.0: unable to enumerate USB device on port 1
Not even HUB is detected here.
The same happens if we connect a SMSC hub to USB0 acting as a host. Same messagess no matter the hub is active or not.
Is there somebody out there, having some experience with USB Host at i.MX28?
Regards
--
Marcin Bis
mx23-olinuxino board has a smsc usb hub and it works fine.
It would help if you post your device tree.
Other suggestion is to post this to the linux-usb@vger.kernel.org list.
Regards,
Fabio Estevam